summaryrefslogtreecommitdiff
path: root/edgemesh/pkg/plugin/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'edgemesh/pkg/plugin/plugin.go')
-rw-r--r--edgemesh/pkg/plugin/plugin.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/edgemesh/pkg/plugin/plugin.go b/edgemesh/pkg/plugin/plugin.go
new file mode 100644
index 000000000..f6e01240d
--- /dev/null
+++ b/edgemesh/pkg/plugin/plugin.go
@@ -0,0 +1,48 @@
+package plugin
+
+import (
+ "github.com/go-chassis/go-archaius"
+ "github.com/go-chassis/go-chassis/control"
+ "github.com/go-chassis/go-chassis/core/config"
+ "github.com/go-chassis/go-chassis/core/config/model"
+ "github.com/go-chassis/go-chassis/core/loadbalancer"
+ "github.com/go-chassis/go-chassis/core/registry"
+
+ meshConfig "github.com/kubeedge/kubeedge/edgemesh/pkg/config"
+ _ "github.com/kubeedge/kubeedge/edgemesh/pkg/plugin/panel"
+ meshRegistry "github.com/kubeedge/kubeedge/edgemesh/pkg/plugin/registry"
+)
+
+// Install installs go-chassis plugins
+func Install() {
+ // service discovery
+ opt := registry.Options{}
+ registry.DefaultServiceDiscoveryService = meshRegistry.NewEdgeServiceDiscovery(opt)
+ // load balance
+ loadbalancer.InstallStrategy(meshConfig.Config.LBStrategy, func() loadbalancer.Strategy {
+ switch meshConfig.Config.LBStrategy {
+ case loadbalancer.StrategyRoundRobin:
+ return &loadbalancer.RoundRobinStrategy{}
+ case loadbalancer.StrategyRandom:
+ return &loadbalancer.RandomStrategy{}
+ case loadbalancer.StrategySessionStickiness:
+ return &loadbalancer.SessionStickinessStrategy{}
+ default:
+ return &loadbalancer.RoundRobinStrategy{}
+ }
+ })
+ // control panel
+ config.GlobalDefinition = &model.GlobalCfg{
+ Panel: model.ControlPanel{
+ Infra: "edge",
+ },
+ Ssl: make(map[string]string),
+ }
+ opts := control.Options{
+ Infra: config.GlobalDefinition.Panel.Infra,
+ Address: config.GlobalDefinition.Panel.Settings["address"],
+ }
+ control.Init(opts)
+ // init archaius
+ archaius.Init()
+}