Commit 0c55d6bf authored by Yann Garcia's avatar Yann Garcia
Browse files

Partial validation of TTF T043

parent 1e5ccfe0
Loading
Loading
Loading
Loading
+1 −1
Changes for charts/meep-dai/templates/service.yaml: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ spec:
      port: 31120
      targetPort: 31120
    - name: onboarded-demo1
      port: 31121
      port: 31122
      targetPort: 31122
    - name: onboarded-demo2
      port: 31123
+1 −1
Changes for docs/meep-sss/SensorDataSubscriptionApi.md: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -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
+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
+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
@@ -154,6 +154,7 @@ type TrafficFilter struct {
	SrcTunnelPort    []string
	DstTunnelPort    []string
	QCI              int32
	DSCP             int32
	TC               int32
}

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

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

@@ -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