mirror of
https://github.com/vee1e/kubeedge.git
synced 2026-09-01 18:27:38 +00:00
72 lines
2 KiB
Go
72 lines
2 KiB
Go
package edgecontroller
|
|
|
|
import (
|
|
"k8s.io/klog/v2"
|
|
|
|
"github.com/kubeedge/api/apis/componentconfig/cloudcore/v1alpha1"
|
|
"github.com/kubeedge/beehive/pkg/core"
|
|
"github.com/kubeedge/kubeedge/cloud/pkg/common/informers"
|
|
"github.com/kubeedge/kubeedge/cloud/pkg/common/modules"
|
|
"github.com/kubeedge/kubeedge/cloud/pkg/edgecontroller/controller"
|
|
)
|
|
|
|
// EdgeController use beehive context message layer
|
|
type EdgeController struct {
|
|
config v1alpha1.EdgeController
|
|
upstream *controller.UpstreamController
|
|
downstream *controller.DownstreamController
|
|
}
|
|
|
|
var _ core.Module = (*EdgeController)(nil)
|
|
|
|
func newEdgeController(config *v1alpha1.EdgeController) *EdgeController {
|
|
ec := &EdgeController{config: *config}
|
|
if !ec.Enable() {
|
|
return ec
|
|
}
|
|
var err error
|
|
ec.upstream, err = controller.NewUpstreamController(config, informers.GetInformersManager().GetKubeInformerFactory())
|
|
if err != nil {
|
|
klog.Exitf("new upstream controller failed with error: %s", err)
|
|
}
|
|
|
|
ec.downstream, err = controller.NewDownstreamController(config, informers.GetInformersManager().GetKubeInformerFactory(), informers.GetInformersManager(), informers.GetInformersManager().GetKubeEdgeInformerFactory())
|
|
if err != nil {
|
|
klog.Exitf("new downstream controller failed with error: %s", err)
|
|
}
|
|
return ec
|
|
}
|
|
|
|
func Register(ec *v1alpha1.EdgeController) {
|
|
core.Register(newEdgeController(ec))
|
|
}
|
|
|
|
// Name of controller
|
|
func (ec *EdgeController) Name() string {
|
|
return modules.EdgeControllerModuleName
|
|
}
|
|
|
|
// Group of controller
|
|
func (ec *EdgeController) Group() string {
|
|
return modules.EdgeControllerGroupName
|
|
}
|
|
|
|
// Enable indicates whether enable this module
|
|
func (ec *EdgeController) Enable() bool {
|
|
return ec.config.Enable
|
|
}
|
|
|
|
func (ec *EdgeController) RestartPolicy() *core.ModuleRestartPolicy {
|
|
return nil
|
|
}
|
|
|
|
// Start controller
|
|
func (ec *EdgeController) Start() {
|
|
if err := ec.upstream.Start(); err != nil {
|
|
klog.Exitf("start upstream failed with error: %s", err)
|
|
}
|
|
|
|
if err := ec.downstream.Start(); err != nil {
|
|
klog.Exitf("start downstream failed with error: %s", err)
|
|
}
|
|
}
|