Skip to content

Commit

Permalink
refactoring to NodeSelector Interface
Browse files Browse the repository at this point in the history
  • Loading branch information
Chilaka Ramakrishna committed Jul 8, 2022
1 parent cf88bde commit f71eb87
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 4 deletions.
9 changes: 9 additions & 0 deletions pkg/routing/selector/any.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package selector

import (
"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/protocol/livekit"
)

Expand All @@ -17,3 +18,11 @@ func (s *AnySelector) SelectNode(nodes []*livekit.Node) (*livekit.Node, error) {

return SelectSortedNode(nodes, s.SortBy)
}

func (s *AnySelector) filterNodes(nodes []*livekit.Node) ([]*livekit.Node, error) {
return nodes, nil
}

func (s *AnySelector) SetConfig(conf *config.Config) error {
return nil
}
5 changes: 5 additions & 0 deletions pkg/routing/selector/cpuload.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package selector

import (
"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/protocol/livekit"
)

Expand Down Expand Up @@ -38,3 +39,7 @@ func (s *CPULoadSelector) SelectNode(nodes []*livekit.Node) (*livekit.Node, erro

return SelectSortedNode(nodes, s.SortBy)
}

func (s *CPULoadSelector) SetConfig(conf *config.Config) error {
return nil
}
11 changes: 8 additions & 3 deletions pkg/routing/selector/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ var ErrUnsupportedSelector = errors.New("unsupported node selector")
// NodeSelector selects an appropriate node to run the current session
type NodeSelector interface {
SelectNode(nodes []*livekit.Node) (*livekit.Node, error)
filterNodes(nodes []*livekit.Node) ([]*livekit.Node, error)
SetConfig(conf *config.Config) error
}

func CreateNodeSelector(conf *config.Config) (NodeSelector, error) {
Expand All @@ -27,19 +29,22 @@ func CreateNodeSelector(conf *config.Config) (NodeSelector, error) {
case "cpuload":
return &CPULoadSelector{
CPULoadLimit: conf.NodeSelector.CPULoadLimit,
SortBy: conf.NodeSelector.SortBy,
SortBy: conf.NodeSelector.SortBy,
}, nil
case "sysload":
return &SystemLoadSelector{
SysloadLimit: conf.NodeSelector.SysloadLimit,
SortBy: conf.NodeSelector.SortBy,
SortBy: conf.NodeSelector.SortBy,
}, nil
case "regionaware":
s, err := NewRegionAwareSelector(conf.Region, conf.NodeSelector.Regions, conf.NodeSelector.SortBy)
if err != nil {
return nil, err
}
s.SysloadLimit = conf.NodeSelector.SysloadLimit
err = s.SetConfig(conf)
if err != nil {
return nil, err
}
return s, nil
case "random":
logger.Warnw("random node selector is deprecated, please switch to \"any\" or another selector", nil)
Expand Down
2 changes: 1 addition & 1 deletion pkg/routing/selector/regionaware.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func NewRegionAwareSelector(currentRegion string, regions []config.RegionConfig,
// build internal map of distances
s := &RegionAwareSelector{
CurrentRegion: currentRegion,
regionDistances: make(map[string]float64),
regionDistances: make(map[string]float64, len(regions)),
regions: regions,
SortBy: sortBy,
}
Expand Down
6 changes: 6 additions & 0 deletions pkg/routing/selector/sysload.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package selector

import (
"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/protocol/livekit"
)

Expand Down Expand Up @@ -37,3 +38,8 @@ func (s *SystemLoadSelector) SelectNode(nodes []*livekit.Node) (*livekit.Node, e

return SelectSortedNode(nodes, s.SortBy)
}

func (s *SystemLoadSelector) SetConfig(conf *config.Config) error {
s.SysloadLimit = conf.NodeSelector.SysloadLimit
return nil
}

0 comments on commit f71eb87

Please sign in to comment.