Loading examples/demo1/src/demo-server/go/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 0.0.1 - Build date: 2020-06-10T13:31:22.169-04:00 - Build date: 2020-06-11T15:37:21.729-04:00 ### Running the server Loading examples/demo1/src/iperf-proxy/go/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 0.0.1 - Build date: 2020-06-10T13:31:23.528-04:00 - Build date: 2020-06-11T15:37:23.235-04:00 ### Running the server Loading go-apps/meep-gis-engine/api/swagger.yaml +49 −3 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ paths: \ when list of POAs in range changes." required: true type: "string" enum: - "MOBILITY" - "MOVEMENT" - "POAS-IN-RANGE" x-exportParamName: "Type_" responses: 200: Loading Loading @@ -83,6 +87,10 @@ paths: \ when list of POAs in range changes" required: true type: "string" enum: - "MOBILITY" - "MOVEMENT" - "POAS-IN-RANGE" x-exportParamName: "Type_" - name: "run" in: "query" Loading @@ -107,12 +115,29 @@ paths: parameters: - name: "assetType" in: "query" description: "Filter by asset type (i.e. UE, POA, POA-CELLULAR, EDGE, FOG,\ \ CLOUD)" description: "Filter by asset type" required: false type: "string" enum: - "UE" - "POA" - "COMPUTE" x-exportParamName: "AssetType" x-optionalDataType: "String" - name: "subType" in: "query" description: "Filter by asset sub type" required: false type: "string" enum: - "UE" - "POA" - "POA-CELLULAR" - "EDGE" - "FOG" - "CLOUD" x-exportParamName: "SubType" x-optionalDataType: "String" responses: 200: description: "OK" Loading Loading @@ -217,12 +242,16 @@ definitions: \ - Advances UEs along configured paths using previous position & velocity\ \ as inputs. <li>POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller\ \ when list of POAs in range changes" enum: - "MOBILITY" - "MOVEMENT" - "POAS-IN-RANGE" active: type: "boolean" description: "Automation feature state" example: active: true type: "type" type: "MOBILITY" GeoDataAssetList: type: "object" properties: Loading @@ -239,6 +268,23 @@ definitions: assetName: type: "string" description: "Name of geospatial asset" assetType: type: "string" description: "Asset type" enum: - "UE" - "POA" - "COMPUTE" subType: type: "string" description: "Asset sub-type" enum: - "UE" - "POA" - "POA-CELLULAR" - "EDGE" - "FOG" - "CLOUD" - $ref: "#/definitions/GeoData" description: "List of geospatial data" GeoData: Loading go-apps/meep-gis-engine/server/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 1.0.0 - Build date: 2020-06-10T13:31:16.545-04:00 - Build date: 2020-06-11T15:37:15.183-04:00 ### Running the server Loading go-apps/meep-gis-engine/server/gis-engine.go +57 −20 Original line number Diff line number Diff line Loading @@ -50,6 +50,12 @@ const ( AutoTypePoaInRange = "POAS-IN-RANGE" ) const ( AssetTypeUe = "UE" AssetTypePoa = "POA" AssetTypeCompute = "COMPUTE" ) type Asset struct { assetType string geoDataAssigned bool Loading Loading @@ -535,14 +541,6 @@ func startAutomation() { }() } // func stopAutomation() { // log.Debug("Stopping automation loop") // if ge.ticker != nil { // ge.ticker.Stop() // ge.ticker = nil // } // } func setAutomation(automationType string, state bool) (err error) { // Validate automation type if _, found := ge.automation[automationType]; !found { Loading Loading @@ -793,16 +791,21 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { // Retrieve asset type from query parameters query := r.URL.Query() assetType := query.Get("assetType") if assetType == "" { log.Debug("Get GeoData for all assets") } else { log.Debug("Get GeoData for all assets of type: ", assetType) subType := query.Get("subType") assetTypeStr := "*" if assetType != "" { assetTypeStr = assetType } subTypeStr := "*" if subType != "" { subTypeStr = subType } log.Debug("Get GeoData for assetType[", assetTypeStr, "] subType[", subTypeStr, "]") var assetList GeoDataAssetList // Get all UEs if assetType == "" || isUe(assetType) { if assetType == "" || assetType == AssetTypeUe { ueMap, err := ge.pc.GetAllUe() if err != nil { log.Error(err.Error()) Loading @@ -811,8 +814,14 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } for _, ue := range ueMap { // Filter subtype if subType != "" && subType != mod.NodeTypeUE { continue } var asset GeoDataAsset asset.AssetName = ue.Name asset.AssetType = AssetTypeUe asset.SubType = mod.NodeTypeUE err = fillGeoDataAsset(&asset, ue.Position, 0, ue.Path, ue.PathMode, ue.PathVelocity) if err != nil { log.Error(err.Error()) Loading @@ -824,7 +833,7 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } // Get all POAs if assetType == "" || isPoa(assetType) { if assetType == "" || assetType == AssetTypePoa { poaMap, err := ge.pc.GetAllPoa() if err != nil { log.Error(err.Error()) Loading @@ -833,11 +842,14 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } for _, poa := range poaMap { if assetType != "" && assetType != poa.SubType { // Filter subtype if subType != "" && subType != poa.SubType { continue } var asset GeoDataAsset asset.AssetName = poa.Name asset.AssetType = AssetTypePoa asset.SubType = poa.SubType err = fillGeoDataAsset(&asset, poa.Position, poa.Radius, "", "", 0) if err != nil { log.Error(err.Error()) Loading @@ -849,7 +861,7 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } // Get all Computes if assetType == "" || isCompute(assetType) { if assetType == "" || assetType == AssetTypeCompute { computeMap, err := ge.pc.GetAllCompute() if err != nil { log.Error(err.Error()) Loading @@ -858,11 +870,14 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } for _, compute := range computeMap { if assetType != "" && assetType != compute.SubType { // Filter subtype if subType != "" && subType != compute.SubType { continue } var asset GeoDataAsset asset.AssetName = compute.Name asset.AssetType = AssetTypeCompute asset.SubType = compute.SubType err = fillGeoDataAsset(&asset, compute.Position, 0, "", "", 0) if err != nil { log.Error(err.Error()) Loading Loading @@ -916,8 +931,11 @@ func geGetGeoDataByName(w http.ResponseWriter, r *http.Request) { // Retrieve geodata from postgis using asset name & type nodeType := ge.activeModel.GetNodeType(assetName) asset.SubType = nodeType if isUe(nodeType) { // Get UE information asset.AssetType = AssetTypeUe ue, err := ge.pc.GetUe(assetName) if err != nil { log.Error(err.Error()) Loading @@ -932,6 +950,7 @@ func geGetGeoDataByName(w http.ResponseWriter, r *http.Request) { } } else if isPoa(nodeType) { // Get POA information asset.AssetType = AssetTypePoa poa, err := ge.pc.GetPoa(assetName) if err != nil { log.Error(err.Error()) Loading @@ -946,6 +965,7 @@ func geGetGeoDataByName(w http.ResponseWriter, r *http.Request) { } } else if isCompute(nodeType) { // Get Compute information asset.AssetType = AssetTypeCompute compute, err := ge.pc.GetCompute(assetName) if err != nil { log.Error(err.Error()) Loading Loading @@ -1008,6 +1028,12 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusBadRequest) return } if geoData.AssetType != AssetTypeUe && geoData.AssetType != AssetTypePoa && geoData.AssetType != AssetTypeCompute { err := errors.New("Missing or invalid asset type") log.Error(err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) return } // Parse Geo Data Asset position, radius, path, mode, velocity, err := parseGeoDataAsset(&geoData) Loading @@ -1027,7 +1053,18 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { // Create/Update asset in DB nodeType := ge.activeModel.GetNodeType(assetName) if isUe(nodeType) { // Validate subtype if (geoData.AssetType == AssetTypeUe && !isUe(nodeType)) || (geoData.AssetType == AssetTypePoa && !isPoa(nodeType)) || (geoData.AssetType == AssetTypeCompute && !isCompute(nodeType)) { err := errors.New("AssetType invalid for selected asset subType") log.Error(err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) return } if geoData.AssetType == AssetTypeUe { if !ge.assets[assetName].geoDataAssigned { // Create UE pl := (ge.activeModel.GetNode(assetName)).(*dataModel.PhysicalLocation) Loading @@ -1048,7 +1085,7 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { return } } } else if isPoa(nodeType) { } else if geoData.AssetType == AssetTypePoa { if !ge.assets[assetName].geoDataAssigned { // Create POA nl := (ge.activeModel.GetNode(assetName)).(*dataModel.NetworkLocation) Loading @@ -1069,7 +1106,7 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { return } } } else if isCompute(nodeType) { } else if geoData.AssetType == AssetTypeCompute { if !ge.assets[assetName].geoDataAssigned { // Create Compute pl := (ge.activeModel.GetNode(assetName)).(*dataModel.PhysicalLocation) Loading Loading
examples/demo1/src/demo-server/go/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 0.0.1 - Build date: 2020-06-10T13:31:22.169-04:00 - Build date: 2020-06-11T15:37:21.729-04:00 ### Running the server Loading
examples/demo1/src/iperf-proxy/go/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 0.0.1 - Build date: 2020-06-10T13:31:23.528-04:00 - Build date: 2020-06-11T15:37:23.235-04:00 ### Running the server Loading
go-apps/meep-gis-engine/api/swagger.yaml +49 −3 Original line number Diff line number Diff line Loading @@ -56,6 +56,10 @@ paths: \ when list of POAs in range changes." required: true type: "string" enum: - "MOBILITY" - "MOVEMENT" - "POAS-IN-RANGE" x-exportParamName: "Type_" responses: 200: Loading Loading @@ -83,6 +87,10 @@ paths: \ when list of POAs in range changes" required: true type: "string" enum: - "MOBILITY" - "MOVEMENT" - "POAS-IN-RANGE" x-exportParamName: "Type_" - name: "run" in: "query" Loading @@ -107,12 +115,29 @@ paths: parameters: - name: "assetType" in: "query" description: "Filter by asset type (i.e. UE, POA, POA-CELLULAR, EDGE, FOG,\ \ CLOUD)" description: "Filter by asset type" required: false type: "string" enum: - "UE" - "POA" - "COMPUTE" x-exportParamName: "AssetType" x-optionalDataType: "String" - name: "subType" in: "query" description: "Filter by asset sub type" required: false type: "string" enum: - "UE" - "POA" - "POA-CELLULAR" - "EDGE" - "FOG" - "CLOUD" x-exportParamName: "SubType" x-optionalDataType: "String" responses: 200: description: "OK" Loading Loading @@ -217,12 +242,16 @@ definitions: \ - Advances UEs along configured paths using previous position & velocity\ \ as inputs. <li>POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller\ \ when list of POAs in range changes" enum: - "MOBILITY" - "MOVEMENT" - "POAS-IN-RANGE" active: type: "boolean" description: "Automation feature state" example: active: true type: "type" type: "MOBILITY" GeoDataAssetList: type: "object" properties: Loading @@ -239,6 +268,23 @@ definitions: assetName: type: "string" description: "Name of geospatial asset" assetType: type: "string" description: "Asset type" enum: - "UE" - "POA" - "COMPUTE" subType: type: "string" description: "Asset sub-type" enum: - "UE" - "POA" - "POA-CELLULAR" - "EDGE" - "FOG" - "CLOUD" - $ref: "#/definitions/GeoData" description: "List of geospatial data" GeoData: Loading
go-apps/meep-gis-engine/server/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 1.0.0 - Build date: 2020-06-10T13:31:16.545-04:00 - Build date: 2020-06-11T15:37:15.183-04:00 ### Running the server Loading
go-apps/meep-gis-engine/server/gis-engine.go +57 −20 Original line number Diff line number Diff line Loading @@ -50,6 +50,12 @@ const ( AutoTypePoaInRange = "POAS-IN-RANGE" ) const ( AssetTypeUe = "UE" AssetTypePoa = "POA" AssetTypeCompute = "COMPUTE" ) type Asset struct { assetType string geoDataAssigned bool Loading Loading @@ -535,14 +541,6 @@ func startAutomation() { }() } // func stopAutomation() { // log.Debug("Stopping automation loop") // if ge.ticker != nil { // ge.ticker.Stop() // ge.ticker = nil // } // } func setAutomation(automationType string, state bool) (err error) { // Validate automation type if _, found := ge.automation[automationType]; !found { Loading Loading @@ -793,16 +791,21 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { // Retrieve asset type from query parameters query := r.URL.Query() assetType := query.Get("assetType") if assetType == "" { log.Debug("Get GeoData for all assets") } else { log.Debug("Get GeoData for all assets of type: ", assetType) subType := query.Get("subType") assetTypeStr := "*" if assetType != "" { assetTypeStr = assetType } subTypeStr := "*" if subType != "" { subTypeStr = subType } log.Debug("Get GeoData for assetType[", assetTypeStr, "] subType[", subTypeStr, "]") var assetList GeoDataAssetList // Get all UEs if assetType == "" || isUe(assetType) { if assetType == "" || assetType == AssetTypeUe { ueMap, err := ge.pc.GetAllUe() if err != nil { log.Error(err.Error()) Loading @@ -811,8 +814,14 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } for _, ue := range ueMap { // Filter subtype if subType != "" && subType != mod.NodeTypeUE { continue } var asset GeoDataAsset asset.AssetName = ue.Name asset.AssetType = AssetTypeUe asset.SubType = mod.NodeTypeUE err = fillGeoDataAsset(&asset, ue.Position, 0, ue.Path, ue.PathMode, ue.PathVelocity) if err != nil { log.Error(err.Error()) Loading @@ -824,7 +833,7 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } // Get all POAs if assetType == "" || isPoa(assetType) { if assetType == "" || assetType == AssetTypePoa { poaMap, err := ge.pc.GetAllPoa() if err != nil { log.Error(err.Error()) Loading @@ -833,11 +842,14 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } for _, poa := range poaMap { if assetType != "" && assetType != poa.SubType { // Filter subtype if subType != "" && subType != poa.SubType { continue } var asset GeoDataAsset asset.AssetName = poa.Name asset.AssetType = AssetTypePoa asset.SubType = poa.SubType err = fillGeoDataAsset(&asset, poa.Position, poa.Radius, "", "", 0) if err != nil { log.Error(err.Error()) Loading @@ -849,7 +861,7 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } // Get all Computes if assetType == "" || isCompute(assetType) { if assetType == "" || assetType == AssetTypeCompute { computeMap, err := ge.pc.GetAllCompute() if err != nil { log.Error(err.Error()) Loading @@ -858,11 +870,14 @@ func geGetAssetData(w http.ResponseWriter, r *http.Request) { } for _, compute := range computeMap { if assetType != "" && assetType != compute.SubType { // Filter subtype if subType != "" && subType != compute.SubType { continue } var asset GeoDataAsset asset.AssetName = compute.Name asset.AssetType = AssetTypeCompute asset.SubType = compute.SubType err = fillGeoDataAsset(&asset, compute.Position, 0, "", "", 0) if err != nil { log.Error(err.Error()) Loading Loading @@ -916,8 +931,11 @@ func geGetGeoDataByName(w http.ResponseWriter, r *http.Request) { // Retrieve geodata from postgis using asset name & type nodeType := ge.activeModel.GetNodeType(assetName) asset.SubType = nodeType if isUe(nodeType) { // Get UE information asset.AssetType = AssetTypeUe ue, err := ge.pc.GetUe(assetName) if err != nil { log.Error(err.Error()) Loading @@ -932,6 +950,7 @@ func geGetGeoDataByName(w http.ResponseWriter, r *http.Request) { } } else if isPoa(nodeType) { // Get POA information asset.AssetType = AssetTypePoa poa, err := ge.pc.GetPoa(assetName) if err != nil { log.Error(err.Error()) Loading @@ -946,6 +965,7 @@ func geGetGeoDataByName(w http.ResponseWriter, r *http.Request) { } } else if isCompute(nodeType) { // Get Compute information asset.AssetType = AssetTypeCompute compute, err := ge.pc.GetCompute(assetName) if err != nil { log.Error(err.Error()) Loading Loading @@ -1008,6 +1028,12 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusBadRequest) return } if geoData.AssetType != AssetTypeUe && geoData.AssetType != AssetTypePoa && geoData.AssetType != AssetTypeCompute { err := errors.New("Missing or invalid asset type") log.Error(err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) return } // Parse Geo Data Asset position, radius, path, mode, velocity, err := parseGeoDataAsset(&geoData) Loading @@ -1027,7 +1053,18 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { // Create/Update asset in DB nodeType := ge.activeModel.GetNodeType(assetName) if isUe(nodeType) { // Validate subtype if (geoData.AssetType == AssetTypeUe && !isUe(nodeType)) || (geoData.AssetType == AssetTypePoa && !isPoa(nodeType)) || (geoData.AssetType == AssetTypeCompute && !isCompute(nodeType)) { err := errors.New("AssetType invalid for selected asset subType") log.Error(err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) return } if geoData.AssetType == AssetTypeUe { if !ge.assets[assetName].geoDataAssigned { // Create UE pl := (ge.activeModel.GetNode(assetName)).(*dataModel.PhysicalLocation) Loading @@ -1048,7 +1085,7 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { return } } } else if isPoa(nodeType) { } else if geoData.AssetType == AssetTypePoa { if !ge.assets[assetName].geoDataAssigned { // Create POA nl := (ge.activeModel.GetNode(assetName)).(*dataModel.NetworkLocation) Loading @@ -1069,7 +1106,7 @@ func geUpdateGeoDataByName(w http.ResponseWriter, r *http.Request) { return } } } else if isCompute(nodeType) { } else if geoData.AssetType == AssetTypeCompute { if !ge.assets[assetName].geoDataAssigned { // Create Compute pl := (ge.activeModel.GetNode(assetName)).(*dataModel.PhysicalLocation) Loading