diff options
| author | wbc6080 <wangbincheng4@huawei.com> | 2023-12-02 16:32:21 +0800 |
|---|---|---|
| committer | wbc6080 <wangbincheng4@huawei.com> | 2024-01-18 11:27:34 +0800 |
| commit | d01a767ea2510ec33320ba95f5ed797a81eae2c2 (patch) | |
| tree | b64604bca9b352a7dbc0e440ffe48aa5d2ff396f /edge | |
| parent | Merge pull request #5330 from ZhengXinwei-F/task-manager (diff) | |
| download | kubeedge-d01a767ea2510ec33320ba95f5ed797a81eae2c2.tar.gz | |
update dmi server to get namespace
Signed-off-by: wbc6080 <wangbincheng4@huawei.com>
Diffstat (limited to 'edge')
| -rw-r--r-- | edge/pkg/devicetwin/dmiclient/client.go | 14 | ||||
| -rw-r--r-- | edge/pkg/devicetwin/dmiserver/server.go | 25 | ||||
| -rw-r--r-- | edge/pkg/devicetwin/dtcommon/util.go | 2 | ||||
| -rw-r--r-- | edge/pkg/devicetwin/dtmanager/dmiworker.go | 21 |
4 files changed, 39 insertions, 23 deletions
diff --git a/edge/pkg/devicetwin/dmiclient/client.go b/edge/pkg/devicetwin/dmiclient/client.go index af6e78a10..7f7ad0b02 100644 --- a/edge/pkg/devicetwin/dmiclient/client.go +++ b/edge/pkg/devicetwin/dmiclient/client.go @@ -93,9 +93,10 @@ func createDeviceRequest(device *v1beta1.Device) (*dmiapi.RegisterDeviceRequest, }, nil } -func removeDeviceRequest(deviceName string) (*dmiapi.RemoveDeviceRequest, error) { +func removeDeviceRequest(device *v1beta1.Device) (*dmiapi.RemoveDeviceRequest, error) { return &dmiapi.RemoveDeviceRequest{ - DeviceName: deviceName, + DeviceName: device.Name, + DeviceNamespace: device.Namespace, }, nil } @@ -132,9 +133,10 @@ func updateDeviceModelRequest(model *v1beta1.DeviceModel) (*dmiapi.UpdateDeviceM }, nil } -func removeDeviceModelRequest(deviceModelName string) (*dmiapi.RemoveDeviceModelRequest, error) { +func removeDeviceModelRequest(deviceModel *v1beta1.DeviceModel) (*dmiapi.RemoveDeviceModelRequest, error) { return &dmiapi.RemoveDeviceModelRequest{ - ModelName: deviceModelName, + ModelName: deviceModel.Name, + ModelNamespace: deviceModel.Namespace, }, nil } @@ -210,7 +212,7 @@ func (dcs *DMIClients) RemoveDevice(device *v1beta1.Device) error { defer dc.close() - rdr, err := removeDeviceRequest(device.Name) + rdr, err := removeDeviceRequest(device) if err != nil { return fmt.Errorf("fail to generate RemoveDeviceRequest for device %s with err: %v", device.Name, err) } @@ -271,7 +273,7 @@ func (dcs *DMIClients) RemoveDeviceModel(model *v1beta1.DeviceModel) error { defer dc.close() - rdmr, err := removeDeviceModelRequest(model.Name) + rdmr, err := removeDeviceModelRequest(model) if err != nil { return fmt.Errorf("fail to create RemoveDeviceModelRequest for device model %s with err: %v", model.Name, err) } diff --git a/edge/pkg/devicetwin/dmiserver/server.go b/edge/pkg/devicetwin/dmiserver/server.go index eed5bee91..ec9b78937 100644 --- a/edge/pkg/devicetwin/dmiserver/server.go +++ b/edge/pkg/devicetwin/dmiserver/server.go @@ -43,6 +43,7 @@ import ( "github.com/kubeedge/kubeedge/edge/pkg/metamanager/dao" "github.com/kubeedge/kubeedge/pkg/apis/devices/v1beta1" pb "github.com/kubeedge/kubeedge/pkg/apis/dmi/v1beta1" + "github.com/kubeedge/kubeedge/pkg/util" ) const ( @@ -99,9 +100,10 @@ func (s *server) MapperRegister(ctx context.Context, in *pb.MapperRegisterReques klog.Errorf("fail to convert device %s with err: %v", device.Name, err) continue } + modelID := util.GetResourceID(device.Namespace, device.Spec.DeviceModelRef.Name) s.dmiCache.DeviceModelMu.Lock() - model, ok := s.dmiCache.DeviceModelList[device.Spec.DeviceModelRef.Name] + model, ok := s.dmiCache.DeviceModelList[modelID] s.dmiCache.DeviceModelMu.Unlock() if !ok { klog.Errorf("fail to get device model %s in deviceModelList", device.Spec.DeviceModelRef.Name) @@ -131,20 +133,25 @@ func (s *server) ReportDeviceStatus(ctx context.Context, in *pb.ReportDeviceStat return nil, fmt.Errorf("fail to report device status because of too many request: %s", in.DeviceName) } - for _, twin := range in.ReportedDevice.Twins { - msg, err := CreateMessageTwinUpdate(twin) - if err != nil { - klog.Errorf("fail to create message data for property %s of device %s with err: %v", twin.PropertyName, in.DeviceName, err) - return nil, err + if in != nil && in.ReportedDevice != nil && in.ReportedDevice.Twins != nil { + for _, twin := range in.ReportedDevice.Twins { + msg, err := CreateMessageTwinUpdate(twin) + if err != nil { + klog.Errorf("fail to create message data for property %s of device %s with err: %v", twin.PropertyName, in.DeviceName, err) + return nil, err + } + handleDeviceTwin(in, msg) } - handleDeviceTwin(in.DeviceName, msg) + } else { + return &pb.ReportDeviceStatusResponse{}, fmt.Errorf("ReportDeviceStatusRequest does not have twin data") } return &pb.ReportDeviceStatusResponse{}, nil } -func handleDeviceTwin(deviceName string, payload []byte) { - topic := dtcommon.DeviceETPrefix + deviceName + dtcommon.TwinETUpdateSuffix +func handleDeviceTwin(in *pb.ReportDeviceStatusRequest, payload []byte) { + deviceID := util.GetResourceID(in.DeviceNamespace, in.DeviceName) + topic := dtcommon.DeviceETPrefix + deviceID + dtcommon.TwinETUpdateSuffix target := modules.TwinGroup resource := base64.URLEncoding.EncodeToString([]byte(topic)) // routing key will be $hw.<project_id>.events.user.bus.response.cluster.<cluster_id>.node.<node_id>.<base64_topic> diff --git a/edge/pkg/devicetwin/dtcommon/util.go b/edge/pkg/devicetwin/dtcommon/util.go index 5445360c9..5ef05c80a 100644 --- a/edge/pkg/devicetwin/dtcommon/util.go +++ b/edge/pkg/devicetwin/dtcommon/util.go @@ -120,6 +120,7 @@ func ConvertDevice(device *v1beta1.Device) (*pb.Device, error) { edgeDevice.Spec.Properties = edgePropertyVisitors edgeDevice.Name = device.Name edgeDevice.Spec.DeviceModelReference = device.Spec.DeviceModelRef.Name + edgeDevice.Namespace = device.Namespace return &edgeDevice, nil } @@ -138,6 +139,7 @@ func ConvertDeviceModel(model *v1beta1.DeviceModel) (*pb.DeviceModel, error) { return nil, err } edgeDeviceModel.Name = model.Name + edgeDeviceModel.Namespace = model.Namespace return &edgeDeviceModel, nil } diff --git a/edge/pkg/devicetwin/dtmanager/dmiworker.go b/edge/pkg/devicetwin/dtmanager/dmiworker.go index 87397d94f..2f8d5f770 100644 --- a/edge/pkg/devicetwin/dtmanager/dmiworker.go +++ b/edge/pkg/devicetwin/dtmanager/dmiworker.go @@ -35,6 +35,7 @@ import ( "github.com/kubeedge/kubeedge/edge/pkg/metamanager/dao" "github.com/kubeedge/kubeedge/pkg/apis/devices/v1beta1" pb "github.com/kubeedge/kubeedge/pkg/apis/dmi/v1beta1" + "github.com/kubeedge/kubeedge/pkg/util" ) // TwinWorker deal twin event @@ -120,10 +121,11 @@ func (dw *DMIWorker) dealMetaDeviceOperation(context *dtcontext.DTContext, resou if err != nil { return fmt.Errorf("invalid message content with err: %+v", err) } + deviceID := util.GetResourceID(device.Namespace, device.Name) switch message.GetOperation() { case model.InsertOperation: dw.dmiCache.DeviceMu.Lock() - dw.dmiCache.DeviceList[device.Name] = &device + dw.dmiCache.DeviceList[deviceID] = &device dw.dmiCache.DeviceMu.Unlock() err = dmiclient.DMIClientsImp.RegisterDevice(&device) if err != nil { @@ -137,11 +139,11 @@ func (dw *DMIWorker) dealMetaDeviceOperation(context *dtcontext.DTContext, resou return err } dw.dmiCache.DeviceMu.Lock() - delete(dw.dmiCache.DeviceList, device.Name) + delete(dw.dmiCache.DeviceList, deviceID) dw.dmiCache.DeviceMu.Unlock() case model.UpdateOperation: dw.dmiCache.DeviceMu.Lock() - dw.dmiCache.DeviceList[device.Name] = &device + dw.dmiCache.DeviceList[deviceID] = &device dw.dmiCache.DeviceMu.Unlock() err = dmiclient.DMIClientsImp.UpdateDevice(&device) if err != nil { @@ -156,10 +158,11 @@ func (dw *DMIWorker) dealMetaDeviceOperation(context *dtcontext.DTContext, resou if err != nil { return fmt.Errorf("invalid message content with err: %+v", err) } + dmID := util.GetResourceID(dm.Namespace, dm.Name) switch message.GetOperation() { case model.InsertOperation: dw.dmiCache.DeviceModelMu.Lock() - dw.dmiCache.DeviceModelList[dm.Name] = &dm + dw.dmiCache.DeviceModelList[dmID] = &dm dw.dmiCache.DeviceModelMu.Unlock() err = dmiclient.DMIClientsImp.CreateDeviceModel(&dm) if err != nil { @@ -173,11 +176,11 @@ func (dw *DMIWorker) dealMetaDeviceOperation(context *dtcontext.DTContext, resou return err } dw.dmiCache.DeviceModelMu.Lock() - delete(dw.dmiCache.DeviceModelList, dm.Name) + delete(dw.dmiCache.DeviceModelList, dmID) dw.dmiCache.DeviceModelMu.Unlock() case model.UpdateOperation: dw.dmiCache.DeviceModelMu.Lock() - dw.dmiCache.DeviceModelList[dm.Name] = &dm + dw.dmiCache.DeviceModelList[dmID] = &dm dw.dmiCache.DeviceModelMu.Unlock() err = dmiclient.DMIClientsImp.UpdateDeviceModel(&dm) if err != nil { @@ -208,8 +211,9 @@ func (dw *DMIWorker) initDeviceModelInfoFromDB() { klog.Errorf("fail to unmarshal device model info from db with err: %v", err) return } + deviceModelID := util.GetResourceID(deviceModel.Namespace, deviceModel.Name) dw.dmiCache.DeviceModelMu.Lock() - dw.dmiCache.DeviceModelList[deviceModel.Name] = &deviceModel + dw.dmiCache.DeviceModelList[deviceModelID] = &deviceModel dw.dmiCache.DeviceModelMu.Unlock() } klog.Infoln("success to init device model info from db") @@ -228,8 +232,9 @@ func (dw *DMIWorker) initDeviceInfoFromDB() { klog.Errorf("fail to unmarshal device info from db with err: %v", err) return } + deviceID := util.GetResourceID(device.Namespace, device.Name) dw.dmiCache.DeviceMu.Lock() - dw.dmiCache.DeviceList[device.Name] = &device + dw.dmiCache.DeviceList[deviceID] = &device dw.dmiCache.DeviceMu.Unlock() } klog.Infoln("success to init device info from db") |
