Loading charts/meep-dai/templates/service.yaml +1 −1 Changes for charts/meep-dai/templates/service.yaml: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ spec: port: 31120 targetPort: 31120 - name: onboarded-demo1 port: 31121 port: 31122 targetPort: 31122 - name: onboarded-demo2 port: 31123 Loading docs/meep-sss/SensorDataSubscriptionApi.md +1 −1 Changes for docs/meep-sss/SensorDataSubscriptionApi.md: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ This method shall support the URI query parameters, request and response data st Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. **body** | [**StatusDataSubscriptionIdBody**](StatusDataSubscriptionIdBody.md)| New SensorDataSubscription is included as entity body of the request | **body** | [**SensorDataSubscriptionIdBody**](SensorDataSubscriptionIdBody.md)| New SensorDataSubscription is included as entity body of the request | **subscriptionId** | **string**| Unique identifiers of a subscription | ### Return type Loading docs/meep-sss/StatusDataSubscriptionIdBody.md +1 −1 Changes for docs/meep-sss/StatusDataSubscriptionIdBody.md: 1 added line, 1 removed line. Original line number Diff line number Diff line # StatusDataSubscriptionIdBody # SensorDataSubscriptionIdBody ## Properties Name | Type | Description | Notes Loading go-apps/meep-iot/sbi/iot-sbi.go +91 −0 Changes for go-apps/meep-iot/sbi/iot-sbi.go: 91 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ type TrafficFilter struct { SrcTunnelPort []string DstTunnelPort []string QCI int32 DSCP int32 TC int32 } Loading Loading @@ -545,7 +546,52 @@ func convertDeviceInfoFromIotMgr(dev tm.DeviceInfo) (device DeviceInfo) { device.DeviceMetadata[i] = KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, // FIXME FSCOM To be filled: TunnelInfo: nil, SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfoFromIotMgr: device: ", device) return device Loading Loading @@ -587,7 +633,52 @@ func convertDeviceInfoToIotMgr(dev DeviceInfo) (device tm.DeviceInfo) { device.DeviceMetadata[i] = tm.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]tm.TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = tm.TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]tm.TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = tm.TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &tm.InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, // FIXME FSCOM To be filled: TunnelInfo: nil, SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfoToIotMgr: device: ", device) return device Loading go-apps/meep-iot/server/meep-iot.go +115 −17 Changes for go-apps/meep-iot/server/meep-iot.go: 115 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -711,6 +711,7 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registerediotplatformsPOST: ", r) w.Header().Set("Content-Type", "application/json; charset=UTF-8") var requestData IotPlatformInfo decoder := json.NewDecoder(r.Body) err := decoder.Decode(&requestData) Loading Loading @@ -744,7 +745,12 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, "Mandatory attribute Name shall be absent in the request body.", http.StatusBadRequest) return } if v.Type_ == nil || *v.Type_ != "MB_TOPIC_BASED" { if v.Type_ == nil { log.Error("Mandatory Type_ parameter shall be present") errHandlerProblemDetails(w, "Mandatory attribute Type_ shall be present.", http.StatusBadRequest) return } if *v.Type_ != "MB_TOPIC_BASED" { log.Error("Mandatory Type_ parameter shall be set to MB_TOPIC_BASED") errHandlerProblemDetails(w, "Mandatory attribute Type_ shall be set to MB_TOPIC_BASED in the request body.", http.StatusBadRequest) return Loading Loading @@ -777,14 +783,8 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { } } if requestData.CustomServicesTransportInfo == nil || len(requestData.CustomServicesTransportInfo) == 0 { log.Error("No information to register IoT platform") errHandlerProblemDetails(w, "No information to register IoT platform.", http.StatusInternalServerError) return } _, ok := registeredIotPlatformsMap[requestData.IotPlatformId] if ok { log.Debug("registerediotplatformsPOST: registeredIotPlatformsMap (before): ", registeredIotPlatformsMap) if _, ok := registeredIotPlatformsMap[requestData.IotPlatformId]; ok { log.Error("IoT platform already created") errHandlerProblemDetails(w, "IoT platform already created.", http.StatusBadRequest) return Loading @@ -799,9 +799,10 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { return } registeredIotPlatformsMap[responseData.IotPlatformId] = responseData log.Debug("registerediotplatformsPOST: new registeredIotPlatformsMap: ", registeredIotPlatformsMap) log.Debug("registerediotplatformsPOST: registeredIotPlatformsMap (after): ", registeredIotPlatformsMap) // Prepare & send response w.Header().Set("Location", hostUrl.String()+basePath+"registered_iot_platforms/"+responseData.IotPlatformId) c := convertIotPlatformInfoFromSbi(responseData) jsonResponse := convertIoTPlatformInfotoJson(&c) w.WriteHeader(http.StatusCreated) Loading Loading @@ -861,6 +862,8 @@ func registereddevicesByIdGET(w http.ResponseWriter, r *http.Request) { func registereddevicesByIdPUT(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registereddevicesByIdPUT: ", r) w.Header().Set("Content-Type", "application/json; charset=UTF-8") errHandlerProblemDetails(w, "Not implemented yet", http.StatusBadRequest) } Loading Loading @@ -921,6 +924,7 @@ func registereddevicesGET(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, string(jsonResponse)) w.WriteHeader(http.StatusOK) } func applyFiltering(devicesList []sbi.DeviceInfo, filter []string) (devices []DeviceInfo, err error) { log.Debug(">>> applyFiltering") devices, err = convertDeviceInfosFromSbi_with_filter(devicesList, filter) Loading @@ -931,6 +935,8 @@ func applyFiltering(devicesList []sbi.DeviceInfo, filter []string) (devices []De func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registereddevicesPOST: ", r) w.Header().Set("Content-Type", "application/json; charset=UTF-8") // Read JSON input stream provided in the Request, and stores it in the bodyBytes as bytes var deviceInfo DeviceInfo bodyBytes, _ := ioutil.ReadAll(r.Body) Loading Loading @@ -966,16 +972,18 @@ func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } log.Info("registereddevicesPOST: deviceInfoResp: ", deviceInfoResp) devInfoResp := convertDeviceInfoFromSbi(deviceInfoResp) log.Info("registereddevicesPOST: devInfoResp: ", devInfoResp) jsonResponse, err := json.Marshal(deviceInfoResp) // Prepare & send the reponse w.Header().Set("Location", hostUrl.String()+basePath+"registered_devices/"+devInfoResp.DeviceId) jsonResponse, err := json.Marshal(devInfoResp) if err != nil { log.Error(err.Error()) errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } log.Info("registereddevicesPOST: jsonResponse: ", string(jsonResponse)) w.WriteHeader(http.StatusCreated) fmt.Fprint(w, string(jsonResponse)) } Loading Loading @@ -1057,6 +1065,7 @@ func convertIotPlatformInfoFromSbi(val sbi.IotPlatformInfo) (item IotPlatformInf } } e.Extensions = userTransportInfo.Security.Extensions v.Security = &e } if userTransportInfo.ImplSpecificInfo != nil { v.ImplSpecificInfo = &ImplSpecificInfo{ Loading Loading @@ -1138,6 +1147,7 @@ func convertIotPlatformInfoToSbi(val IotPlatformInfo) (item sbi.IotPlatformInfo) } } e.Extensions = userTransportInfo.Security.Extensions v.Security = &e } if userTransportInfo.ImplSpecificInfo != nil { v.ImplSpecificInfo = &sbi.ImplSpecificInfo{ Loading @@ -1147,7 +1157,7 @@ func convertIotPlatformInfoToSbi(val IotPlatformInfo) (item sbi.IotPlatformInfo) } } item.UserTransportInfo = append(item.UserTransportInfo, v) } } // End of 'for' statement if val.CustomServicesTransportInfo != nil && len(val.CustomServicesTransportInfo) != 0 { item.CustomServicesTransportInfo = make([]sbi.TransportInfo, 0) for _, customServicesTransportInfo := range val.CustomServicesTransportInfo { Loading Loading @@ -1176,7 +1186,7 @@ func convertIotPlatformInfoToSbi(val IotPlatformInfo) (item sbi.IotPlatformInfo) v.Endpoint = &e } item.CustomServicesTransportInfo = append(item.CustomServicesTransportInfo, v) } } // End of 'for' statement } return item Loading Loading @@ -1204,9 +1214,53 @@ func convertDeviceInfoFromSbi(dev sbi.DeviceInfo) (device DeviceInfo) { device.DeviceMetadata[i] = KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, TunnelInfo: nil, // FIXME FSCOM To be filled SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfosFromSbi: devices: ", devices) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfosFromSbi: devices: ", devices) return device } Loading Loading @@ -1284,8 +1338,52 @@ func convertDeviceInfoToSbi(dev DeviceInfo) (device sbi.DeviceInfo) { device.DeviceMetadata[i] = sbi.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]sbi.TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = sbi.TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]sbi.TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = sbi.TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &sbi.InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, // FIXME FSCOM To be filled: TunnelInfo: nil, SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfoToSbi: devices: ", devices) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfoToSbi: devices: ", devices) return device } Loading
charts/meep-dai/templates/service.yaml +1 −1 Changes for charts/meep-dai/templates/service.yaml: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ spec: port: 31120 targetPort: 31120 - name: onboarded-demo1 port: 31121 port: 31122 targetPort: 31122 - name: onboarded-demo2 port: 31123 Loading
docs/meep-sss/SensorDataSubscriptionApi.md +1 −1 Changes for docs/meep-sss/SensorDataSubscriptionApi.md: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ This method shall support the URI query parameters, request and response data st Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. **body** | [**StatusDataSubscriptionIdBody**](StatusDataSubscriptionIdBody.md)| New SensorDataSubscription is included as entity body of the request | **body** | [**SensorDataSubscriptionIdBody**](SensorDataSubscriptionIdBody.md)| New SensorDataSubscription is included as entity body of the request | **subscriptionId** | **string**| Unique identifiers of a subscription | ### Return type Loading
docs/meep-sss/StatusDataSubscriptionIdBody.md +1 −1 Changes for docs/meep-sss/StatusDataSubscriptionIdBody.md: 1 added line, 1 removed line. Original line number Diff line number Diff line # StatusDataSubscriptionIdBody # SensorDataSubscriptionIdBody ## Properties Name | Type | Description | Notes Loading
go-apps/meep-iot/sbi/iot-sbi.go +91 −0 Changes for go-apps/meep-iot/sbi/iot-sbi.go: 91 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ type TrafficFilter struct { SrcTunnelPort []string DstTunnelPort []string QCI int32 DSCP int32 TC int32 } Loading Loading @@ -545,7 +546,52 @@ func convertDeviceInfoFromIotMgr(dev tm.DeviceInfo) (device DeviceInfo) { device.DeviceMetadata[i] = KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, // FIXME FSCOM To be filled: TunnelInfo: nil, SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfoFromIotMgr: device: ", device) return device Loading Loading @@ -587,7 +633,52 @@ func convertDeviceInfoToIotMgr(dev DeviceInfo) (device tm.DeviceInfo) { device.DeviceMetadata[i] = tm.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]tm.TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = tm.TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]tm.TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = tm.TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &tm.InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, // FIXME FSCOM To be filled: TunnelInfo: nil, SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfoToIotMgr: device: ", device) return device Loading
go-apps/meep-iot/server/meep-iot.go +115 −17 Changes for go-apps/meep-iot/server/meep-iot.go: 115 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -711,6 +711,7 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registerediotplatformsPOST: ", r) w.Header().Set("Content-Type", "application/json; charset=UTF-8") var requestData IotPlatformInfo decoder := json.NewDecoder(r.Body) err := decoder.Decode(&requestData) Loading Loading @@ -744,7 +745,12 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, "Mandatory attribute Name shall be absent in the request body.", http.StatusBadRequest) return } if v.Type_ == nil || *v.Type_ != "MB_TOPIC_BASED" { if v.Type_ == nil { log.Error("Mandatory Type_ parameter shall be present") errHandlerProblemDetails(w, "Mandatory attribute Type_ shall be present.", http.StatusBadRequest) return } if *v.Type_ != "MB_TOPIC_BASED" { log.Error("Mandatory Type_ parameter shall be set to MB_TOPIC_BASED") errHandlerProblemDetails(w, "Mandatory attribute Type_ shall be set to MB_TOPIC_BASED in the request body.", http.StatusBadRequest) return Loading Loading @@ -777,14 +783,8 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { } } if requestData.CustomServicesTransportInfo == nil || len(requestData.CustomServicesTransportInfo) == 0 { log.Error("No information to register IoT platform") errHandlerProblemDetails(w, "No information to register IoT platform.", http.StatusInternalServerError) return } _, ok := registeredIotPlatformsMap[requestData.IotPlatformId] if ok { log.Debug("registerediotplatformsPOST: registeredIotPlatformsMap (before): ", registeredIotPlatformsMap) if _, ok := registeredIotPlatformsMap[requestData.IotPlatformId]; ok { log.Error("IoT platform already created") errHandlerProblemDetails(w, "IoT platform already created.", http.StatusBadRequest) return Loading @@ -799,9 +799,10 @@ func registerediotplatformsPOST(w http.ResponseWriter, r *http.Request) { return } registeredIotPlatformsMap[responseData.IotPlatformId] = responseData log.Debug("registerediotplatformsPOST: new registeredIotPlatformsMap: ", registeredIotPlatformsMap) log.Debug("registerediotplatformsPOST: registeredIotPlatformsMap (after): ", registeredIotPlatformsMap) // Prepare & send response w.Header().Set("Location", hostUrl.String()+basePath+"registered_iot_platforms/"+responseData.IotPlatformId) c := convertIotPlatformInfoFromSbi(responseData) jsonResponse := convertIoTPlatformInfotoJson(&c) w.WriteHeader(http.StatusCreated) Loading Loading @@ -861,6 +862,8 @@ func registereddevicesByIdGET(w http.ResponseWriter, r *http.Request) { func registereddevicesByIdPUT(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registereddevicesByIdPUT: ", r) w.Header().Set("Content-Type", "application/json; charset=UTF-8") errHandlerProblemDetails(w, "Not implemented yet", http.StatusBadRequest) } Loading Loading @@ -921,6 +924,7 @@ func registereddevicesGET(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, string(jsonResponse)) w.WriteHeader(http.StatusOK) } func applyFiltering(devicesList []sbi.DeviceInfo, filter []string) (devices []DeviceInfo, err error) { log.Debug(">>> applyFiltering") devices, err = convertDeviceInfosFromSbi_with_filter(devicesList, filter) Loading @@ -931,6 +935,8 @@ func applyFiltering(devicesList []sbi.DeviceInfo, filter []string) (devices []De func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registereddevicesPOST: ", r) w.Header().Set("Content-Type", "application/json; charset=UTF-8") // Read JSON input stream provided in the Request, and stores it in the bodyBytes as bytes var deviceInfo DeviceInfo bodyBytes, _ := ioutil.ReadAll(r.Body) Loading Loading @@ -966,16 +972,18 @@ func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } log.Info("registereddevicesPOST: deviceInfoResp: ", deviceInfoResp) devInfoResp := convertDeviceInfoFromSbi(deviceInfoResp) log.Info("registereddevicesPOST: devInfoResp: ", devInfoResp) jsonResponse, err := json.Marshal(deviceInfoResp) // Prepare & send the reponse w.Header().Set("Location", hostUrl.String()+basePath+"registered_devices/"+devInfoResp.DeviceId) jsonResponse, err := json.Marshal(devInfoResp) if err != nil { log.Error(err.Error()) errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } log.Info("registereddevicesPOST: jsonResponse: ", string(jsonResponse)) w.WriteHeader(http.StatusCreated) fmt.Fprint(w, string(jsonResponse)) } Loading Loading @@ -1057,6 +1065,7 @@ func convertIotPlatformInfoFromSbi(val sbi.IotPlatformInfo) (item IotPlatformInf } } e.Extensions = userTransportInfo.Security.Extensions v.Security = &e } if userTransportInfo.ImplSpecificInfo != nil { v.ImplSpecificInfo = &ImplSpecificInfo{ Loading Loading @@ -1138,6 +1147,7 @@ func convertIotPlatformInfoToSbi(val IotPlatformInfo) (item sbi.IotPlatformInfo) } } e.Extensions = userTransportInfo.Security.Extensions v.Security = &e } if userTransportInfo.ImplSpecificInfo != nil { v.ImplSpecificInfo = &sbi.ImplSpecificInfo{ Loading @@ -1147,7 +1157,7 @@ func convertIotPlatformInfoToSbi(val IotPlatformInfo) (item sbi.IotPlatformInfo) } } item.UserTransportInfo = append(item.UserTransportInfo, v) } } // End of 'for' statement if val.CustomServicesTransportInfo != nil && len(val.CustomServicesTransportInfo) != 0 { item.CustomServicesTransportInfo = make([]sbi.TransportInfo, 0) for _, customServicesTransportInfo := range val.CustomServicesTransportInfo { Loading Loading @@ -1176,7 +1186,7 @@ func convertIotPlatformInfoToSbi(val IotPlatformInfo) (item sbi.IotPlatformInfo) v.Endpoint = &e } item.CustomServicesTransportInfo = append(item.CustomServicesTransportInfo, v) } } // End of 'for' statement } return item Loading Loading @@ -1204,9 +1214,53 @@ func convertDeviceInfoFromSbi(dev sbi.DeviceInfo) (device DeviceInfo) { device.DeviceMetadata[i] = KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, TunnelInfo: nil, // FIXME FSCOM To be filled SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfosFromSbi: devices: ", devices) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfosFromSbi: devices: ", devices) return device } Loading Loading @@ -1284,8 +1338,52 @@ func convertDeviceInfoToSbi(dev DeviceInfo) (device sbi.DeviceInfo) { device.DeviceMetadata[i] = sbi.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } if len(dev.RequestedMecTrafficRule) != 0 { device.RequestedMecTrafficRule = make([]sbi.TrafficRuleDescriptor, len(dev.RequestedMecTrafficRule)) for i, v := range dev.RequestedMecTrafficRule { device.RequestedMecTrafficRule[i] = sbi.TrafficRuleDescriptor{ TrafficRuleId: v.TrafficRuleId, FilterType: v.FilterType, Priority: v.Priority, Action: v.Action, } if len(dev.RequestedMecTrafficRule[i].TrafficFilter) != 0 { device.RequestedMecTrafficRule[i].TrafficFilter = make([]sbi.TrafficFilter, len(dev.RequestedMecTrafficRule[i].TrafficFilter)) for j, u := range dev.RequestedMecTrafficRule[i].TrafficFilter { device.RequestedMecTrafficRule[i].TrafficFilter[j] = sbi.TrafficFilter{ SrcAddress: u.SrcAddress, DstAddress: u.DstAddress, SrcPort: u.SrcPort, DstPort: u.DstPort, Protocol: u.Protocol, Tag: u.Tag, Uri: u.Uri, PacketLabel: u.PacketLabel, SrcTunnelAddress: u.SrcTunnelAddress, TgtTunnelAddress: u.TgtTunnelAddress, SrcTunnelPort: u.SrcTunnelPort, DstTunnelPort: u.DstTunnelPort, QCI: u.QCI, DSCP: u.DSCP, TC: u.TC, } } // End of 'for' statement } if v.DstInterface != nil { device.RequestedMecTrafficRule[i].DstInterface = &sbi.InterfaceDescriptor{ InterfaceType: device.RequestedMecTrafficRule[i].DstInterface.InterfaceType, // FIXME FSCOM To be filled: TunnelInfo: nil, SrcMACAddress: device.RequestedMecTrafficRule[i].DstInterface.SrcMACAddress, DstMACAddress: device.RequestedMecTrafficRule[i].DstInterface.DstMACAddress, DstIPAddress: device.RequestedMecTrafficRule[i].DstInterface.DstIPAddress, } } } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfoToSbi: devices: ", devices) //DeviceSpecificMessageFormats *DeviceSpecificMessageFormats `json:"deviceSpecificMessageFormats,omitempty"` //DownlinkInfo *DownlinkInfo `json:"downlinkInfo,omitempty"` //log.Debug("convertDeviceInfoToSbi: devices: ", devices) return device }