kubeedge/cloud/pkg/edgecontroller/edgecontroller.go
WillardHu abc4d847c6 Enhance the error handling of beehive modules
Signed-off-by: WillardHu <wei.hu@daocloud.io>
2025-10-24 19:08:17 +08:00

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)
}
}