github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/pkg/devicecontroller/devicecontroller.go (about) 1 package devicecontroller 2 3 import ( 4 "os" 5 "time" 6 7 "k8s.io/klog" 8 9 "github.com/kubeedge/beehive/pkg/core" 10 "github.com/kubeedge/kubeedge/cloud/pkg/devicecontroller/config" 11 "github.com/kubeedge/kubeedge/cloud/pkg/devicecontroller/constants" 12 "github.com/kubeedge/kubeedge/cloud/pkg/devicecontroller/controller" 13 "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/cloudcore/v1alpha1" 14 ) 15 16 // DeviceController use beehive context message layer 17 type DeviceController struct { 18 enable bool 19 } 20 21 func newDeviceController(enable bool) *DeviceController { 22 return &DeviceController{ 23 enable: enable, 24 } 25 } 26 27 func Register(dc *v1alpha1.DeviceController, kubeAPIConfig *v1alpha1.KubeAPIConfig) { 28 config.InitConfigure(dc, kubeAPIConfig) 29 core.Register(newDeviceController(dc.Enable)) 30 } 31 32 // Name of controller 33 func (dc *DeviceController) Name() string { 34 return constants.DeviceControllerModuleName 35 } 36 37 // Group of controller 38 func (dc *DeviceController) Group() string { 39 return constants.DeviceControllerModuleGroup 40 } 41 42 // Enable indicates whether enable this module 43 func (dc *DeviceController) Enable() bool { 44 return dc.enable 45 } 46 47 // Start controller 48 func (dc *DeviceController) Start() { 49 downstream, err := controller.NewDownstreamController() 50 if err != nil { 51 klog.Errorf("New downstream controller failed with error: %s", err) 52 os.Exit(1) 53 } 54 upstream, err := controller.NewUpstreamController(downstream) 55 if err != nil { 56 klog.Errorf("new upstream controller failed with error: %s", err) 57 os.Exit(1) 58 } 59 60 downstream.Start() 61 // wait for downstream controller to start and load deviceModels and devices 62 // TODO think about sync 63 time.Sleep(1 * time.Second) 64 upstream.Start() 65 }