From da0458b954b103db491964bbd77bf25ff25ee3e6 Mon Sep 17 00:00:00 2001 From: Nikhil Doifode Date: Wed, 9 Dec 2020 14:53:21 -0500 Subject: [PATCH 001/194] Changes related to NA-473 and NA-475 --- .../src/js/containers/cfg/cfg-network-element-container.js | 5 ++++- .../src/js/containers/exec/exec-page-container.js | 7 +++++++ js-apps/meep-frontend/src/js/meep-constants.js | 4 ++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js b/js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js index 01fccca9b..3e78907d6 100644 --- a/js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +++ b/js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js @@ -1648,7 +1648,7 @@ const getSuggestedName = ( type, elements ) => { var suggestedPrefix = ''; switch(type) { case ELEMENT_TYPE_UE_APP: - suggestedPrefix = 'ue-app'; + suggestedPrefix = 'term-app'; break; case ELEMENT_TYPE_EDGE_APP: suggestedPrefix = 'edge-app'; @@ -1671,6 +1671,9 @@ const getSuggestedName = ( type, elements ) => { case ELEMENT_TYPE_OPERATOR_CELL: suggestedPrefix = 'operator-cell'; break; + case ELEMENT_TYPE_UE: + suggestedPrefix = 'term'; + break; default: suggestedPrefix = type.toLowerCase(); } diff --git a/js-apps/meep-frontend/src/js/containers/exec/exec-page-container.js b/js-apps/meep-frontend/src/js/containers/exec/exec-page-container.js index 09a692c2d..76147ae57 100644 --- a/js-apps/meep-frontend/src/js/containers/exec/exec-page-container.js +++ b/js-apps/meep-frontend/src/js/containers/exec/exec-page-container.js @@ -204,6 +204,13 @@ class ExecPageContainer extends Component { // DEPLOY DIALOG onDeployScenario() { + // Close all open panes + this.props.dashCfgMode ? this.onCloseDashCfg() : ''; + this.props.eventCfgMode ? this.onCloseEventCfg(): ''; + this.props.eventCreationMode ? this.onQuitEventCreationMode() : ''; + this.props.eventAutomationMode ? this.onQuitEventAutomationMode() : ''; + this.props.eventReplayMode ? this.onQuitEventReplayMode() : ''; + // Retrieve list of available scenarios this.props.cfgApi.getScenarioList((error, data, response) => { this.getScenarioListDeployCb(error, data, response); diff --git a/js-apps/meep-frontend/src/js/meep-constants.js b/js-apps/meep-frontend/src/js/meep-constants.js index d05929571..d7d8df253 100644 --- a/js-apps/meep-frontend/src/js/meep-constants.js +++ b/js-apps/meep-frontend/src/js/meep-constants.js @@ -230,9 +230,9 @@ export const ELEMENT_TYPE_DC = 'DISTANT CLOUD'; export const ELEMENT_TYPE_CN = 'CORE NETWORK'; export const ELEMENT_TYPE_EDGE = 'EDGE'; export const ELEMENT_TYPE_FOG = 'FOG'; -export const ELEMENT_TYPE_UE = 'UE'; +export const ELEMENT_TYPE_UE = 'TERMINAL'; export const ELEMENT_TYPE_MECSVC = 'MEC SERVICE'; -export const ELEMENT_TYPE_UE_APP = 'UE APPLICATION'; +export const ELEMENT_TYPE_UE_APP = 'TERMINAL APPLICATION'; export const ELEMENT_TYPE_EDGE_APP = 'EDGE APPLICATION'; export const ELEMENT_TYPE_CLOUD_APP = 'CLOUD APPLICATION'; -- GitLab From cd9a3016038c4aea3be0d0359234c7e29465a840 Mon Sep 17 00:00:00 2001 From: Nikhil Doifode Date: Thu, 17 Dec 2020 12:15:32 -0500 Subject: [PATCH 002/194] fixed marker change for configure frontend --- js-apps/meep-frontend/src/js/util/scenario-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js-apps/meep-frontend/src/js/util/scenario-utils.js b/js-apps/meep-frontend/src/js/util/scenario-utils.js index 3d7f4623e..b6f8e9303 100644 --- a/js-apps/meep-frontend/src/js/util/scenario-utils.js +++ b/js-apps/meep-frontend/src/js/util/scenario-utils.js @@ -261,7 +261,7 @@ export function parseScenario(scenario) { // Add PL with geodata to map if (pl.geoData && pl.geoData.location) { var plGeoDataAsset = updateObject({assetName: pl.name, subType: pl.type}, pl.geoData); - if (pl.type === ELEMENT_TYPE_UE) { + if (pl.type === UE_TYPE_STR) { plGeoDataAsset.assetType = 'UE'; ueList.push(plGeoDataAsset); } else { -- GitLab From 57f6c9c6d82df571e963fb45a023de38613d8865 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 11 Dec 2020 11:03:14 -0500 Subject: [PATCH 003/194] system-test 1st merge --- .meepctl-repocfg.yaml | 3 +- go-apps/meep-platform-ctrl/server/README.md | 2 +- go-packages/meep-gis-engine-client/README.md | 51 + .../meep-gis-engine-client/api/swagger.yaml | 415 + .../meep-gis-engine-client/api_automation.go | 288 + .../api_geospatial_data.go | 390 + go-packages/meep-gis-engine-client/client.go | 482 ++ .../meep-gis-engine-client/configuration.go | 87 + .../docs/AutomationApi.md | 92 + .../docs/AutomationState.md | 11 + .../docs/AutomationStateList.md | 10 + .../meep-gis-engine-client/docs/GeoData.md | 14 + .../docs/GeoDataAsset.md | 17 + .../docs/GeoDataAssetList.md | 10 + .../docs/GeospatialDataApi.md | 143 + .../meep-gis-engine-client/docs/LineString.md | 11 + .../meep-gis-engine-client/docs/Point.md | 11 + .../meep-gis-engine-client/git_push.sh | 52 + go-packages/meep-gis-engine-client/go.mod | 8 + .../model_automation_state.go | 32 + .../model_automation_state_list.go | 30 + .../meep-gis-engine-client/model_geo_data.go | 37 + .../model_geo_data_asset.go | 43 + .../model_geo_data_asset_list.go | 30 + .../model_line_string.go | 33 + .../meep-gis-engine-client/model_point.go | 33 + .../meep-gis-engine-client/response.go | 58 + .../.api_sandbox_control.go.swo | Bin 0 -> 16384 bytes .../.api_sandbox_control.go.swp | Bin 0 -> 20480 bytes .../meep-platform-ctrl-client/README.md | 83 + .../api/swagger.yaml | 1148 +++ .../api_sandbox_control.go | 515 ++ .../api_scenario_configuration.go | 497 ++ .../api_user_authentication.go | 437 + .../meep-platform-ctrl-client/client.go | 485 ++ .../configuration.go | 87 + .../docs/CellularDomainConfig.md | 12 + .../docs/CellularPoaConfig.md | 10 + .../docs/CpuConfig.md | 11 + .../docs/Deployment.md | 17 + .../meep-platform-ctrl-client/docs/Domain.md | 21 + .../docs/EgressService.md | 14 + .../docs/ExternalConfig.md | 11 + .../meep-platform-ctrl-client/docs/GeoData.md | 14 + .../docs/GpuConfig.md | 11 + .../docs/IngressService.md | 13 + .../docs/LineString.md | 11 + .../docs/MemoryConfig.md | 11 + .../docs/NetworkCharacteristics.md | 16 + .../docs/NetworkLocation.md | 25 + .../docs/PhysicalLocation.md | 27 + .../docs/Poa4GConfig.md | 10 + .../docs/Poa5GConfig.md | 10 + .../docs/PoaWifiConfig.md | 10 + .../meep-platform-ctrl-client/docs/Point.md | 11 + .../meep-platform-ctrl-client/docs/Process.md | 34 + .../meep-platform-ctrl-client/docs/Sandbox.md | 10 + .../docs/SandboxConfig.md | 10 + .../docs/SandboxControlApi.md | 175 + .../docs/SandboxList.md | 10 + .../docs/Scenario.md | 15 + .../docs/ScenarioConfig.md | 11 + .../docs/ScenarioConfigurationApi.md | 176 + .../docs/ScenarioList.md | 10 + .../docs/ServiceConfig.md | 12 + .../docs/ServicePort.md | 12 + .../docs/UserAuthenticationApi.md | 168 + .../meep-platform-ctrl-client/docs/Zone.md | 28 + .../meep-platform-ctrl-client/git_push.sh | 52 + go-packages/meep-platform-ctrl-client/go.mod | 8 + go-packages/meep-platform-ctrl-client/go.sum | 12 + .../model_cellular_domain_config.go | 35 + .../model_cellular_poa_config.go | 31 + .../model_cpu_config.go | 33 + .../model_deployment.go | 43 + .../meep-platform-ctrl-client/model_domain.go | 50 + .../model_egress_service.go | 39 + .../model_external_config.go | 31 + .../model_geo_data.go | 37 + .../model_gpu_config.go | 33 + .../model_ingress_service.go | 37 + .../model_line_string.go | 33 + .../model_memory_config.go | 33 + .../model_network_characteristics.go | 43 + .../model_network_location.go | 54 + .../model_physical_location.go | 61 + .../model_poa4_g_config.go | 31 + .../model_poa5_g_config.go | 31 + .../model_poa_wifi_config.go | 31 + .../meep-platform-ctrl-client/model_point.go | 33 + .../model_process.go | 73 + .../model_sandbox.go | 31 + .../model_sandbox_config.go | 31 + .../model_sandbox_list.go | 30 + .../model_scenario.go | 39 + .../model_scenario_config.go | 33 + .../model_scenario_list.go | 30 + .../model_service_config.go | 34 + .../model_service_port.go | 35 + .../meep-platform-ctrl-client/model_zone.go | 65 + .../meep-platform-ctrl-client/response.go | 58 + go-packages/meep-rnis-client/model_trigger.go | 48 +- .../meep-rnis-client/model_trigger_nr.go | 26 +- test/system/.systemTest.go.swo | Bin 0 -> 16384 bytes test/system/.systemTest.go.swp | Bin 0 -> 24576 bytes test/system/go.mod | 45 + test/system/go.sum | 68 + test/system/loc-serv_test.go | 2452 ++++++ test/system/loc-serv_test.go2 | 1455 ++++ test/system/systemTest.go | 344 + test/system/systemTest_test.go2 | 7035 +++++++++++++++++ test/system/test.json | 6910 ++++++++++++++++ 112 files changed, 26176 insertions(+), 38 deletions(-) create mode 100644 go-packages/meep-gis-engine-client/README.md create mode 100644 go-packages/meep-gis-engine-client/api/swagger.yaml create mode 100644 go-packages/meep-gis-engine-client/api_automation.go create mode 100644 go-packages/meep-gis-engine-client/api_geospatial_data.go create mode 100644 go-packages/meep-gis-engine-client/client.go create mode 100644 go-packages/meep-gis-engine-client/configuration.go create mode 100644 go-packages/meep-gis-engine-client/docs/AutomationApi.md create mode 100644 go-packages/meep-gis-engine-client/docs/AutomationState.md create mode 100644 go-packages/meep-gis-engine-client/docs/AutomationStateList.md create mode 100644 go-packages/meep-gis-engine-client/docs/GeoData.md create mode 100644 go-packages/meep-gis-engine-client/docs/GeoDataAsset.md create mode 100644 go-packages/meep-gis-engine-client/docs/GeoDataAssetList.md create mode 100644 go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md create mode 100644 go-packages/meep-gis-engine-client/docs/LineString.md create mode 100644 go-packages/meep-gis-engine-client/docs/Point.md create mode 100644 go-packages/meep-gis-engine-client/git_push.sh create mode 100644 go-packages/meep-gis-engine-client/go.mod create mode 100644 go-packages/meep-gis-engine-client/model_automation_state.go create mode 100644 go-packages/meep-gis-engine-client/model_automation_state_list.go create mode 100644 go-packages/meep-gis-engine-client/model_geo_data.go create mode 100644 go-packages/meep-gis-engine-client/model_geo_data_asset.go create mode 100644 go-packages/meep-gis-engine-client/model_geo_data_asset_list.go create mode 100644 go-packages/meep-gis-engine-client/model_line_string.go create mode 100644 go-packages/meep-gis-engine-client/model_point.go create mode 100644 go-packages/meep-gis-engine-client/response.go create mode 100644 go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swo create mode 100644 go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swp create mode 100644 go-packages/meep-platform-ctrl-client/README.md create mode 100644 go-packages/meep-platform-ctrl-client/api/swagger.yaml create mode 100644 go-packages/meep-platform-ctrl-client/api_sandbox_control.go create mode 100644 go-packages/meep-platform-ctrl-client/api_scenario_configuration.go create mode 100644 go-packages/meep-platform-ctrl-client/api_user_authentication.go create mode 100644 go-packages/meep-platform-ctrl-client/client.go create mode 100644 go-packages/meep-platform-ctrl-client/configuration.go create mode 100644 go-packages/meep-platform-ctrl-client/docs/CellularDomainConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/CellularPoaConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/CpuConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Deployment.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Domain.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/EgressService.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/ExternalConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/GeoData.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/GpuConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/IngressService.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/LineString.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/MemoryConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/NetworkCharacteristics.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/NetworkLocation.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/PhysicalLocation.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Poa4GConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Poa5GConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/PoaWifiConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Point.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Process.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Sandbox.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/SandboxConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/SandboxControlApi.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/SandboxList.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Scenario.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/ScenarioConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/ScenarioConfigurationApi.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/ScenarioList.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/ServiceConfig.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/ServicePort.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md create mode 100644 go-packages/meep-platform-ctrl-client/docs/Zone.md create mode 100644 go-packages/meep-platform-ctrl-client/git_push.sh create mode 100644 go-packages/meep-platform-ctrl-client/go.mod create mode 100644 go-packages/meep-platform-ctrl-client/go.sum create mode 100644 go-packages/meep-platform-ctrl-client/model_cellular_domain_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_cellular_poa_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_cpu_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_deployment.go create mode 100644 go-packages/meep-platform-ctrl-client/model_domain.go create mode 100644 go-packages/meep-platform-ctrl-client/model_egress_service.go create mode 100644 go-packages/meep-platform-ctrl-client/model_external_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_geo_data.go create mode 100644 go-packages/meep-platform-ctrl-client/model_gpu_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_ingress_service.go create mode 100644 go-packages/meep-platform-ctrl-client/model_line_string.go create mode 100644 go-packages/meep-platform-ctrl-client/model_memory_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_network_characteristics.go create mode 100644 go-packages/meep-platform-ctrl-client/model_network_location.go create mode 100644 go-packages/meep-platform-ctrl-client/model_physical_location.go create mode 100644 go-packages/meep-platform-ctrl-client/model_poa4_g_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_poa5_g_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_poa_wifi_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_point.go create mode 100644 go-packages/meep-platform-ctrl-client/model_process.go create mode 100644 go-packages/meep-platform-ctrl-client/model_sandbox.go create mode 100644 go-packages/meep-platform-ctrl-client/model_sandbox_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_sandbox_list.go create mode 100644 go-packages/meep-platform-ctrl-client/model_scenario.go create mode 100644 go-packages/meep-platform-ctrl-client/model_scenario_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_scenario_list.go create mode 100644 go-packages/meep-platform-ctrl-client/model_service_config.go create mode 100644 go-packages/meep-platform-ctrl-client/model_service_port.go create mode 100644 go-packages/meep-platform-ctrl-client/model_zone.go create mode 100644 go-packages/meep-platform-ctrl-client/response.go create mode 100644 test/system/.systemTest.go.swo create mode 100644 test/system/.systemTest.go.swp create mode 100644 test/system/go.mod create mode 100644 test/system/go.sum create mode 100644 test/system/loc-serv_test.go create mode 100644 test/system/loc-serv_test.go2 create mode 100644 test/system/systemTest.go create mode 100644 test/system/systemTest_test.go2 create mode 100644 test/system/test.json diff --git a/.meepctl-repocfg.yaml b/.meepctl-repocfg.yaml index 711ff1180..9d78a1c90 100644 --- a/.meepctl-repocfg.yaml +++ b/.meepctl-repocfg.yaml @@ -31,7 +31,8 @@ repo: # platform ingress configuration ingress: # host name - host: my-platform-fqdn + #host: my-platform-fqdn + host: 10.3.16.150 # enable https only (redirect http requests to https port) https-only: false # bind to host ports (true) or node ports (false) diff --git a/go-apps/meep-platform-ctrl/server/README.md b/go-apps/meep-platform-ctrl/server/README.md index 9caf26940..1287a9b0e 100644 --- a/go-apps/meep-platform-ctrl/server/README.md +++ b/go-apps/meep-platform-ctrl/server/README.md @@ -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-11-13T09:24:04.779-05:00 +- Build date: 2020-12-09T09:06:59.942-05:00 ### Running the server diff --git a/go-packages/meep-gis-engine-client/README.md b/go-packages/meep-gis-engine-client/README.md new file mode 100644 index 000000000..a98dd7dfd --- /dev/null +++ b/go-packages/meep-gis-engine-client/README.md @@ -0,0 +1,51 @@ +# Go API client for client + +This API allows to control geo-spatial behavior and simulation.

**Micro-service**
[meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

**Type & Usage**
Platform runtime interface to control geo-spatial behavior and simulation

**Details**
API details available at _your-AdvantEDGE-ip-address/api_ + +## Overview +This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: 1.0.0 +- Build package: io.swagger.codegen.languages.GoClientCodegen + +## Installation +Put the package under your project folder and add the following in import: +```golang +import "./client" +``` + +## Documentation for API Endpoints + +All URIs are relative to *https://localhost/gis/v1* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AutomationApi* | [**GetAutomationState**](docs/AutomationApi.md#getautomationstate) | **Get** /automation | Get automation state +*AutomationApi* | [**GetAutomationStateByName**](docs/AutomationApi.md#getautomationstatebyname) | **Get** /automation/{type} | Get automation state +*AutomationApi* | [**SetAutomationStateByName**](docs/AutomationApi.md#setautomationstatebyname) | **Post** /automation/{type} | Set automation state +*GeospatialDataApi* | [**DeleteGeoDataByName**](docs/GeospatialDataApi.md#deletegeodatabyname) | **Delete** /geodata/{assetName} | Delete geospatial data +*GeospatialDataApi* | [**GetAssetData**](docs/GeospatialDataApi.md#getassetdata) | **Get** /geodata | Get geospatial data +*GeospatialDataApi* | [**GetGeoDataByName**](docs/GeospatialDataApi.md#getgeodatabyname) | **Get** /geodata/{assetName} | Get geospatial data +*GeospatialDataApi* | [**UpdateGeoDataByName**](docs/GeospatialDataApi.md#updategeodatabyname) | **Post** /geodata/{assetName} | Create/Update geospatial data + + +## Documentation For Models + + - [AutomationState](docs/AutomationState.md) + - [AutomationStateList](docs/AutomationStateList.md) + - [GeoData](docs/GeoData.md) + - [GeoDataAssetList](docs/GeoDataAssetList.md) + - [LineString](docs/LineString.md) + - [Point](docs/Point.md) + - [GeoDataAsset](docs/GeoDataAsset.md) + + +## Documentation For Authorization + Endpoints do not require authorization. + + +## Author + +AdvantEDGE@InterDigital.com + diff --git a/go-packages/meep-gis-engine-client/api/swagger.yaml b/go-packages/meep-gis-engine-client/api/swagger.yaml new file mode 100644 index 000000000..67c9e7b76 --- /dev/null +++ b/go-packages/meep-gis-engine-client/api/swagger.yaml @@ -0,0 +1,415 @@ +--- +swagger: "2.0" +info: + description: "This API allows to control geo-spatial behavior and simulation.

**Micro-service**
[meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)\ + \

**Type & Usage**
Platform runtime interface to control geo-spatial behavior\ + \ and simulation

**Details**
API details available at _your-AdvantEDGE-ip-address/api_" + version: "1.0.0" + title: "AdvantEDGE GIS Engine REST API" + contact: + name: "InterDigital AdvantEDGE Support" + email: "AdvantEDGE@InterDigital.com" + license: + name: "Apache 2.0" + url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" +basePath: "/gis/v1" +tags: +- name: "Automation" +- name: "Geospatial Data" +consumes: +- "application/json" +produces: +- "application/json" +paths: + /automation: + get: + tags: + - "Automation" + summary: "Get automation state" + description: "Get automation state for all automation types" + operationId: "getAutomationState" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/AutomationStateList" + /automation/{type}: + get: + tags: + - "Automation" + summary: "Get automation state" + description: "Get automation state for the given automation type" + operationId: "getAutomationStateByName" + produces: + - "application/json" + parameters: + - name: "type" + in: "path" + description: "Automation type.
Automation loop evaluates enabled automation\ + \ types once every second.
\n

Supported Types:

  • MOVEMENT - Advances\ + \ UEs along configured paths using previous position & velocity as inputs.\ + \
  • MOBILITY - Sends Mobility events to Sanbox Controller when UE changes\ + \ POA.
  • POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller\ + \ when list of POAs in range changes.
  • NETWORK-CHARACTERISTICS-UPDATE\ + \ - Sends network characteristics update events to Sanbox Controller when\ + \ throughput values change." + required: true + type: "string" + enum: + - "MOBILITY" + - "MOVEMENT" + - "POAS-IN-RANGE" + - "NETWORK-CHARACTERISTICS-UPDATE" + x-exportParamName: "Type_" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/AutomationState" + 500: + description: "Internal server error" + post: + tags: + - "Automation" + summary: "Set automation state" + description: "Set automation state for the given automation type \\" + operationId: "setAutomationStateByName" + produces: + - "application/json" + parameters: + - name: "type" + in: "path" + description: "Automation type.
    Automation loop evaluates enabled automation\ + \ types once every second.
    \n

    Supported Types:

  • MOBILITY - Sends\ + \ Mobility events to Sanbox Controller when UE changes POA.
  • MOVEMENT\ + \ - Advances UEs along configured paths using previous position & velocity\ + \ as inputs.
  • POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller\ + \ when list of POAs in range changes.
  • NETWORK-CHARACTERISTICS-UPDATE\ + \ - Sends network characteristics update events to Sanbox Controller when\ + \ throughput values change." + required: true + type: "string" + enum: + - "MOBILITY" + - "MOVEMENT" + - "POAS-IN-RANGE" + - "NETWORK-CHARACTERISTICS-UPDATE" + x-exportParamName: "Type_" + - name: "run" + in: "query" + description: "Automation state (e.g. true=running, false=stopped)" + required: true + type: "boolean" + x-exportParamName: "Run" + responses: + 200: + description: "OK" + 500: + description: "Internal server error" + /geodata: + get: + tags: + - "Geospatial Data" + summary: "Get geospatial data" + description: "Get geospatial data for all assets present in database" + operationId: "getAssetData" + produces: + - "application/json" + parameters: + - name: "assetType" + in: "query" + 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-4G" + - "POA-5G" + - "POA-WIFI" + - "EDGE" + - "FOG" + - "CLOUD" + x-exportParamName: "SubType" + x-optionalDataType: "String" + - name: "excludePath" + in: "query" + description: "Exclude UE paths in response (default: false)" + required: false + type: "string" + enum: + - "true" + - "false" + x-exportParamName: "ExcludePath" + x-optionalDataType: "String" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/GeoDataAssetList" + 500: + description: "Internal server error" + /geodata/{assetName}: + get: + tags: + - "Geospatial Data" + summary: "Get geospatial data" + description: "Get geospatial data for the given asset" + operationId: "getGeoDataByName" + produces: + - "application/json" + parameters: + - name: "assetName" + in: "path" + description: "Name of geospatial asset" + required: true + type: "string" + x-exportParamName: "AssetName" + - name: "excludePath" + in: "query" + description: "Exclude UE paths in response (default: false)" + required: false + type: "string" + enum: + - "true" + - "false" + x-exportParamName: "ExcludePath" + x-optionalDataType: "String" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/GeoDataAsset" + 404: + description: "Not found" + 500: + description: "Internal server error" + post: + tags: + - "Geospatial Data" + summary: "Create/Update geospatial data" + description: "Create/Update geospatial data for the given asset" + operationId: "updateGeoDataByName" + produces: + - "application/json" + parameters: + - name: "assetName" + in: "path" + description: "Name of geospatial asset" + required: true + type: "string" + x-exportParamName: "AssetName" + - in: "body" + name: "geoData" + description: "Geospatial data" + required: true + schema: + $ref: "#/definitions/GeoDataAsset" + x-exportParamName: "GeoData" + responses: + 200: + description: "OK" + 201: + description: "Created" + 500: + description: "Internal server error" + delete: + tags: + - "Geospatial Data" + summary: "Delete geospatial data" + description: "Delete geospatial data for the given asset" + operationId: "deleteGeoDataByName" + produces: + - "application/json" + parameters: + - name: "assetName" + in: "path" + description: "Name of geospatial asset" + required: true + type: "string" + x-exportParamName: "AssetName" + responses: + 200: + description: "OK" + 404: + description: "Not found" + 500: + description: "Internal server error" +definitions: + AutomationStateList: + type: "object" + properties: + states: + type: "array" + items: + $ref: "#/definitions/AutomationState" + description: "List of automation states" + example: {} + AutomationState: + type: "object" + properties: + type: + type: "string" + description: "Automation type.
    Automation loop evaluates enabled automation\ + \ types once every second.
    \n

    Supported Types:

  • MOBILITY - Sends\ + \ Mobility events to Sanbox Controller when UE changes POA.
  • MOVEMENT\ + \ - Advances UEs along configured paths using previous position & velocity\ + \ as inputs.
  • POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller\ + \ when list of POAs in range changes.
  • NETWORK-CHARACTERISTICS-UPDATE\ + \ - Sends network characteristics update events to Sanbox Controller when\ + \ throughput values change." + enum: + - "MOBILITY" + - "MOVEMENT" + - "POAS-IN-RANGE" + - "NETWORK-CHARACTERISTICS-UPDATE" + active: + type: "boolean" + description: "Automation feature state" + example: + active: true + type: "MOBILITY" + GeoDataAssetList: + type: "object" + properties: + geoDataAssets: + type: "array" + items: + $ref: "#/definitions/GeoDataAsset" + description: "List of geospatial assets data" + example: {} + GeoDataAsset: + allOf: + - type: "object" + properties: + 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-4G" + - "POA-5G" + - "POA-WIFI" + - "EDGE" + - "FOG" + - "CLOUD" + - $ref: "#/definitions/GeoData" + description: "List of geospatial data" + GeoData: + type: "object" + properties: + location: + $ref: "#/definitions/Point" + radius: + type: "number" + description: "Optional - Radius (in meters) around the location" + path: + $ref: "#/definitions/LineString" + eopMode: + type: "string" + description: "End-of-Path mode:
  • LOOP: When path endpoint is reached, start\ + \ over from the beginning
  • REVERSE: When path endpoint is reached, return\ + \ on the reverse path" + enum: + - "LOOP" + - "REVERSE" + velocity: + type: "number" + description: "Speed of movement along path in m/s" + description: "Geographic data" + Point: + type: "object" + required: + - "type" + properties: + type: + type: "string" + description: "Must be Point" + enum: + - "Point" + coordinates: + type: "array" + description: "For a Point, coordinates MUST be an array of two decimal numbers;\ + \ longitude and latitude precisely in that order" + items: + type: "number" + externalDocs: + url: "https://tools.ietf.org/html/rfc7946" + description: "A single position in coordinate space (GeoJSON); a position is an\ + \ array of two numbers" + LineString: + type: "object" + required: + - "type" + properties: + type: + type: "string" + description: "Must be LineString" + enum: + - "LineString" + coordinates: + type: "array" + description: "For a LineString, coordinates is an array of two or more positions;\ + \ a position is an array of two decimal numbers (longitude and latitude\ + \ precisely in that order)" + items: + type: "array" + items: + type: "number" + externalDocs: + url: "https://tools.ietf.org/html/rfc7946" + description: "An array of two or more positions in coordinate space (GeoJSON);\ + \ a position is an array of two numbers" +responses: + Std200: + description: "OK" + Std201: + description: "Created" + Std202: + description: "Accepted" + Std204: + description: "No content" + Std304: + description: "Not modified" + Std400: + description: "Bad request" + Std401: + description: "Not authorized" + Std403: + description: "Forbidden" + Std404: + description: "Not found" + Std409: + description: "Conflict" + Std416: + description: "Requested range not satisfiable" + Std500: + description: "Internal server error" +externalDocs: + description: "GitHub Wiki" + url: "https://github.com/InterDigitalInc/AdvantEDGE/wiki" diff --git a/go-packages/meep-gis-engine-client/api_automation.go b/go-packages/meep-gis-engine-client/api_automation.go new file mode 100644 index 000000000..87d2e8f2d --- /dev/null +++ b/go-packages/meep-gis-engine-client/api_automation.go @@ -0,0 +1,288 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" +) + +// Linger please +var ( + _ context.Context +) + +type AutomationApiService service + +/* +AutomationApiService Get automation state +Get automation state for all automation types + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + +@return AutomationStateList +*/ +func (a *AutomationApiService) GetAutomationState(ctx context.Context) (AutomationStateList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AutomationStateList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/automation" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AutomationStateList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +AutomationApiService Get automation state +Get automation state for the given automation type + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param type_ Automation type.<br> Automation loop evaluates enabled automation types once every second.<br> <p>Supported Types: <li>MOVEMENT - Advances UEs along configured paths using previous position & velocity as inputs. <li>MOBILITY - Sends Mobility events to Sanbox Controller when UE changes POA. <li>POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller when list of POAs in range changes. <li>NETWORK-CHARACTERISTICS-UPDATE - Sends network characteristics update events to Sanbox Controller when throughput values change. + +@return AutomationState +*/ +func (a *AutomationApiService) GetAutomationStateByName(ctx context.Context, type_ string) (AutomationState, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AutomationState + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/automation/{type}" + localVarPath = strings.Replace(localVarPath, "{"+"type"+"}", fmt.Sprintf("%v", type_), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AutomationState + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +AutomationApiService Set automation state +Set automation state for the given automation type \\ + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param type_ Automation type.<br> Automation loop evaluates enabled automation types once every second.<br> <p>Supported Types: <li>MOBILITY - Sends Mobility events to Sanbox Controller when UE changes POA. <li>MOVEMENT - 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. <li>NETWORK-CHARACTERISTICS-UPDATE - Sends network characteristics update events to Sanbox Controller when throughput values change. + * @param run Automation state (e.g. true=running, false=stopped) + + +*/ +func (a *AutomationApiService) SetAutomationStateByName(ctx context.Context, type_ string, run bool) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/automation/{type}" + localVarPath = strings.Replace(localVarPath, "{"+"type"+"}", fmt.Sprintf("%v", type_), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + localVarQueryParams.Add("run", parameterToString(run, "")) + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} diff --git a/go-packages/meep-gis-engine-client/api_geospatial_data.go b/go-packages/meep-gis-engine-client/api_geospatial_data.go new file mode 100644 index 000000000..0ca814860 --- /dev/null +++ b/go-packages/meep-gis-engine-client/api_geospatial_data.go @@ -0,0 +1,390 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" + + "github.com/antihax/optional" +) + +// Linger please +var ( + _ context.Context +) + +type GeospatialDataApiService service + +/* +GeospatialDataApiService Delete geospatial data +Delete geospatial data for the given asset + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param assetName Name of geospatial asset + + +*/ +func (a *GeospatialDataApiService) DeleteGeoDataByName(ctx context.Context, assetName string) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/geodata/{assetName}" + localVarPath = strings.Replace(localVarPath, "{"+"assetName"+"}", fmt.Sprintf("%v", assetName), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +GeospatialDataApiService Get geospatial data +Get geospatial data for all assets present in database + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *GetAssetDataOpts - Optional Parameters: + * @param "AssetType" (optional.String) - Filter by asset type + * @param "SubType" (optional.String) - Filter by asset sub type + * @param "ExcludePath" (optional.String) - Exclude UE paths in response (default: false) + +@return GeoDataAssetList +*/ + +type GetAssetDataOpts struct { + AssetType optional.String + SubType optional.String + ExcludePath optional.String +} + +func (a *GeospatialDataApiService) GetAssetData(ctx context.Context, localVarOptionals *GetAssetDataOpts) (GeoDataAssetList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue GeoDataAssetList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/geodata" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.AssetType.IsSet() { + localVarQueryParams.Add("assetType", parameterToString(localVarOptionals.AssetType.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.SubType.IsSet() { + localVarQueryParams.Add("subType", parameterToString(localVarOptionals.SubType.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ExcludePath.IsSet() { + localVarQueryParams.Add("excludePath", parameterToString(localVarOptionals.ExcludePath.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v GeoDataAssetList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +GeospatialDataApiService Get geospatial data +Get geospatial data for the given asset + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param assetName Name of geospatial asset + * @param optional nil or *GetGeoDataByNameOpts - Optional Parameters: + * @param "ExcludePath" (optional.String) - Exclude UE paths in response (default: false) + +@return GeoDataAsset +*/ + +type GetGeoDataByNameOpts struct { + ExcludePath optional.String +} + +func (a *GeospatialDataApiService) GetGeoDataByName(ctx context.Context, assetName string, localVarOptionals *GetGeoDataByNameOpts) (GeoDataAsset, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue GeoDataAsset + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/geodata/{assetName}" + localVarPath = strings.Replace(localVarPath, "{"+"assetName"+"}", fmt.Sprintf("%v", assetName), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.ExcludePath.IsSet() { + localVarQueryParams.Add("excludePath", parameterToString(localVarOptionals.ExcludePath.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v GeoDataAsset + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +GeospatialDataApiService Create/Update geospatial data +Create/Update geospatial data for the given asset + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param assetName Name of geospatial asset + * @param geoData Geospatial data + + +*/ +func (a *GeospatialDataApiService) UpdateGeoDataByName(ctx context.Context, assetName string, geoData GeoDataAsset) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/geodata/{assetName}" + localVarPath = strings.Replace(localVarPath, "{"+"assetName"+"}", fmt.Sprintf("%v", assetName), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &geoData + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} diff --git a/go-packages/meep-gis-engine-client/client.go b/go-packages/meep-gis-engine-client/client.go new file mode 100644 index 000000000..13021ff40 --- /dev/null +++ b/go-packages/meep-gis-engine-client/client.go @@ -0,0 +1,482 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "mime/multipart" + "net/http" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" + + "golang.org/x/oauth2" +) + +var ( + jsonCheck = regexp.MustCompile("(?i:[application|text]/json)") + xmlCheck = regexp.MustCompile("(?i:[application|text]/xml)") +) + +// APIClient manages communication with the AdvantEDGE GIS Engine REST API API v1.0.0 +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services + + AutomationApi *AutomationApiService + + GeospatialDataApi *GeospatialDataApiService +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + + // API Services + c.AutomationApi = (*AutomationApiService)(&c.common) + c.GeospatialDataApi = (*GeospatialDataApiService)(&c.common) + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insenstive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.ToLower(a) == strings.ToLower(needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("Expected %s to be of type %s but received %s.", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +// parameterToString convert interface{} parameters to string, using a delimiter if format is provided. +func parameterToString(obj interface{}, collectionFormat string) string { + var delimiter string + + switch collectionFormat { + case "pipes": + delimiter = "|" + case "ssv": + delimiter = " " + case "tsv": + delimiter = "\t" + case "csv": + delimiter = "," + } + + if reflect.TypeOf(obj).Kind() == reflect.Slice { + return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") + } + + return fmt.Sprintf("%v", obj) +} + +// callAPI do the request. +func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { + return c.cfg.HTTPClient.Do(request) +} + +// Change base path to allow switching to mocks +func (c *APIClient) ChangeBasePath(path string) { + c.cfg.BasePath = path +} + +// prepareRequest build the request +func (c *APIClient) prepareRequest( + ctx context.Context, + path string, method string, + postBody interface{}, + headerParams map[string]string, + queryParams url.Values, + formParams url.Values, + fileName string, + fileBytes []byte) (localVarRequest *http.Request, err error) { + + var body *bytes.Buffer + + // Detect postBody type and post. + if postBody != nil { + contentType := headerParams["Content-Type"] + if contentType == "" { + contentType = detectContentType(postBody) + headerParams["Content-Type"] = contentType + } + + body, err = setBody(postBody, contentType) + if err != nil { + return nil, err + } + } + + // add form parameters and file if available. + if len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + if len(fileBytes) > 0 && fileName != "" { + w.Boundary() + //_, fileNm := filepath.Split(fileName) + part, err := w.CreateFormFile("file", filepath.Base(fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(fileBytes) + if err != nil { + return nil, err + } + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + } + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = query.Encode() + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers.Set(h, v) + } + localVarRequest.Header = headers + } + + // Override request host, if applicable + if c.cfg.Host != "" { + localVarRequest.Host = c.cfg.Host + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + // OAuth2 authentication + if tok, ok := ctx.Value(ContextOAuth2).(oauth2.TokenSource); ok { + // We were able to grab an oauth2 token from the context + var latestToken *oauth2.Token + if latestToken, err = tok.Token(); err != nil { + return nil, err + } + + latestToken.SetAuthHeader(localVarRequest) + } + + // Basic HTTP Authentication + if auth, ok := ctx.Value(ContextBasicAuth).(BasicAuth); ok { + localVarRequest.SetBasicAuth(auth.UserName, auth.Password) + } + + // AccessToken Authentication + if auth, ok := ctx.Value(ContextAccessToken).(string); ok { + localVarRequest.Header.Add("Authorization", "Bearer "+auth) + } + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } + + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if strings.Contains(contentType, "application/xml") { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } else if strings.Contains(contentType, "application/json") { + if err = json.Unmarshal(b, v); err != nil { + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(path) + if err != nil { + return err + } + defer file.Close() + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if jsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if xmlCheck.MatchString(contentType) { + xml.NewEncoder(bodyBuf).Encode(body) + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("Invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } + expires = now.Add(lifetime) + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericSwaggerError Provides access to the body, error and model on returned errors. +type GenericSwaggerError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericSwaggerError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericSwaggerError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericSwaggerError) Model() interface{} { + return e.model +} diff --git a/go-packages/meep-gis-engine-client/configuration.go b/go-packages/meep-gis-engine-client/configuration.go new file mode 100644 index 000000000..dd528e11a --- /dev/null +++ b/go-packages/meep-gis-engine-client/configuration.go @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "net/http" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextOAuth2 takes a oauth2.TokenSource as authentication for the request. + ContextOAuth2 = contextKey("token") + + // ContextBasicAuth takes BasicAuth as authentication for the request. + ContextBasicAuth = contextKey("basic") + + // ContextAccessToken takes a string oauth2 access token as authentication for the request. + ContextAccessToken = contextKey("accesstoken") + + // ContextAPIKey takes an APIKey as authentication for the request + ContextAPIKey = contextKey("apikey") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +type Configuration struct { + BasePath string `json:"basePath,omitempty"` + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + HTTPClient *http.Client +} + +func NewConfiguration() *Configuration { + cfg := &Configuration{ + BasePath: "https://localhost/gis/v1", + DefaultHeader: make(map[string]string), + UserAgent: "Swagger-Codegen/1.0.0/go", + } + return cfg +} + +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} diff --git a/go-packages/meep-gis-engine-client/docs/AutomationApi.md b/go-packages/meep-gis-engine-client/docs/AutomationApi.md new file mode 100644 index 000000000..a62a24b01 --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/AutomationApi.md @@ -0,0 +1,92 @@ +# \AutomationApi + +All URIs are relative to *https://localhost/gis/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**GetAutomationState**](AutomationApi.md#GetAutomationState) | **Get** /automation | Get automation state +[**GetAutomationStateByName**](AutomationApi.md#GetAutomationStateByName) | **Get** /automation/{type} | Get automation state +[**SetAutomationStateByName**](AutomationApi.md#SetAutomationStateByName) | **Post** /automation/{type} | Set automation state + + +# **GetAutomationState** +> AutomationStateList GetAutomationState(ctx, ) +Get automation state + +Get automation state for all automation types + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**AutomationStateList**](AutomationStateList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetAutomationStateByName** +> AutomationState GetAutomationStateByName(ctx, type_) +Get automation state + +Get automation state for the given automation type + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **type_** | **string**| Automation type.<br> Automation loop evaluates enabled automation types once every second.<br> <p>Supported Types: <li>MOVEMENT - Advances UEs along configured paths using previous position & velocity as inputs. <li>MOBILITY - Sends Mobility events to Sanbox Controller when UE changes POA. <li>POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller when list of POAs in range changes. <li>NETWORK-CHARACTERISTICS-UPDATE - Sends network characteristics update events to Sanbox Controller when throughput values change. | + +### Return type + +[**AutomationState**](AutomationState.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **SetAutomationStateByName** +> SetAutomationStateByName(ctx, type_, run) +Set automation state + +Set automation state for the given automation type \\ + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **type_** | **string**| Automation type.<br> Automation loop evaluates enabled automation types once every second.<br> <p>Supported Types: <li>MOBILITY - Sends Mobility events to Sanbox Controller when UE changes POA. <li>MOVEMENT - 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. <li>NETWORK-CHARACTERISTICS-UPDATE - Sends network characteristics update events to Sanbox Controller when throughput values change. | + **run** | **bool**| Automation state (e.g. true=running, false=stopped) | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-gis-engine-client/docs/AutomationState.md b/go-packages/meep-gis-engine-client/docs/AutomationState.md new file mode 100644 index 000000000..d60e96812 --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/AutomationState.md @@ -0,0 +1,11 @@ +# AutomationState + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type_** | **string** | Automation type.<br> Automation loop evaluates enabled automation types once every second.<br> <p>Supported Types: <li>MOBILITY - Sends Mobility events to Sanbox Controller when UE changes POA. <li>MOVEMENT - 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. <li>NETWORK-CHARACTERISTICS-UPDATE - Sends network characteristics update events to Sanbox Controller when throughput values change. | [optional] [default to null] +**Active** | **bool** | Automation feature state | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/docs/AutomationStateList.md b/go-packages/meep-gis-engine-client/docs/AutomationStateList.md new file mode 100644 index 000000000..a2398a5d2 --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/AutomationStateList.md @@ -0,0 +1,10 @@ +# AutomationStateList + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**States** | [**[]AutomationState**](AutomationState.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/docs/GeoData.md b/go-packages/meep-gis-engine-client/docs/GeoData.md new file mode 100644 index 000000000..347ea89ab --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/GeoData.md @@ -0,0 +1,14 @@ +# GeoData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Location** | [***Point**](Point.md) | | [optional] [default to null] +**Radius** | **float32** | Optional - Radius (in meters) around the location | [optional] [default to null] +**Path** | [***LineString**](LineString.md) | | [optional] [default to null] +**EopMode** | **string** | End-of-Path mode: <li>LOOP: When path endpoint is reached, start over from the beginning <li>REVERSE: When path endpoint is reached, return on the reverse path | [optional] [default to null] +**Velocity** | **float32** | Speed of movement along path in m/s | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/docs/GeoDataAsset.md b/go-packages/meep-gis-engine-client/docs/GeoDataAsset.md new file mode 100644 index 000000000..652713eaf --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/GeoDataAsset.md @@ -0,0 +1,17 @@ +# GeoDataAsset + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Location** | [***Point**](Point.md) | | [optional] [default to null] +**Radius** | **float32** | Optional - Radius (in meters) around the location | [optional] [default to null] +**Path** | [***LineString**](LineString.md) | | [optional] [default to null] +**EopMode** | **string** | End-of-Path mode: <li>LOOP: When path endpoint is reached, start over from the beginning <li>REVERSE: When path endpoint is reached, return on the reverse path | [optional] [default to null] +**Velocity** | **float32** | Speed of movement along path in m/s | [optional] [default to null] +**AssetName** | **string** | Name of geospatial asset | [optional] [default to null] +**AssetType** | **string** | Asset type | [optional] [default to null] +**SubType** | **string** | Asset sub-type | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/docs/GeoDataAssetList.md b/go-packages/meep-gis-engine-client/docs/GeoDataAssetList.md new file mode 100644 index 000000000..7a49e6874 --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/GeoDataAssetList.md @@ -0,0 +1,10 @@ +# GeoDataAssetList + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**GeoDataAssets** | [**[]GeoDataAsset**](GeoDataAsset.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md b/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md new file mode 100644 index 000000000..83f8057a7 --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md @@ -0,0 +1,143 @@ +# \GeospatialDataApi + +All URIs are relative to *https://localhost/gis/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**DeleteGeoDataByName**](GeospatialDataApi.md#DeleteGeoDataByName) | **Delete** /geodata/{assetName} | Delete geospatial data +[**GetAssetData**](GeospatialDataApi.md#GetAssetData) | **Get** /geodata | Get geospatial data +[**GetGeoDataByName**](GeospatialDataApi.md#GetGeoDataByName) | **Get** /geodata/{assetName} | Get geospatial data +[**UpdateGeoDataByName**](GeospatialDataApi.md#UpdateGeoDataByName) | **Post** /geodata/{assetName} | Create/Update geospatial data + + +# **DeleteGeoDataByName** +> DeleteGeoDataByName(ctx, assetName) +Delete geospatial data + +Delete geospatial data for the given asset + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **assetName** | **string**| Name of geospatial asset | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetAssetData** +> GeoDataAssetList GetAssetData(ctx, optional) +Get geospatial data + +Get geospatial data for all assets present in database + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***GetAssetDataOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a GetAssetDataOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **assetType** | **optional.String**| Filter by asset type | + **subType** | **optional.String**| Filter by asset sub type | + **excludePath** | **optional.String**| Exclude UE paths in response (default: false) | + +### Return type + +[**GeoDataAssetList**](GeoDataAssetList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetGeoDataByName** +> GeoDataAsset GetGeoDataByName(ctx, assetName, optional) +Get geospatial data + +Get geospatial data for the given asset + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **assetName** | **string**| Name of geospatial asset | + **optional** | ***GetGeoDataByNameOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a GetGeoDataByNameOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **excludePath** | **optional.String**| Exclude UE paths in response (default: false) | + +### Return type + +[**GeoDataAsset**](GeoDataAsset.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **UpdateGeoDataByName** +> UpdateGeoDataByName(ctx, assetName, geoData) +Create/Update geospatial data + +Create/Update geospatial data for the given asset + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **assetName** | **string**| Name of geospatial asset | + **geoData** | [**GeoDataAsset**](GeoDataAsset.md)| Geospatial data | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-gis-engine-client/docs/LineString.md b/go-packages/meep-gis-engine-client/docs/LineString.md new file mode 100644 index 000000000..60e4e8fdd --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/LineString.md @@ -0,0 +1,11 @@ +# LineString + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type_** | **string** | Must be LineString | [default to null] +**Coordinates** | [**[][]float32**](array.md) | For a LineString, coordinates is an array of two or more positions; a position is an array of two decimal numbers (longitude and latitude precisely in that order) | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/docs/Point.md b/go-packages/meep-gis-engine-client/docs/Point.md new file mode 100644 index 000000000..e61672bfe --- /dev/null +++ b/go-packages/meep-gis-engine-client/docs/Point.md @@ -0,0 +1,11 @@ +# Point + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type_** | **string** | Must be Point | [default to null] +**Coordinates** | **[]float32** | For a Point, coordinates MUST be an array of two decimal numbers; longitude and latitude precisely in that order | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-gis-engine-client/git_push.sh b/go-packages/meep-gis-engine-client/git_push.sh new file mode 100644 index 000000000..ae01b182a --- /dev/null +++ b/go-packages/meep-gis-engine-client/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/go-packages/meep-gis-engine-client/go.mod b/go-packages/meep-gis-engine-client/go.mod new file mode 100644 index 000000000..e8bb05cbc --- /dev/null +++ b/go-packages/meep-gis-engine-client/go.mod @@ -0,0 +1,8 @@ +module github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client + +go 1.12 + +require ( + github.com/antihax/optional v1.0.0 + golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d +) diff --git a/go-packages/meep-gis-engine-client/model_automation_state.go b/go-packages/meep-gis-engine-client/model_automation_state.go new file mode 100644 index 000000000..cd197e1e6 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_automation_state.go @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +type AutomationState struct { + // Automation type.
    Automation loop evaluates enabled automation types once every second.

    Supported Types:

  • MOBILITY - Sends Mobility events to Sanbox Controller when UE changes POA.
  • MOVEMENT - Advances UEs along configured paths using previous position & velocity as inputs.
  • POAS-IN-RANGE - Sends POAS-IN-RANGE events to Sanbox Controller when list of POAs in range changes.
  • NETWORK-CHARACTERISTICS-UPDATE - Sends network characteristics update events to Sanbox Controller when throughput values change. + Type_ string `json:"type,omitempty"` + // Automation feature state + Active bool `json:"active,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/model_automation_state_list.go b/go-packages/meep-gis-engine-client/model_automation_state_list.go new file mode 100644 index 000000000..846c87714 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_automation_state_list.go @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// List of automation states +type AutomationStateList struct { + States []AutomationState `json:"states,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/model_geo_data.go b/go-packages/meep-gis-engine-client/model_geo_data.go new file mode 100644 index 000000000..595ffa258 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_geo_data.go @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Geographic data +type GeoData struct { + Location *Point `json:"location,omitempty"` + // Optional - Radius (in meters) around the location + Radius float32 `json:"radius,omitempty"` + Path *LineString `json:"path,omitempty"` + // End-of-Path mode:

  • LOOP: When path endpoint is reached, start over from the beginning
  • REVERSE: When path endpoint is reached, return on the reverse path + EopMode string `json:"eopMode,omitempty"` + // Speed of movement along path in m/s + Velocity float32 `json:"velocity,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/model_geo_data_asset.go b/go-packages/meep-gis-engine-client/model_geo_data_asset.go new file mode 100644 index 000000000..3622d7ff6 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_geo_data_asset.go @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// List of geospatial data +type GeoDataAsset struct { + Location *Point `json:"location,omitempty"` + // Optional - Radius (in meters) around the location + Radius float32 `json:"radius,omitempty"` + Path *LineString `json:"path,omitempty"` + // End-of-Path mode:

  • LOOP: When path endpoint is reached, start over from the beginning
  • REVERSE: When path endpoint is reached, return on the reverse path + EopMode string `json:"eopMode,omitempty"` + // Speed of movement along path in m/s + Velocity float32 `json:"velocity,omitempty"` + // Name of geospatial asset + AssetName string `json:"assetName,omitempty"` + // Asset type + AssetType string `json:"assetType,omitempty"` + // Asset sub-type + SubType string `json:"subType,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/model_geo_data_asset_list.go b/go-packages/meep-gis-engine-client/model_geo_data_asset_list.go new file mode 100644 index 000000000..c6b4f19f4 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_geo_data_asset_list.go @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// List of geospatial assets data +type GeoDataAssetList struct { + GeoDataAssets []GeoDataAsset `json:"geoDataAssets,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/model_line_string.go b/go-packages/meep-gis-engine-client/model_line_string.go new file mode 100644 index 000000000..48d8d2544 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_line_string.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// An array of two or more positions in coordinate space (GeoJSON); a position is an array of two numbers +type LineString struct { + // Must be LineString + Type_ string `json:"type"` + // For a LineString, coordinates is an array of two or more positions; a position is an array of two decimal numbers (longitude and latitude precisely in that order) + Coordinates [][]float32 `json:"coordinates,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/model_point.go b/go-packages/meep-gis-engine-client/model_point.go new file mode 100644 index 000000000..e5b761a36 --- /dev/null +++ b/go-packages/meep-gis-engine-client/model_point.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// A single position in coordinate space (GeoJSON); a position is an array of two numbers +type Point struct { + // Must be Point + Type_ string `json:"type"` + // For a Point, coordinates MUST be an array of two decimal numbers; longitude and latitude precisely in that order + Coordinates []float32 `json:"coordinates,omitempty"` +} diff --git a/go-packages/meep-gis-engine-client/response.go b/go-packages/meep-gis-engine-client/response.go new file mode 100644 index 000000000..8061fcab0 --- /dev/null +++ b/go-packages/meep-gis-engine-client/response.go @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE GIS Engine REST API + * + * This API allows to control geo-spatial behavior and simulation.

    **Micro-service**
    [meep-gis-engine](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-gis-engine)

    **Type & Usage**
    Platform runtime interface to control geo-spatial behavior and simulation

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "net/http" +) + +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the swagger operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swo b/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swo new file mode 100644 index 0000000000000000000000000000000000000000..26136d21ae55274d8c01f541d13a05e36c5e55cf GIT binary patch literal 16384 zcmeI2Ym6IL6~~7_0Yd_PKtTeb8wY}I*5l0vDbbRYcpphzvJcj~3DqWDuE*EjX~#2@ zJ9pMuB@Gf!fhy7#kobTQ0)axMDyUxys*n(<5+8tqgm{#P3W)c&RqbF-K?11@p1AjLfM)<_{SKeysoOI}G8r9p0dV zYyZuhI=Jt^{%hBv(u;9}m1=X1yJ~vs*mR}sm3?mA&D$cVbcFEBzQa|^lby1qq*JyW zTezyieS0O~ZnNQ?Td_P>NzXCc-aqd!tC1;?DG)0Vs#f{nuBH8B`$p-)p8Rfh%gsxf zI++5Q0+|At0+|At0+|At0+|At0{=$}DE|iIeVFeKJ?FOme9_S7-}T>FeSLMP{Q05s zpAMB@)#V+1{dV0!($9TXEm_XupmB|0nzZ=U#0X-vZwN=fMH66Xd|pUS$|R0r!L3!SlNe;}P&F z@BnCoCb;}c!}ub&1lr&xunX)2S6^Wme*;g0KY(9>AA)a#uY-rdSHKnUS@3D_A@Bk4 zesCHrgZF?E_-oEE8lVD9@FwsE@R^rmTtI+HuovXOpI?T4!SBIi;1c*aI0FuX*MM8V zpI(Y_fGgk=U>fWOPu^e{zW_f6UjrAxJ)jNV2%de3VLS@H3NC|t!FQ14cocjR+z;*p zcLEbUg9Oae;3@DhxCAbOqhJzDfLj6C>G33KvccZDT&2QlE!Gt*2rWy9<_MEQh0Ntfhn<>7KnP>h93yU;_lgMq#|5#s{sb&)5~W9C2hBTKF@vMu`RA_&#l}Qcy1mchZdu_RYG=b zS406m+&o2QuZxuBmh+Q1MunqQ<;8VhY>-M9QrQNjQe~S9m98+PQ>th{tkm_CR{Cl* z#LX2;-?u%%uH8r9gQ@jUI%c$@1?Qn_B5TU^x2_a>LmUiLtHbXWg%0Dri69^Of+Yo4w4~!c9F;>CK3n6`<_$*#Xc#`&Ydp0& zvwD24E>+r#NXFoT4aDY9Aq6nXSUmVtVJ~h`Xv4o`i(7)k>h;`TWEjFTZXhrhy(Qll zvXG|+@)#)w&I(2=bS+lktfa?C#=_CRs&ChYT(d1vWRuaXbvdnW%p%7=r_9K*=hO&Y zzygxY6PNL;$O`(N5ms8o;(!N7{Dg~EP)`;S{-ug>L_gLNkqlO1N1_#Is9F6plu?Xg z@^pqV`kuaJb-)PP27^r*m6Bm7tRE@ehi;=@U_--zy;pjpq~>8hBlZBSaVIcK zA(`(8IDb?*uiXZIpLd0-ATE=yGcHJLmxe5@nhJ4 zsVZcyW4(zt*2h`B%iA;pdg*~AtU#RvbG~HzOB0!kNPtD$WWVl&;{5T%blu+Du zf_N~bYBRpT_!_R$%F4K6E9+h;%YCbsZNJQ$O(}vPI=QUP*RQat(H5rbi)1-n+p#-v z3JUvxA!K1yGWiJv484YvJJdz|%-7cg-}|y3Xbn*yP;oRBf>~H;Z3KS#|af_O9CO6c$JLJjNo< z;k}af4w507a7eou4XJ5UXf{GxGd2vG!EMtOu&4g|UWm9_XI=xA#{l6=K7O^*>ci$VN?1Lr>UxSC5;ZWv7T#u| z4!wZVxDe7%ht}|TZ5_6uwq07SYBbKo(j)9-yc95ukrn9v(|LW@>3s1WdY+RQrL^0t zSk`h0pr=|V>jNViJ0Q>wa-~kYV zI+zD@pbVbHzW*8U82B8x0M3I2@Otn%@Emdg4}p(@<6s(0f!*MDI}PKv;BoLlumbh~ z2HuPOz#J%mw}3Z;r?AKWCiocm2>38K3ig1T!4uf){}}uTJP0Tk@E7d!e*+!_UjknM zp9djW1c$(D!A;;s@N4Y%zYETSJHb1_4saFP{1H3^z6>sd4!8^0U<{Cc6_EX93S$p6Wx&YTIcy>`$hVDa0O<_L1A^JZ=E@#!Zt4Xs_ z>J-i5)5M59Nx8}#Wm0h^mEp|g=yz&oAE#amd)NB;w4t0E-eQvdsTrpd%ws|o29r3& zs5{y>ttFeT6L=rP7_K9ki;U%%&gRCFV2qv|A4s6}h7c!#M`(7Gk{f5eYSFlHJyx3X z7tvnIw)7?{(gj)G>lo2(hX?Y@+cZ9=5epD$-b>4FWr8I8l1h-g07k(swwC4O2Qq#= zUm}kwZhLWv%sUuiSx#R6-zJrq?E7#(qnWyP&73?1UJ@4RG-j4(SN){))*?mutSrx- tmZ2|O;#YmI+&YDxa_6lpr5%)N{rBbB^&`1A^W?u@|M^@y-XM@_{|B45=oA0| literal 0 HcmV?d00001 diff --git a/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swp b/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swp new file mode 100644 index 0000000000000000000000000000000000000000..d3f9edc6ea2bdaf9c4f386dd06dc52f34b1541bf GIT binary patch literal 20480 zcmeI2dyE}b8NkOP%F3%!(Z&RGxRrW$*?aG{m;h@F-R^GNg?3waw{5U3Wp?hlcL(Oq zOlRiqc2g=CQKJUr;UoHo5UvI|rrEqoM7Y=!jC`-dBOCdea@rqiPSrL|F=+-vf+YkiqnDkx8_GNKA z(1W@^sEV!<=k@i8eVW#_U+e0MTS;CT3me_0TXosnv8GTOte$r`jXvwe zD8i+Ppsj%|BYE#=dWWFq5}tQt)vhO9-IHT-PhI*!-U#+K^|3_{rkcN$#5c)c%E4w5 z@ojPZAQE$uvH<~0Z;S5fHNRQzqjl-cwkNJ5kmrar(~_flEoBtzNLf1@NI#|7q*<|A zEGOcpVpcU}*pnz6n^jFmM%SrRJ8}aUz8mCr@phvCV~ctoWgcPR=}cvfxm>$3wv@o& zd}&D|NT;?KT{=Szjqdw05K;4DDwHCoI9CUKWz#!$`GIHJ)qOeLbuH7-1JkifSNe{f zW6DuuIBx^#)l6H46TH28H8UGcq%^l9H%K5A!BvHcSyvt*syI{S9U-YyUS~n23$)28 zmDM7wRC-EQacbDb&Js(%w=jXt-$v7dRqb`pDuyeXzYn=4VojO;+=U`*h$e$7RnxDM z`I_$Th!h;_SthSsTSAjz6>+Y6}eIz5-0s!XbXlX^*}A@yhpGcO}JuO z_e_1#l0FqHOHklZ5py$42GkQ z^VRAm3}x7RgJP)Jy+N-^U;#MLvF~SM*G=IPl?!zHs3R>UiBu|DKYzCjP7? zLefN!SQD;5ZPms<>s~lV8N7;O4F6BRa%A^JK~PfYb-u}V5KnQnu2!o|d^)e&hO~%^ zWajtsk=Dx=bDfnp@N^?AAp@f*w(udBWl`~*nuv!JuJ?kv6M?KH(z5C~b-SGJE^3kB zgf473BmBq)#EhwohlR?UmR_MMZOM43*GA!5ECVIi7A3?wXst>s^=Mka`jL`*+iR*7 zbf{_Qdv~Lks(RF?MHavsw~!E_`|}v*le)-oGpVA^D_BYja~h3I;Chspng

    q)v89O8$rKl2EeWvQIllIq=;^*ic~o^0s`^-XuMyn zDE1ZmNL3jVQ>Gv0@=&|Enr_-+OB^v9R*zmRda7zrR^=PgW(9ECjB|NI-!SmV#GGm0ltAJWvQn7j8X;r@)_$C z=-VB&u0A(nx!CH{r>OD9;KHFcRuoZJ#y&Y48cjTA->C#MY;@E&5lu74>-}`ZVckWfgiLcF#I>uh7(L!E_6H zx$H^b4`Y{O^)(B0RNC0^_=M72T-q{g7=@blzF^9tRi*NcOc=EdSLQG-qi=qk7HV9T z@m*<{71I!wZddDSz*Pr(vYAJMMYd-8%Ctg>sA{&4Ol;V^bwX?(7#kZHofsJ&7n{e# z;O5bxk%^Jbqx@PY21YLvmyV1Mu{dJ$^hNGvU#ZRxo?tc+rdWceIi_S8);(saB5QWCfH8P%>{#kR^y z-Dq*fGlOt7Ow1sbqMEAA)R~!?qRwQWl10a>me@)uDf*?2BZI@E0YrdS_%Yx6nXXj&RqP~&Rq9L;&BerOV6xMv8ox}VrAdTJ|WW6lGUMBtK0GS zh0h1`R4vi!{QpPJrhS}g)%kx@e5QPibN=0MGt^-mw!mg6z&|Us&nusx_%LbevKx&mui`JmsnEQhroYQvS`ZF7-Qgu8$nA`Q_71 zZ(5tjjXg|qIxR+ygyMP`n%Ee!~GWO+0BB76t*Wcnk zYjh!U0r#rWDTiFYXcP>2uVG8dV!9W+IE3nLone_rKEAa{xh0!6-1KLr(&qKZ ztBIFPi?kCn^Rfp`m-O613cXpGmpv_prq~j@YFg#o4)l~c&s`{OpsLjI=VgyS$&HaG zcVGW|PdhsZ9PR4-&ka4B2@r^6|5GW>?~{;%ONI0U!C3>@ane-Lg46+dtzTn~%jCC>W~ z!*}5e;DZYeY=Xt`L(c#A!6)Hz=!XkoF+9#$|F>{ITm|dl9dH6Hf~OG3?Qk1h4{PBp zIL!I}NjL;5Cg6GQ`47V*@G$%mz6vS^U>yv?T37^6sr!Gp6YhX-!Cu%77sFC`4=jP_ zP9Qb`o`r|tAp9JD1~)(%4iO7*FWdv)hr3`6TnHzD(&t~BaRSXXJat3UaHr07LDS)W zW{6AAKpxW#P4r59dC>WWMqMw&cR^gt%y%E7T=XKofC=A<>y2(Gnt2^Ag5I>7mPi1h z1F_|vMfvhv&zUyMxH0FyVTr5YW+w6N#x;f4EPQ_24rLosM}}S%S${_UC#9x8cQcm$0IslFywpO^V9w?iGaa=`n<#l=i6#_H)IK zr{h?nP*QOw^M#qr7iF@LJ**Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + +## Overview +This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. + +- API version: 1.0.0 +- Package version: 1.0.0 +- Build package: io.swagger.codegen.languages.GoClientCodegen + +## Installation +Put the package under your project folder and add the following in import: +```golang +import "./client" +``` + +## Documentation for API Endpoints + +All URIs are relative to *https://localhost/platform-ctrl/v1* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*SandboxControlApi* | [**CreateSandbox**](docs/SandboxControlApi.md#createsandbox) | **Post** /sandboxes | Create a new sandbox +*SandboxControlApi* | [**CreateSandboxWithName**](docs/SandboxControlApi.md#createsandboxwithname) | **Post** /sandboxes/{name} | Create a new sandbox +*SandboxControlApi* | [**DeleteSandbox**](docs/SandboxControlApi.md#deletesandbox) | **Delete** /sandboxes/{name} | Delete a specific sandbox +*SandboxControlApi* | [**DeleteSandboxList**](docs/SandboxControlApi.md#deletesandboxlist) | **Delete** /sandboxes | Delete all active sandboxes +*SandboxControlApi* | [**GetSandbox**](docs/SandboxControlApi.md#getsandbox) | **Get** /sandboxes/{name} | Get a specific sandbox +*SandboxControlApi* | [**GetSandboxList**](docs/SandboxControlApi.md#getsandboxlist) | **Get** /sandboxes | Get all active sandboxes +*ScenarioConfigurationApi* | [**CreateScenario**](docs/ScenarioConfigurationApi.md#createscenario) | **Post** /scenarios/{name} | Add a scenario +*ScenarioConfigurationApi* | [**DeleteScenario**](docs/ScenarioConfigurationApi.md#deletescenario) | **Delete** /scenarios/{name} | Delete a scenario +*ScenarioConfigurationApi* | [**DeleteScenarioList**](docs/ScenarioConfigurationApi.md#deletescenariolist) | **Delete** /scenarios | Delete all scenarios +*ScenarioConfigurationApi* | [**GetScenario**](docs/ScenarioConfigurationApi.md#getscenario) | **Get** /scenarios/{name} | Get a specific scenario +*ScenarioConfigurationApi* | [**GetScenarioList**](docs/ScenarioConfigurationApi.md#getscenariolist) | **Get** /scenarios | Get all scenarios +*ScenarioConfigurationApi* | [**SetScenario**](docs/ScenarioConfigurationApi.md#setscenario) | **Put** /scenarios/{name} | Update a scenario +*UserAuthenticationApi* | [**Authorize**](docs/UserAuthenticationApi.md#authorize) | **Get** /authorize | OAuth authorization response endpoint +*UserAuthenticationApi* | [**LoginOAuth**](docs/UserAuthenticationApi.md#loginoauth) | **Get** /login | Initiate OAuth login procedure +*UserAuthenticationApi* | [**LoginUser**](docs/UserAuthenticationApi.md#loginuser) | **Post** /login | Start a session +*UserAuthenticationApi* | [**LogoutUser**](docs/UserAuthenticationApi.md#logoutuser) | **Get** /logout | Terminate a session +*UserAuthenticationApi* | [**TriggerWatchdog**](docs/UserAuthenticationApi.md#triggerwatchdog) | **Post** /watchdog | Send heartbeat to watchdog + + +## Documentation For Models + + - [CellularDomainConfig](docs/CellularDomainConfig.md) + - [CellularPoaConfig](docs/CellularPoaConfig.md) + - [CpuConfig](docs/CpuConfig.md) + - [Deployment](docs/Deployment.md) + - [Domain](docs/Domain.md) + - [EgressService](docs/EgressService.md) + - [ExternalConfig](docs/ExternalConfig.md) + - [GeoData](docs/GeoData.md) + - [GpuConfig](docs/GpuConfig.md) + - [IngressService](docs/IngressService.md) + - [LineString](docs/LineString.md) + - [MemoryConfig](docs/MemoryConfig.md) + - [NetworkCharacteristics](docs/NetworkCharacteristics.md) + - [NetworkLocation](docs/NetworkLocation.md) + - [PhysicalLocation](docs/PhysicalLocation.md) + - [Poa4GConfig](docs/Poa4GConfig.md) + - [Poa5GConfig](docs/Poa5GConfig.md) + - [PoaWifiConfig](docs/PoaWifiConfig.md) + - [Point](docs/Point.md) + - [Process](docs/Process.md) + - [Sandbox](docs/Sandbox.md) + - [SandboxConfig](docs/SandboxConfig.md) + - [SandboxList](docs/SandboxList.md) + - [Scenario](docs/Scenario.md) + - [ScenarioConfig](docs/ScenarioConfig.md) + - [ScenarioList](docs/ScenarioList.md) + - [ServiceConfig](docs/ServiceConfig.md) + - [ServicePort](docs/ServicePort.md) + - [Zone](docs/Zone.md) + + +## Documentation For Authorization + Endpoints do not require authorization. + + +## Author + +AdvantEDGE@InterDigital.com + diff --git a/go-packages/meep-platform-ctrl-client/api/swagger.yaml b/go-packages/meep-platform-ctrl-client/api/swagger.yaml new file mode 100644 index 000000000..4c24f1bbe --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/api/swagger.yaml @@ -0,0 +1,1148 @@ +--- +swagger: "2.0" +info: + description: "This API is the main Platform Controller API for scenario configuration\ + \ & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)\ + \

    **Type & Usage**
    Platform main interface used by controller software to\ + \ configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API\ + \ details available at _your-AdvantEDGE-ip-address/api_" + version: "1.0.0" + title: "AdvantEDGE Platform Controller REST API" + contact: + name: "InterDigital AdvantEDGE Support" + email: "AdvantEDGE@InterDigital.com" + license: + name: "Apache 2.0" + url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" +basePath: "/platform-ctrl/v1" +tags: +- name: "Scenario Configuration" +- name: "Sandbox Control" +- name: "User Authentication" +consumes: +- "application/json" +produces: +- "application/json" +paths: + /login: + get: + tags: + - "User Authentication" + summary: "Initiate OAuth login procedure" + description: "Start OAuth login procedure with provider" + operationId: "loginOAuth" + produces: + - "application/json" + parameters: + - name: "provider" + in: "query" + description: "Oauth provider" + required: false + type: "string" + enum: + - "github" + - "gitlab" + x-exportParamName: "Provider" + x-optionalDataType: "String" + responses: + 302: + description: "Found" + post: + tags: + - "User Authentication" + summary: "Start a session" + description: "Start a session after authenticating user" + operationId: "loginUser" + consumes: + - "application/x-www-form-urlencoded" + produces: + - "application/json" + parameters: + - name: "username" + in: "formData" + description: "User Name" + required: false + type: "string" + x-exportParamName: "Username" + x-optionalDataType: "String" + - name: "password" + in: "formData" + description: "User Password" + required: false + type: "string" + x-exportParamName: "Password" + x-optionalDataType: "String" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/Sandbox" + 401: + description: "Unauthorized" + /logout: + get: + tags: + - "User Authentication" + summary: "Terminate a session" + description: "Terminate a session" + operationId: "logoutUser" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + 401: + description: "Unauthorized" + /authorize: + get: + tags: + - "User Authentication" + summary: "OAuth authorization response endpoint" + description: "Redirect URI endpoint for OAuth authorization responses. Starts\ + \ a user session." + operationId: "authorize" + produces: + - "application/json" + parameters: + - name: "code" + in: "query" + description: "Temporary authorization code" + required: false + type: "string" + x-exportParamName: "Code" + x-optionalDataType: "String" + - name: "state" + in: "query" + description: "User-provided random state" + required: false + type: "string" + x-exportParamName: "State" + x-optionalDataType: "String" + responses: + 302: + description: "Found" + /watchdog: + post: + tags: + - "User Authentication" + summary: "Send heartbeat to watchdog" + description: "Send heartbeat to watchdog to keep session alive" + operationId: "triggerWatchdog" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + 401: + description: "Unauthorized" + /scenarios: + get: + tags: + - "Scenario Configuration" + summary: "Get all scenarios" + description: "Returns all scenarios from the platform scenario store" + operationId: "getScenarioList" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/ScenarioList" + 404: + description: "Not found" + delete: + tags: + - "Scenario Configuration" + summary: "Delete all scenarios" + description: "Delete all scenarios present in the platform scenario store" + operationId: "deleteScenarioList" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + 404: + description: "Not found" + /scenarios/{name}: + get: + tags: + - "Scenario Configuration" + summary: "Get a specific scenario" + description: "Get a scenario by name from the platform scenario store" + operationId: "getScenario" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Scenario name" + required: true + type: "string" + x-exportParamName: "Name" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/Scenario" + 400: + description: "Bad request" + 404: + description: "Not found" + post: + tags: + - "Scenario Configuration" + summary: "Add a scenario" + description: "Add a scenario to the platform scenario store" + operationId: "createScenario" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Scenario name" + required: true + type: "string" + x-exportParamName: "Name" + - in: "body" + name: "scenario" + description: "Scenario" + required: true + schema: + $ref: "#/definitions/Scenario" + x-exportParamName: "Scenario" + responses: + 200: + description: "OK" + 400: + description: "Bad request" + 404: + description: "Not found" + put: + tags: + - "Scenario Configuration" + summary: "Update a scenario" + description: "Update a scenario by name in the platform scenario store" + operationId: "setScenario" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Scenario name" + required: true + type: "string" + x-exportParamName: "Name" + - in: "body" + name: "scenario" + description: "Scenario to add to MEEP store" + required: true + schema: + $ref: "#/definitions/Scenario" + x-exportParamName: "Scenario" + responses: + 200: + description: "OK" + 400: + description: "Bad request" + 404: + description: "Not found" + delete: + tags: + - "Scenario Configuration" + summary: "Delete a scenario" + description: "Delete a scenario by name from the platform scenario store" + operationId: "deleteScenario" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Scenario name" + required: true + type: "string" + x-exportParamName: "Name" + responses: + 200: + description: "OK" + 400: + description: "Bad request" + 404: + description: "Not found" + /sandboxes: + get: + tags: + - "Sandbox Control" + summary: "Get all active sandboxes" + description: "Returns a list of all active sandboxes" + operationId: "getSandboxList" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/SandboxList" + 404: + description: "Not found" + post: + tags: + - "Sandbox Control" + summary: "Create a new sandbox" + description: "Create a new sandbox with a server-generated name" + operationId: "createSandbox" + produces: + - "application/json" + parameters: + - in: "body" + name: "config" + description: "Sandbox configuration information" + required: true + schema: + $ref: "#/definitions/SandboxConfig" + x-exportParamName: "Config" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/Sandbox" + 400: + description: "Bad request" + 404: + description: "Not found" + delete: + tags: + - "Sandbox Control" + summary: "Delete all active sandboxes" + description: "Delete all active sandboxes" + operationId: "deleteSandboxList" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + 404: + description: "Not found" + /sandboxes/{name}: + get: + tags: + - "Sandbox Control" + summary: "Get a specific sandbox" + description: "Get sandbox information for provided sandbox name" + operationId: "getSandbox" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Sandbox name" + required: true + type: "string" + x-exportParamName: "Name" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/Sandbox" + 400: + description: "Bad request" + 404: + description: "Not found" + post: + tags: + - "Sandbox Control" + summary: "Create a new sandbox" + description: "Create a new sandbox using provided name" + operationId: "createSandboxWithName" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Sandbox name" + required: true + type: "string" + x-exportParamName: "Name" + - in: "body" + name: "config" + description: "Sandbox configuration information" + required: true + schema: + $ref: "#/definitions/SandboxConfig" + x-exportParamName: "Config" + responses: + 200: + description: "OK" + 400: + description: "Bad request" + 404: + description: "Already exists" + delete: + tags: + - "Sandbox Control" + summary: "Delete a specific sandbox" + description: "Delete the sandbox with the provided name" + operationId: "deleteSandbox" + produces: + - "application/json" + parameters: + - name: "name" + in: "path" + description: "Sandbox name" + required: true + type: "string" + x-exportParamName: "Name" + responses: + 200: + description: "OK" + 400: + description: "Bad request" + 404: + description: "Not found" +definitions: + Sandbox: + type: "object" + properties: + name: + type: "string" + description: "Sandbox name" + description: "Sandbox object" + example: {} + ScenarioList: + type: "object" + properties: + scenarios: + type: "array" + items: + $ref: "#/definitions/Scenario" + description: "Scenario list" + example: {} + Scenario: + type: "object" + properties: + version: + type: "string" + description: "Scenario version" + id: + type: "string" + description: "Unique scenario ID" + name: + type: "string" + description: "Unique scenario name" + description: + type: "string" + description: "User description of the scenario." + config: + $ref: "#/definitions/ScenarioConfig" + deployment: + $ref: "#/definitions/Deployment" + description: "Scenario object" + example: {} + ScenarioConfig: + type: "object" + properties: + visualization: + type: "string" + description: "Visualization configuration" + other: + type: "string" + description: "Other scenario configuration" + description: "Scenario configuration" + example: + visualization: "visualization" + other: "other" + Deployment: + type: "object" + properties: + netChar: + $ref: "#/definitions/NetworkCharacteristics" + interDomainLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latency" + interDomainLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation" + interDomainThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl\ + \ and throughputDl" + interDomainPacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss" + meta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + userMeta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + domains: + type: "array" + items: + $ref: "#/definitions/Domain" + description: "Network deployment object" + example: {} + NetworkCharacteristics: + type: "object" + properties: + latency: + type: "integer" + description: "Latency in ms" + latencyVariation: + type: "integer" + description: "Latency variation in ms" + latencyDistribution: + type: "string" + description: "Latency distribution. Can only be set in the Scenario Deployment\ + \ network characteristics, ignored otherwise. Latency distribution is set\ + \ for the whole network and applied to every end-to-end traffic flows. Default\ + \ value is 'Normal' distribution." + enum: + - "Normal" + - "Pareto" + - "Paretonormal" + - "Uniform" + throughput: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by throughputUl\ + \ and throughputDl" + throughputDl: + type: "integer" + description: "Downlink throughput limit in Mbps" + throughputUl: + type: "integer" + description: "Uplink throughput limit in Mbps" + packetLoss: + type: "number" + format: "double" + description: "Packet loss percentage" + description: "Network characteristics object" + example: {} + Domain: + type: "object" + properties: + id: + type: "string" + description: "Unique domain ID" + name: + type: "string" + description: "Domain name" + type: + type: "string" + description: "Domain type" + enum: + - "OPERATOR" + - "OPERATOR-CELLULAR" + - "PUBLIC" + netChar: + $ref: "#/definitions/NetworkCharacteristics" + interZoneLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latency" + interZoneLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation" + interZoneThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl\ + \ and throughputDl" + interZonePacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss" + meta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + userMeta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + cellularDomainConfig: + $ref: "#/definitions/CellularDomainConfig" + zones: + type: "array" + items: + $ref: "#/definitions/Zone" + description: "Operator domain object" + example: {} + CellularDomainConfig: + type: "object" + properties: + mnc: + type: "string" + description: "Mobile Network Code part of PLMN identity as defined in ETSI\ + \ TS 136 413" + mcc: + type: "string" + description: "Mobile Country Code part of PLMN identity as defined in ETSI\ + \ TS 136 413" + defaultCellId: + type: "string" + description: "The E-UTRAN Cell Identity as defined in ETSI TS 136 413 if no\ + \ cellId is defined for the cell or if not applicable" + description: "Cellular domain configuration information" + example: {} + Zone: + type: "object" + properties: + id: + type: "string" + description: "Unique zone ID" + name: + type: "string" + description: "Zone name" + type: + type: "string" + description: "Zone type" + enum: + - "ZONE" + - "COMMON" + netChar: + $ref: "#/definitions/NetworkCharacteristics" + interFogLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interFogLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interFogThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interFogPacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interEdgeLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interEdgeLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interEdgeThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + interEdgePacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.3.0, no longer supported" + edgeFogLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, replaced by netChar latency" + edgeFogLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, replaced by netChar latencyVariation" + edgeFogThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.3.0, replaced by netChar throughput" + edgeFogPacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.3.0, replaced by netChar packetLoss" + meta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + userMeta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + networkLocations: + type: "array" + items: + $ref: "#/definitions/NetworkLocation" + description: "Logical zone (MEC network) object" + example: {} + NetworkLocation: + type: "object" + properties: + id: + type: "string" + description: "Unique network location ID" + name: + type: "string" + description: "Network location name" + type: + type: "string" + description: "Network location type" + enum: + - "POA" + - "POA-4G" + - "POA-5G" + - "POA-WIFI" + - "DEFAULT" + netChar: + $ref: "#/definitions/NetworkCharacteristics" + terminalLinkLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latency" + terminalLinkLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation" + terminalLinkThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl\ + \ and throughputDl" + terminalLinkPacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss" + meta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + userMeta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + cellularPoaConfig: + $ref: "#/definitions/CellularPoaConfig" + poa4GConfig: + $ref: "#/definitions/Poa4GConfig" + poa5GConfig: + $ref: "#/definitions/Poa5GConfig" + poaWifiConfig: + $ref: "#/definitions/PoaWifiConfig" + geoData: + $ref: "#/definitions/GeoData" + physicalLocations: + type: "array" + items: + $ref: "#/definitions/PhysicalLocation" + description: "Logical network location object" + example: {} + CellularPoaConfig: + type: "object" + properties: + cellId: + type: "string" + description: "The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including\ + \ the ID of the eNB serving the cell" + description: "**DEPRECATED** As of release 1.5.1, renamed to poa4GConfig" + Poa4GConfig: + type: "object" + properties: + cellId: + type: "string" + description: "The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including\ + \ the ID of the eNB serving the cell" + description: "Cellular 4G POA configuration information" + Poa5GConfig: + type: "object" + properties: + cellId: + type: "string" + description: "The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including\ + \ the ID of the NR serving the cell" + description: "Cellular 5G POA configuration information" + PoaWifiConfig: + type: "object" + properties: + macId: + type: "string" + description: "WIFI POA MAC Address" + description: "WIFI POA configuration information" + GeoData: + type: "object" + properties: + location: + $ref: "#/definitions/Point" + radius: + type: "number" + description: "Optional - Radius (in meters) around the location" + path: + $ref: "#/definitions/LineString" + eopMode: + type: "string" + description: "End-of-Path mode:

  • LOOP: When path endpoint is reached, start\ + \ over from the beginning
  • REVERSE: When path endpoint is reached, return\ + \ on the reverse path" + enum: + - "LOOP" + - "REVERSE" + velocity: + type: "number" + description: "Speed of movement along path in m/s" + description: "Geographic data" + Point: + type: "object" + required: + - "type" + properties: + type: + type: "string" + description: "Must be Point" + enum: + - "Point" + coordinates: + type: "array" + description: "For a Point, coordinates MUST be an array of two decimal numbers;\ + \ longitude and latitude precisely in that order" + items: + type: "number" + externalDocs: + url: "https://tools.ietf.org/html/rfc7946" + description: "A single position in coordinate space (GeoJSON); a position is an\ + \ array of two numbers" + LineString: + type: "object" + required: + - "type" + properties: + type: + type: "string" + description: "Must be LineString" + enum: + - "LineString" + coordinates: + type: "array" + description: "For a LineString, coordinates is an array of two or more positions;\ + \ a position is an array of two decimal numbers (longitude and latitude\ + \ precisely in that order)" + items: + type: "array" + items: + type: "number" + externalDocs: + url: "https://tools.ietf.org/html/rfc7946" + description: "An array of two or more positions in coordinate space (GeoJSON);\ + \ a position is an array of two numbers" + PhysicalLocation: + type: "object" + properties: + id: + type: "string" + description: "Unique physical location ID" + name: + type: "string" + description: "Physical location name" + type: + type: "string" + description: "Physical location type" + enum: + - "UE" + - "FOG" + - "EDGE" + - "CN" + - "DC" + isExternal: + type: "boolean" + description: "true: Physical location is external to MEEP\nfalse: Physical\ + \ location is internal to MEEP" + geoData: + $ref: "#/definitions/GeoData" + networkLocationsInRange: + type: "array" + items: + type: "string" + description: "Names of network locations within range of physical location" + connected: + type: "boolean" + description: "true: Physical location has network connectivity\nfalse: Physical\ + \ location has no network connectivity" + wireless: + type: "boolean" + description: "true: Physical location uses a wireless connection\nfalse: Physical\ + \ location uses a wired connection" + wirelessType: + type: "string" + description: "Prioritized, comma-separated list of supported wireless connection\ + \ types.\nDefault priority if not specififed is 'wifi,5g,4g,other'.\nWireless\ + \ connection types:\n- 4g\n- 5g\n- wifi\n- other" + meta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + userMeta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + processes: + type: "array" + items: + $ref: "#/definitions/Process" + netChar: + $ref: "#/definitions/NetworkCharacteristics" + linkLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latency" + linkLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation" + linkThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl\ + \ and throughputDl" + linkPacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss" + macId: + type: "string" + description: "Physical location MAC Address" + description: "Physical location object" + example: {} + Process: + type: "object" + properties: + id: + type: "string" + description: "Unique process ID" + name: + type: "string" + description: "Process name" + type: + type: "string" + description: "Process type" + enum: + - "UE-APP" + - "EDGE-APP" + - "MEC-SVC" + - "CLOUD-APP" + isExternal: + type: "boolean" + description: "true: process is external to MEEP\nfalse: process is internal\ + \ to MEEP" + image: + type: "string" + description: "Docker image to deploy inside MEEP" + environment: + type: "string" + description: "Environment variables using the format NAME=\"value\",NAME=\"\ + value\",NAME=\"value\"" + commandArguments: + type: "string" + description: "Arguments to command executable" + commandExe: + type: "string" + description: "Executable to invoke at container start up" + serviceConfig: + $ref: "#/definitions/ServiceConfig" + gpuConfig: + $ref: "#/definitions/GpuConfig" + memoryConfig: + $ref: "#/definitions/MemoryConfig" + cpuConfig: + $ref: "#/definitions/CpuConfig" + externalConfig: + $ref: "#/definitions/ExternalConfig" + status: + type: "string" + description: "Process status" + userChartLocation: + type: "string" + description: "Chart location for the deployment of the chart provided by the\ + \ user" + userChartAlternateValues: + type: "string" + description: "Chart values.yaml file location for the deployment of the chart\ + \ provided by the user" + userChartGroup: + type: "string" + description: "Chart supplemental information related to the group (service)" + meta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + userMeta: + type: "object" + description: "Key/Value Pair Map (string, string)" + additionalProperties: + type: "string" + netChar: + $ref: "#/definitions/NetworkCharacteristics" + appLatency: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latency" + appLatencyVariation: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation" + appThroughput: + type: "integer" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl\ + \ and throughputDl" + appPacketLoss: + type: "number" + format: "double" + description: "**DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss" + placementId: + type: "string" + description: "Identifier used for process placement in AdvantEDGE cluster" + description: "Application or service object" + example: {} + ServiceConfig: + type: "object" + properties: + name: + type: "string" + description: "Unique service name" + meSvcName: + type: "string" + description: "Multi-Edge service name, if any" + ports: + type: "array" + items: + $ref: "#/definitions/ServicePort" + description: "Service object" + example: {} + ServicePort: + type: "object" + properties: + protocol: + type: "string" + description: "Protocol that the application is using (TCP or UDP)" + port: + type: "integer" + description: "Port number that the service is listening on" + externalPort: + type: "integer" + description: "External port number on which to expose the application (30000\ + \ - 32767)
  • Only one application allowed per external port
  • Scenario\ + \ builder must configure to prevent conflicts\n" + description: "Service port object" + example: {} + GpuConfig: + type: "object" + properties: + type: + type: "string" + description: "Requested GPU type" + count: + type: "integer" + description: "Number of GPUs requested" + description: "GPU configuration object" + MemoryConfig: + type: "object" + properties: + min: + type: "integer" + description: "Minimum requested memory" + max: + type: "integer" + description: "Maximum requested memory" + description: "Memory configuration object" + CpuConfig: + type: "object" + properties: + min: + type: "number" + format: "float" + description: "Minimum requested CPU" + max: + type: "number" + format: "float" + description: "Maximum requested CPU" + description: "CPU configuration object" + ExternalConfig: + type: "object" + properties: + ingressServiceMap: + type: "array" + items: + $ref: "#/definitions/IngressService" + egressServiceMap: + type: "array" + items: + $ref: "#/definitions/EgressService" + description: "External Process configuration.\nNOTE: Only valid if 'isExternal'\ + \ is set." + example: {} + IngressService: + type: "object" + properties: + name: + type: "string" + description: "Service name (unique or multi-edge)" + port: + type: "integer" + description: "Internal service port number" + externalPort: + type: "integer" + description: "Externally-exposed unique service port in range (30000 - 32767)" + protocol: + type: "string" + description: "Service protocol (TCP or UDP)" + description: "Internal service exposed externally via specific port" + EgressService: + type: "object" + properties: + name: + type: "string" + description: "Service name" + meSvcName: + type: "string" + description: "Multi-Edge service name, if any" + ip: + type: "string" + description: "External node IP address" + port: + type: "integer" + description: "Service port number" + protocol: + type: "string" + description: "Service protocol (TCP or UDP)" + description: "External service exposed internally via specific port" + SandboxList: + type: "object" + properties: + sandboxes: + type: "array" + items: + $ref: "#/definitions/Sandbox" + description: "Sandbox list" + example: {} + SandboxConfig: + type: "object" + properties: + scenarioName: + type: "string" + description: "Name of scenario to activate in sandbox" + description: "Sandbox configuration object" + example: {} +responses: + Std200: + description: "OK" + Std201: + description: "Created" + Std202: + description: "Accepted" + Std204: + description: "No content" + Std304: + description: "Not modified" + Std400: + description: "Bad request" + Std401: + description: "Not authorized" + Std403: + description: "Forbidden" + Std404: + description: "Not found" + Std409: + description: "Conflict" + Std416: + description: "Requested range not satisfiable" + Std500: + description: "Internal server error" +externalDocs: + description: "GitHub Wiki" + url: "https://github.com/InterDigitalInc/AdvantEDGE/wiki" diff --git a/go-packages/meep-platform-ctrl-client/api_sandbox_control.go b/go-packages/meep-platform-ctrl-client/api_sandbox_control.go new file mode 100644 index 000000000..2741e2988 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/api_sandbox_control.go @@ -0,0 +1,515 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" +) + +// Linger please +var ( + _ context.Context +) + +type SandboxControlApiService service + +/* +SandboxControlApiService Create a new sandbox +Create a new sandbox with a server-generated name + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param config Sandbox configuration information + +@return Sandbox +*/ +func (a *SandboxControlApiService) CreateSandbox(ctx context.Context, config SandboxConfig) (Sandbox, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue Sandbox + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/sandboxes" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &config + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v Sandbox + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +SandboxControlApiService Create a new sandbox +Create a new sandbox using provided name + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Sandbox name + * @param config Sandbox configuration information + + +*/ +func (a *SandboxControlApiService) CreateSandboxWithName(ctx context.Context, name string, config SandboxConfig) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/sandboxes/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &config + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +SandboxControlApiService Delete a specific sandbox +Delete the sandbox with the provided name + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Sandbox name + + +*/ +func (a *SandboxControlApiService) DeleteSandbox(ctx context.Context, name string) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/sandboxes/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +SandboxControlApiService Delete all active sandboxes +Delete all active sandboxes + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + + +*/ +func (a *SandboxControlApiService) DeleteSandboxList(ctx context.Context) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/sandboxes" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +SandboxControlApiService Get a specific sandbox +Get sandbox information for provided sandbox name + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Sandbox name + +@return Sandbox +*/ +func (a *SandboxControlApiService) GetSandbox(ctx context.Context, name string) (Sandbox, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue Sandbox + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/sandboxes/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v Sandbox + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +SandboxControlApiService Get all active sandboxes +Returns a list of all active sandboxes + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + +@return SandboxList +*/ +func (a *SandboxControlApiService) GetSandboxList(ctx context.Context) (SandboxList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue SandboxList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/sandboxes" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v SandboxList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} diff --git a/go-packages/meep-platform-ctrl-client/api_scenario_configuration.go b/go-packages/meep-platform-ctrl-client/api_scenario_configuration.go new file mode 100644 index 000000000..c88c533d8 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/api_scenario_configuration.go @@ -0,0 +1,497 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" +) + +// Linger please +var ( + _ context.Context +) + +type ScenarioConfigurationApiService service + +/* +ScenarioConfigurationApiService Add a scenario +Add a scenario to the platform scenario store + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Scenario name + * @param scenario Scenario + + +*/ +func (a *ScenarioConfigurationApiService) CreateScenario(ctx context.Context, name string, scenario Scenario) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/scenarios/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &scenario + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +ScenarioConfigurationApiService Delete a scenario +Delete a scenario by name from the platform scenario store + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Scenario name + + +*/ +func (a *ScenarioConfigurationApiService) DeleteScenario(ctx context.Context, name string) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/scenarios/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +ScenarioConfigurationApiService Delete all scenarios +Delete all scenarios present in the platform scenario store + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + + +*/ +func (a *ScenarioConfigurationApiService) DeleteScenarioList(ctx context.Context) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/scenarios" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +ScenarioConfigurationApiService Get a specific scenario +Get a scenario by name from the platform scenario store + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Scenario name + +@return Scenario +*/ +func (a *ScenarioConfigurationApiService) GetScenario(ctx context.Context, name string) (Scenario, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue Scenario + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/scenarios/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v Scenario + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +ScenarioConfigurationApiService Get all scenarios +Returns all scenarios from the platform scenario store + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + +@return ScenarioList +*/ +func (a *ScenarioConfigurationApiService) GetScenarioList(ctx context.Context) (ScenarioList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue ScenarioList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/scenarios" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v ScenarioList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +ScenarioConfigurationApiService Update a scenario +Update a scenario by name in the platform scenario store + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param name Scenario name + * @param scenario Scenario to add to MEEP store + + +*/ +func (a *ScenarioConfigurationApiService) SetScenario(ctx context.Context, name string, scenario Scenario) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/scenarios/{name}" + localVarPath = strings.Replace(localVarPath, "{"+"name"+"}", fmt.Sprintf("%v", name), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &scenario + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} diff --git a/go-packages/meep-platform-ctrl-client/api_user_authentication.go b/go-packages/meep-platform-ctrl-client/api_user_authentication.go new file mode 100644 index 000000000..2ba945562 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/api_user_authentication.go @@ -0,0 +1,437 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "io/ioutil" + "net/http" + "net/url" + "strings" + + "github.com/antihax/optional" +) + +// Linger please +var ( + _ context.Context +) + +type UserAuthenticationApiService service + +/* +UserAuthenticationApiService OAuth authorization response endpoint +Redirect URI endpoint for OAuth authorization responses. Starts a user session. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *AuthorizeOpts - Optional Parameters: + * @param "Code" (optional.String) - Temporary authorization code + * @param "State" (optional.String) - User-provided random state + + +*/ + +type AuthorizeOpts struct { + Code optional.String + State optional.String +} + +func (a *UserAuthenticationApiService) Authorize(ctx context.Context, localVarOptionals *AuthorizeOpts) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/authorize" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.Code.IsSet() { + localVarQueryParams.Add("code", parameterToString(localVarOptionals.Code.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.State.IsSet() { + localVarQueryParams.Add("state", parameterToString(localVarOptionals.State.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +UserAuthenticationApiService Initiate OAuth login procedure +Start OAuth login procedure with provider + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *LoginOAuthOpts - Optional Parameters: + * @param "Provider" (optional.String) - Oauth provider + + +*/ + +type LoginOAuthOpts struct { + Provider optional.String +} + +func (a *UserAuthenticationApiService) LoginOAuth(ctx context.Context, localVarOptionals *LoginOAuthOpts) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/login" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.Provider.IsSet() { + localVarQueryParams.Add("provider", parameterToString(localVarOptionals.Provider.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +UserAuthenticationApiService Start a session +Start a session after authenticating user + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *LoginUserOpts - Optional Parameters: + * @param "Username" (optional.String) - User Name + * @param "Password" (optional.String) - User Password + +@return Sandbox +*/ + +type LoginUserOpts struct { + Username optional.String + Password optional.String +} + +func (a *UserAuthenticationApiService) LoginUser(ctx context.Context, localVarOptionals *LoginUserOpts) (Sandbox, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue Sandbox + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/login" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/x-www-form-urlencoded"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + if localVarOptionals != nil && localVarOptionals.Username.IsSet() { + localVarFormParams.Add("username", parameterToString(localVarOptionals.Username.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Password.IsSet() { + localVarFormParams.Add("password", parameterToString(localVarOptionals.Password.Value(), "")) + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v Sandbox + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UserAuthenticationApiService Terminate a session +Terminate a session + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + + +*/ +func (a *UserAuthenticationApiService) LogoutUser(ctx context.Context) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/logout" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +UserAuthenticationApiService Send heartbeat to watchdog +Send heartbeat to watchdog to keep session alive + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + + +*/ +func (a *UserAuthenticationApiService) TriggerWatchdog(ctx context.Context) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/watchdog" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} diff --git a/go-packages/meep-platform-ctrl-client/client.go b/go-packages/meep-platform-ctrl-client/client.go new file mode 100644 index 000000000..fd96475d5 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/client.go @@ -0,0 +1,485 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "mime/multipart" + "net/http" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" + + "golang.org/x/oauth2" +) + +var ( + jsonCheck = regexp.MustCompile("(?i:[application|text]/json)") + xmlCheck = regexp.MustCompile("(?i:[application|text]/xml)") +) + +// APIClient manages communication with the AdvantEDGE Platform Controller REST API API v1.0.0 +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services + + SandboxControlApi *SandboxControlApiService + + ScenarioConfigurationApi *ScenarioConfigurationApiService + + UserAuthenticationApi *UserAuthenticationApiService +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + + // API Services + c.SandboxControlApi = (*SandboxControlApiService)(&c.common) + c.ScenarioConfigurationApi = (*ScenarioConfigurationApiService)(&c.common) + c.UserAuthenticationApi = (*UserAuthenticationApiService)(&c.common) + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insenstive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.ToLower(a) == strings.ToLower(needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("Expected %s to be of type %s but received %s.", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +// parameterToString convert interface{} parameters to string, using a delimiter if format is provided. +func parameterToString(obj interface{}, collectionFormat string) string { + var delimiter string + + switch collectionFormat { + case "pipes": + delimiter = "|" + case "ssv": + delimiter = " " + case "tsv": + delimiter = "\t" + case "csv": + delimiter = "," + } + + if reflect.TypeOf(obj).Kind() == reflect.Slice { + return strings.Trim(strings.Replace(fmt.Sprint(obj), " ", delimiter, -1), "[]") + } + + return fmt.Sprintf("%v", obj) +} + +// callAPI do the request. +func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { + return c.cfg.HTTPClient.Do(request) +} + +// Change base path to allow switching to mocks +func (c *APIClient) ChangeBasePath(path string) { + c.cfg.BasePath = path +} + +// prepareRequest build the request +func (c *APIClient) prepareRequest( + ctx context.Context, + path string, method string, + postBody interface{}, + headerParams map[string]string, + queryParams url.Values, + formParams url.Values, + fileName string, + fileBytes []byte) (localVarRequest *http.Request, err error) { + + var body *bytes.Buffer + + // Detect postBody type and post. + if postBody != nil { + contentType := headerParams["Content-Type"] + if contentType == "" { + contentType = detectContentType(postBody) + headerParams["Content-Type"] = contentType + } + + body, err = setBody(postBody, contentType) + if err != nil { + return nil, err + } + } + + // add form parameters and file if available. + if len(formParams) > 0 || (len(fileBytes) > 0 && fileName != "") { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + if len(fileBytes) > 0 && fileName != "" { + w.Boundary() + //_, fileNm := filepath.Split(fileName) + part, err := w.CreateFormFile("file", filepath.Base(fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(fileBytes) + if err != nil { + return nil, err + } + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + } + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = query.Encode() + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers.Set(h, v) + } + localVarRequest.Header = headers + } + + // Override request host, if applicable + if c.cfg.Host != "" { + localVarRequest.Host = c.cfg.Host + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + // OAuth2 authentication + if tok, ok := ctx.Value(ContextOAuth2).(oauth2.TokenSource); ok { + // We were able to grab an oauth2 token from the context + var latestToken *oauth2.Token + if latestToken, err = tok.Token(); err != nil { + return nil, err + } + + latestToken.SetAuthHeader(localVarRequest) + } + + // Basic HTTP Authentication + if auth, ok := ctx.Value(ContextBasicAuth).(BasicAuth); ok { + localVarRequest.SetBasicAuth(auth.UserName, auth.Password) + } + + // AccessToken Authentication + if auth, ok := ctx.Value(ContextAccessToken).(string); ok { + localVarRequest.Header.Add("Authorization", "Bearer "+auth) + } + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } + + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if strings.Contains(contentType, "application/xml") { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } else if strings.Contains(contentType, "application/json") { + if err = json.Unmarshal(b, v); err != nil { + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(path) + if err != nil { + return err + } + defer file.Close() + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if jsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if xmlCheck.MatchString(contentType) { + xml.NewEncoder(bodyBuf).Encode(body) + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("Invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } + expires = now.Add(lifetime) + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericSwaggerError Provides access to the body, error and model on returned errors. +type GenericSwaggerError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericSwaggerError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericSwaggerError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericSwaggerError) Model() interface{} { + return e.model +} diff --git a/go-packages/meep-platform-ctrl-client/configuration.go b/go-packages/meep-platform-ctrl-client/configuration.go new file mode 100644 index 000000000..629a36089 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/configuration.go @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "net/http" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextOAuth2 takes a oauth2.TokenSource as authentication for the request. + ContextOAuth2 = contextKey("token") + + // ContextBasicAuth takes BasicAuth as authentication for the request. + ContextBasicAuth = contextKey("basic") + + // ContextAccessToken takes a string oauth2 access token as authentication for the request. + ContextAccessToken = contextKey("accesstoken") + + // ContextAPIKey takes an APIKey as authentication for the request + ContextAPIKey = contextKey("apikey") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +type Configuration struct { + BasePath string `json:"basePath,omitempty"` + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + HTTPClient *http.Client +} + +func NewConfiguration() *Configuration { + cfg := &Configuration{ + BasePath: "https://localhost/platform-ctrl/v1", + DefaultHeader: make(map[string]string), + UserAgent: "Swagger-Codegen/1.0.0/go", + } + return cfg +} + +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} diff --git a/go-packages/meep-platform-ctrl-client/docs/CellularDomainConfig.md b/go-packages/meep-platform-ctrl-client/docs/CellularDomainConfig.md new file mode 100644 index 000000000..5a5ed4c61 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/CellularDomainConfig.md @@ -0,0 +1,12 @@ +# CellularDomainConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Mnc** | **string** | Mobile Network Code part of PLMN identity as defined in ETSI TS 136 413 | [optional] [default to null] +**Mcc** | **string** | Mobile Country Code part of PLMN identity as defined in ETSI TS 136 413 | [optional] [default to null] +**DefaultCellId** | **string** | The E-UTRAN Cell Identity as defined in ETSI TS 136 413 if no cellId is defined for the cell or if not applicable | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/CellularPoaConfig.md b/go-packages/meep-platform-ctrl-client/docs/CellularPoaConfig.md new file mode 100644 index 000000000..e3ce64a2b --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/CellularPoaConfig.md @@ -0,0 +1,10 @@ +# CellularPoaConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CellId** | **string** | The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including the ID of the eNB serving the cell | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/CpuConfig.md b/go-packages/meep-platform-ctrl-client/docs/CpuConfig.md new file mode 100644 index 000000000..53428525e --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/CpuConfig.md @@ -0,0 +1,11 @@ +# CpuConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Min** | **float32** | Minimum requested CPU | [optional] [default to null] +**Max** | **float32** | Maximum requested CPU | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Deployment.md b/go-packages/meep-platform-ctrl-client/docs/Deployment.md new file mode 100644 index 000000000..2fa9f2c3c --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Deployment.md @@ -0,0 +1,17 @@ +# Deployment + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**NetChar** | [***NetworkCharacteristics**](NetworkCharacteristics.md) | | [optional] [default to null] +**InterDomainLatency** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latency | [optional] [default to null] +**InterDomainLatencyVariation** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation | [optional] [default to null] +**InterDomainThroughput** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl | [optional] [default to null] +**InterDomainPacketLoss** | **float64** | **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss | [optional] [default to null] +**Meta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**UserMeta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**Domains** | [**[]Domain**](Domain.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Domain.md b/go-packages/meep-platform-ctrl-client/docs/Domain.md new file mode 100644 index 000000000..6ab2d2b52 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Domain.md @@ -0,0 +1,21 @@ +# Domain + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique domain ID | [optional] [default to null] +**Name** | **string** | Domain name | [optional] [default to null] +**Type_** | **string** | Domain type | [optional] [default to null] +**NetChar** | [***NetworkCharacteristics**](NetworkCharacteristics.md) | | [optional] [default to null] +**InterZoneLatency** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latency | [optional] [default to null] +**InterZoneLatencyVariation** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation | [optional] [default to null] +**InterZoneThroughput** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl | [optional] [default to null] +**InterZonePacketLoss** | **float64** | **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss | [optional] [default to null] +**Meta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**UserMeta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**CellularDomainConfig** | [***CellularDomainConfig**](CellularDomainConfig.md) | | [optional] [default to null] +**Zones** | [**[]Zone**](Zone.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/EgressService.md b/go-packages/meep-platform-ctrl-client/docs/EgressService.md new file mode 100644 index 000000000..d345f03a9 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/EgressService.md @@ -0,0 +1,14 @@ +# EgressService + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Service name | [optional] [default to null] +**MeSvcName** | **string** | Multi-Edge service name, if any | [optional] [default to null] +**Ip** | **string** | External node IP address | [optional] [default to null] +**Port** | **int32** | Service port number | [optional] [default to null] +**Protocol** | **string** | Service protocol (TCP or UDP) | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/ExternalConfig.md b/go-packages/meep-platform-ctrl-client/docs/ExternalConfig.md new file mode 100644 index 000000000..c1b03f03f --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/ExternalConfig.md @@ -0,0 +1,11 @@ +# ExternalConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**IngressServiceMap** | [**[]IngressService**](IngressService.md) | | [optional] [default to null] +**EgressServiceMap** | [**[]EgressService**](EgressService.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/GeoData.md b/go-packages/meep-platform-ctrl-client/docs/GeoData.md new file mode 100644 index 000000000..347ea89ab --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/GeoData.md @@ -0,0 +1,14 @@ +# GeoData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Location** | [***Point**](Point.md) | | [optional] [default to null] +**Radius** | **float32** | Optional - Radius (in meters) around the location | [optional] [default to null] +**Path** | [***LineString**](LineString.md) | | [optional] [default to null] +**EopMode** | **string** | End-of-Path mode: <li>LOOP: When path endpoint is reached, start over from the beginning <li>REVERSE: When path endpoint is reached, return on the reverse path | [optional] [default to null] +**Velocity** | **float32** | Speed of movement along path in m/s | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/GpuConfig.md b/go-packages/meep-platform-ctrl-client/docs/GpuConfig.md new file mode 100644 index 000000000..e3817437a --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/GpuConfig.md @@ -0,0 +1,11 @@ +# GpuConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type_** | **string** | Requested GPU type | [optional] [default to null] +**Count** | **int32** | Number of GPUs requested | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/IngressService.md b/go-packages/meep-platform-ctrl-client/docs/IngressService.md new file mode 100644 index 000000000..6f4757714 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/IngressService.md @@ -0,0 +1,13 @@ +# IngressService + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Service name (unique or multi-edge) | [optional] [default to null] +**Port** | **int32** | Internal service port number | [optional] [default to null] +**ExternalPort** | **int32** | Externally-exposed unique service port in range (30000 - 32767) | [optional] [default to null] +**Protocol** | **string** | Service protocol (TCP or UDP) | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/LineString.md b/go-packages/meep-platform-ctrl-client/docs/LineString.md new file mode 100644 index 000000000..60e4e8fdd --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/LineString.md @@ -0,0 +1,11 @@ +# LineString + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type_** | **string** | Must be LineString | [default to null] +**Coordinates** | [**[][]float32**](array.md) | For a LineString, coordinates is an array of two or more positions; a position is an array of two decimal numbers (longitude and latitude precisely in that order) | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/MemoryConfig.md b/go-packages/meep-platform-ctrl-client/docs/MemoryConfig.md new file mode 100644 index 000000000..5848f8dea --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/MemoryConfig.md @@ -0,0 +1,11 @@ +# MemoryConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Min** | **int32** | Minimum requested memory | [optional] [default to null] +**Max** | **int32** | Maximum requested memory | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/NetworkCharacteristics.md b/go-packages/meep-platform-ctrl-client/docs/NetworkCharacteristics.md new file mode 100644 index 000000000..5dff7ff84 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/NetworkCharacteristics.md @@ -0,0 +1,16 @@ +# NetworkCharacteristics + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Latency** | **int32** | Latency in ms | [optional] [default to null] +**LatencyVariation** | **int32** | Latency variation in ms | [optional] [default to null] +**LatencyDistribution** | **string** | Latency distribution. Can only be set in the Scenario Deployment network characteristics, ignored otherwise. Latency distribution is set for the whole network and applied to every end-to-end traffic flows. Default value is 'Normal' distribution. | [optional] [default to null] +**Throughput** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by throughputUl and throughputDl | [optional] [default to null] +**ThroughputDl** | **int32** | Downlink throughput limit in Mbps | [optional] [default to null] +**ThroughputUl** | **int32** | Uplink throughput limit in Mbps | [optional] [default to null] +**PacketLoss** | **float64** | Packet loss percentage | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/NetworkLocation.md b/go-packages/meep-platform-ctrl-client/docs/NetworkLocation.md new file mode 100644 index 000000000..178d011db --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/NetworkLocation.md @@ -0,0 +1,25 @@ +# NetworkLocation + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique network location ID | [optional] [default to null] +**Name** | **string** | Network location name | [optional] [default to null] +**Type_** | **string** | Network location type | [optional] [default to null] +**NetChar** | [***NetworkCharacteristics**](NetworkCharacteristics.md) | | [optional] [default to null] +**TerminalLinkLatency** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latency | [optional] [default to null] +**TerminalLinkLatencyVariation** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation | [optional] [default to null] +**TerminalLinkThroughput** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl | [optional] [default to null] +**TerminalLinkPacketLoss** | **float64** | **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss | [optional] [default to null] +**Meta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**UserMeta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**CellularPoaConfig** | [***CellularPoaConfig**](CellularPoaConfig.md) | | [optional] [default to null] +**Poa4GConfig** | [***Poa4GConfig**](Poa4GConfig.md) | | [optional] [default to null] +**Poa5GConfig** | [***Poa5GConfig**](Poa5GConfig.md) | | [optional] [default to null] +**PoaWifiConfig** | [***PoaWifiConfig**](PoaWifiConfig.md) | | [optional] [default to null] +**GeoData** | [***GeoData**](GeoData.md) | | [optional] [default to null] +**PhysicalLocations** | [**[]PhysicalLocation**](PhysicalLocation.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/PhysicalLocation.md b/go-packages/meep-platform-ctrl-client/docs/PhysicalLocation.md new file mode 100644 index 000000000..604a03b60 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/PhysicalLocation.md @@ -0,0 +1,27 @@ +# PhysicalLocation + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique physical location ID | [optional] [default to null] +**Name** | **string** | Physical location name | [optional] [default to null] +**Type_** | **string** | Physical location type | [optional] [default to null] +**IsExternal** | **bool** | true: Physical location is external to MEEP false: Physical location is internal to MEEP | [optional] [default to null] +**GeoData** | [***GeoData**](GeoData.md) | | [optional] [default to null] +**NetworkLocationsInRange** | **[]string** | | [optional] [default to null] +**Connected** | **bool** | true: Physical location has network connectivity false: Physical location has no network connectivity | [optional] [default to null] +**Wireless** | **bool** | true: Physical location uses a wireless connection false: Physical location uses a wired connection | [optional] [default to null] +**WirelessType** | **string** | Prioritized, comma-separated list of supported wireless connection types. Default priority if not specififed is 'wifi,5g,4g,other'. Wireless connection types: - 4g - 5g - wifi - other | [optional] [default to null] +**Meta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**UserMeta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**Processes** | [**[]Process**](Process.md) | | [optional] [default to null] +**NetChar** | [***NetworkCharacteristics**](NetworkCharacteristics.md) | | [optional] [default to null] +**LinkLatency** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latency | [optional] [default to null] +**LinkLatencyVariation** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation | [optional] [default to null] +**LinkThroughput** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl | [optional] [default to null] +**LinkPacketLoss** | **float64** | **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss | [optional] [default to null] +**MacId** | **string** | Physical location MAC Address | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Poa4GConfig.md b/go-packages/meep-platform-ctrl-client/docs/Poa4GConfig.md new file mode 100644 index 000000000..b174bf2cf --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Poa4GConfig.md @@ -0,0 +1,10 @@ +# Poa4GConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CellId** | **string** | The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including the ID of the eNB serving the cell | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Poa5GConfig.md b/go-packages/meep-platform-ctrl-client/docs/Poa5GConfig.md new file mode 100644 index 000000000..a09a75344 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Poa5GConfig.md @@ -0,0 +1,10 @@ +# Poa5GConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CellId** | **string** | The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including the ID of the NR serving the cell | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/PoaWifiConfig.md b/go-packages/meep-platform-ctrl-client/docs/PoaWifiConfig.md new file mode 100644 index 000000000..8e3c08f6d --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/PoaWifiConfig.md @@ -0,0 +1,10 @@ +# PoaWifiConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MacId** | **string** | WIFI POA MAC Address | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Point.md b/go-packages/meep-platform-ctrl-client/docs/Point.md new file mode 100644 index 000000000..e61672bfe --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Point.md @@ -0,0 +1,11 @@ +# Point + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type_** | **string** | Must be Point | [default to null] +**Coordinates** | **[]float32** | For a Point, coordinates MUST be an array of two decimal numbers; longitude and latitude precisely in that order | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Process.md b/go-packages/meep-platform-ctrl-client/docs/Process.md new file mode 100644 index 000000000..560728073 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Process.md @@ -0,0 +1,34 @@ +# Process + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique process ID | [optional] [default to null] +**Name** | **string** | Process name | [optional] [default to null] +**Type_** | **string** | Process type | [optional] [default to null] +**IsExternal** | **bool** | true: process is external to MEEP false: process is internal to MEEP | [optional] [default to null] +**Image** | **string** | Docker image to deploy inside MEEP | [optional] [default to null] +**Environment** | **string** | Environment variables using the format NAME=\"value\",NAME=\"value\",NAME=\"value\" | [optional] [default to null] +**CommandArguments** | **string** | Arguments to command executable | [optional] [default to null] +**CommandExe** | **string** | Executable to invoke at container start up | [optional] [default to null] +**ServiceConfig** | [***ServiceConfig**](ServiceConfig.md) | | [optional] [default to null] +**GpuConfig** | [***GpuConfig**](GpuConfig.md) | | [optional] [default to null] +**MemoryConfig** | [***MemoryConfig**](MemoryConfig.md) | | [optional] [default to null] +**CpuConfig** | [***CpuConfig**](CpuConfig.md) | | [optional] [default to null] +**ExternalConfig** | [***ExternalConfig**](ExternalConfig.md) | | [optional] [default to null] +**Status** | **string** | Process status | [optional] [default to null] +**UserChartLocation** | **string** | Chart location for the deployment of the chart provided by the user | [optional] [default to null] +**UserChartAlternateValues** | **string** | Chart values.yaml file location for the deployment of the chart provided by the user | [optional] [default to null] +**UserChartGroup** | **string** | Chart supplemental information related to the group (service) | [optional] [default to null] +**Meta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**UserMeta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**NetChar** | [***NetworkCharacteristics**](NetworkCharacteristics.md) | | [optional] [default to null] +**AppLatency** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latency | [optional] [default to null] +**AppLatencyVariation** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation | [optional] [default to null] +**AppThroughput** | **int32** | **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl | [optional] [default to null] +**AppPacketLoss** | **float64** | **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss | [optional] [default to null] +**PlacementId** | **string** | Identifier used for process placement in AdvantEDGE cluster | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Sandbox.md b/go-packages/meep-platform-ctrl-client/docs/Sandbox.md new file mode 100644 index 000000000..30750a5df --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Sandbox.md @@ -0,0 +1,10 @@ +# Sandbox + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Sandbox name | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/SandboxConfig.md b/go-packages/meep-platform-ctrl-client/docs/SandboxConfig.md new file mode 100644 index 000000000..09c747e56 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/SandboxConfig.md @@ -0,0 +1,10 @@ +# SandboxConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ScenarioName** | **string** | Name of scenario to activate in sandbox | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/SandboxControlApi.md b/go-packages/meep-platform-ctrl-client/docs/SandboxControlApi.md new file mode 100644 index 000000000..cac3d9ad8 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/SandboxControlApi.md @@ -0,0 +1,175 @@ +# \SandboxControlApi + +All URIs are relative to *https://localhost/platform-ctrl/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateSandbox**](SandboxControlApi.md#CreateSandbox) | **Post** /sandboxes | Create a new sandbox +[**CreateSandboxWithName**](SandboxControlApi.md#CreateSandboxWithName) | **Post** /sandboxes/{name} | Create a new sandbox +[**DeleteSandbox**](SandboxControlApi.md#DeleteSandbox) | **Delete** /sandboxes/{name} | Delete a specific sandbox +[**DeleteSandboxList**](SandboxControlApi.md#DeleteSandboxList) | **Delete** /sandboxes | Delete all active sandboxes +[**GetSandbox**](SandboxControlApi.md#GetSandbox) | **Get** /sandboxes/{name} | Get a specific sandbox +[**GetSandboxList**](SandboxControlApi.md#GetSandboxList) | **Get** /sandboxes | Get all active sandboxes + + +# **CreateSandbox** +> Sandbox CreateSandbox(ctx, config) +Create a new sandbox + +Create a new sandbox with a server-generated name + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **config** | [**SandboxConfig**](SandboxConfig.md)| Sandbox configuration information | + +### Return type + +[**Sandbox**](Sandbox.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **CreateSandboxWithName** +> CreateSandboxWithName(ctx, name, config) +Create a new sandbox + +Create a new sandbox using provided name + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Sandbox name | + **config** | [**SandboxConfig**](SandboxConfig.md)| Sandbox configuration information | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DeleteSandbox** +> DeleteSandbox(ctx, name) +Delete a specific sandbox + +Delete the sandbox with the provided name + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Sandbox name | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DeleteSandboxList** +> DeleteSandboxList(ctx, ) +Delete all active sandboxes + +Delete all active sandboxes + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetSandbox** +> Sandbox GetSandbox(ctx, name) +Get a specific sandbox + +Get sandbox information for provided sandbox name + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Sandbox name | + +### Return type + +[**Sandbox**](Sandbox.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetSandboxList** +> SandboxList GetSandboxList(ctx, ) +Get all active sandboxes + +Returns a list of all active sandboxes + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**SandboxList**](SandboxList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-platform-ctrl-client/docs/SandboxList.md b/go-packages/meep-platform-ctrl-client/docs/SandboxList.md new file mode 100644 index 000000000..fd55857e9 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/SandboxList.md @@ -0,0 +1,10 @@ +# SandboxList + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Sandboxes** | [**[]Sandbox**](Sandbox.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/Scenario.md b/go-packages/meep-platform-ctrl-client/docs/Scenario.md new file mode 100644 index 000000000..79db22307 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Scenario.md @@ -0,0 +1,15 @@ +# Scenario + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Version** | **string** | Scenario version | [optional] [default to null] +**Id** | **string** | Unique scenario ID | [optional] [default to null] +**Name** | **string** | Unique scenario name | [optional] [default to null] +**Description** | **string** | User description of the scenario. | [optional] [default to null] +**Config** | [***ScenarioConfig**](ScenarioConfig.md) | | [optional] [default to null] +**Deployment** | [***Deployment**](Deployment.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/ScenarioConfig.md b/go-packages/meep-platform-ctrl-client/docs/ScenarioConfig.md new file mode 100644 index 000000000..0f6e1dbee --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/ScenarioConfig.md @@ -0,0 +1,11 @@ +# ScenarioConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Visualization** | **string** | Visualization configuration | [optional] [default to null] +**Other** | **string** | Other scenario configuration | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/ScenarioConfigurationApi.md b/go-packages/meep-platform-ctrl-client/docs/ScenarioConfigurationApi.md new file mode 100644 index 000000000..3dd2fcf8d --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/ScenarioConfigurationApi.md @@ -0,0 +1,176 @@ +# \ScenarioConfigurationApi + +All URIs are relative to *https://localhost/platform-ctrl/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CreateScenario**](ScenarioConfigurationApi.md#CreateScenario) | **Post** /scenarios/{name} | Add a scenario +[**DeleteScenario**](ScenarioConfigurationApi.md#DeleteScenario) | **Delete** /scenarios/{name} | Delete a scenario +[**DeleteScenarioList**](ScenarioConfigurationApi.md#DeleteScenarioList) | **Delete** /scenarios | Delete all scenarios +[**GetScenario**](ScenarioConfigurationApi.md#GetScenario) | **Get** /scenarios/{name} | Get a specific scenario +[**GetScenarioList**](ScenarioConfigurationApi.md#GetScenarioList) | **Get** /scenarios | Get all scenarios +[**SetScenario**](ScenarioConfigurationApi.md#SetScenario) | **Put** /scenarios/{name} | Update a scenario + + +# **CreateScenario** +> CreateScenario(ctx, name, scenario) +Add a scenario + +Add a scenario to the platform scenario store + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Scenario name | + **scenario** | [**Scenario**](Scenario.md)| Scenario | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DeleteScenario** +> DeleteScenario(ctx, name) +Delete a scenario + +Delete a scenario by name from the platform scenario store + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Scenario name | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DeleteScenarioList** +> DeleteScenarioList(ctx, ) +Delete all scenarios + +Delete all scenarios present in the platform scenario store + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetScenario** +> Scenario GetScenario(ctx, name) +Get a specific scenario + +Get a scenario by name from the platform scenario store + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Scenario name | + +### Return type + +[**Scenario**](Scenario.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetScenarioList** +> ScenarioList GetScenarioList(ctx, ) +Get all scenarios + +Returns all scenarios from the platform scenario store + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**ScenarioList**](ScenarioList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **SetScenario** +> SetScenario(ctx, name, scenario) +Update a scenario + +Update a scenario by name in the platform scenario store + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **name** | **string**| Scenario name | + **scenario** | [**Scenario**](Scenario.md)| Scenario to add to MEEP store | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-platform-ctrl-client/docs/ScenarioList.md b/go-packages/meep-platform-ctrl-client/docs/ScenarioList.md new file mode 100644 index 000000000..99bf8929d --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/ScenarioList.md @@ -0,0 +1,10 @@ +# ScenarioList + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Scenarios** | [**[]Scenario**](Scenario.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/ServiceConfig.md b/go-packages/meep-platform-ctrl-client/docs/ServiceConfig.md new file mode 100644 index 000000000..6db2202b3 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/ServiceConfig.md @@ -0,0 +1,12 @@ +# ServiceConfig + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Unique service name | [optional] [default to null] +**MeSvcName** | **string** | Multi-Edge service name, if any | [optional] [default to null] +**Ports** | [**[]ServicePort**](ServicePort.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/ServicePort.md b/go-packages/meep-platform-ctrl-client/docs/ServicePort.md new file mode 100644 index 000000000..6b6c33d58 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/ServicePort.md @@ -0,0 +1,12 @@ +# ServicePort + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Protocol** | **string** | Protocol that the application is using (TCP or UDP) | [optional] [default to null] +**Port** | **int32** | Port number that the service is listening on | [optional] [default to null] +**ExternalPort** | **int32** | External port number on which to expose the application (30000 - 32767) <li>Only one application allowed per external port <li>Scenario builder must configure to prevent conflicts | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md b/go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md new file mode 100644 index 000000000..50cdb808c --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md @@ -0,0 +1,168 @@ +# \UserAuthenticationApi + +All URIs are relative to *https://localhost/platform-ctrl/v1* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**Authorize**](UserAuthenticationApi.md#Authorize) | **Get** /authorize | OAuth authorization response endpoint +[**LoginOAuth**](UserAuthenticationApi.md#LoginOAuth) | **Get** /login | Initiate OAuth login procedure +[**LoginUser**](UserAuthenticationApi.md#LoginUser) | **Post** /login | Start a session +[**LogoutUser**](UserAuthenticationApi.md#LogoutUser) | **Get** /logout | Terminate a session +[**TriggerWatchdog**](UserAuthenticationApi.md#TriggerWatchdog) | **Post** /watchdog | Send heartbeat to watchdog + + +# **Authorize** +> Authorize(ctx, optional) +OAuth authorization response endpoint + +Redirect URI endpoint for OAuth authorization responses. Starts a user session. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***AuthorizeOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a AuthorizeOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **code** | **optional.String**| Temporary authorization code | + **state** | **optional.String**| User-provided random state | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **LoginOAuth** +> LoginOAuth(ctx, optional) +Initiate OAuth login procedure + +Start OAuth login procedure with provider + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***LoginOAuthOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a LoginOAuthOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **provider** | **optional.String**| Oauth provider | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **LoginUser** +> Sandbox LoginUser(ctx, optional) +Start a session + +Start a session after authenticating user + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***LoginUserOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a LoginUserOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **username** | **optional.String**| User Name | + **password** | **optional.String**| User Password | + +### Return type + +[**Sandbox**](Sandbox.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **LogoutUser** +> LogoutUser(ctx, ) +Terminate a session + +Terminate a session + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **TriggerWatchdog** +> TriggerWatchdog(ctx, ) +Send heartbeat to watchdog + +Send heartbeat to watchdog to keep session alive + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-platform-ctrl-client/docs/Zone.md b/go-packages/meep-platform-ctrl-client/docs/Zone.md new file mode 100644 index 000000000..f833d0a71 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/docs/Zone.md @@ -0,0 +1,28 @@ +# Zone + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique zone ID | [optional] [default to null] +**Name** | **string** | Zone name | [optional] [default to null] +**Type_** | **string** | Zone type | [optional] [default to null] +**NetChar** | [***NetworkCharacteristics**](NetworkCharacteristics.md) | | [optional] [default to null] +**InterFogLatency** | **int32** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterFogLatencyVariation** | **int32** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterFogThroughput** | **int32** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterFogPacketLoss** | **float64** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterEdgeLatency** | **int32** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterEdgeLatencyVariation** | **int32** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterEdgeThroughput** | **int32** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**InterEdgePacketLoss** | **float64** | **DEPRECATED** As of release 1.3.0, no longer supported | [optional] [default to null] +**EdgeFogLatency** | **int32** | **DEPRECATED** As of release 1.3.0, replaced by netChar latency | [optional] [default to null] +**EdgeFogLatencyVariation** | **int32** | **DEPRECATED** As of release 1.3.0, replaced by netChar latencyVariation | [optional] [default to null] +**EdgeFogThroughput** | **int32** | **DEPRECATED** As of release 1.3.0, replaced by netChar throughput | [optional] [default to null] +**EdgeFogPacketLoss** | **float64** | **DEPRECATED** As of release 1.3.0, replaced by netChar packetLoss | [optional] [default to null] +**Meta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**UserMeta** | **map[string]string** | Key/Value Pair Map (string, string) | [optional] [default to null] +**NetworkLocations** | [**[]NetworkLocation**](NetworkLocation.md) | | [optional] [default to null] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/go-packages/meep-platform-ctrl-client/git_push.sh b/go-packages/meep-platform-ctrl-client/git_push.sh new file mode 100644 index 000000000..ae01b182a --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/go-packages/meep-platform-ctrl-client/go.mod b/go-packages/meep-platform-ctrl-client/go.mod new file mode 100644 index 000000000..8bb4c93ec --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/go.mod @@ -0,0 +1,8 @@ +module github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client + +go 1.12 + +require ( + github.com/antihax/optional v1.0.0 + golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d +) diff --git a/go-packages/meep-platform-ctrl-client/go.sum b/go-packages/meep-platform-ctrl-client/go.sum new file mode 100644 index 000000000..43661474b --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/go.sum @@ -0,0 +1,12 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/go-packages/meep-platform-ctrl-client/model_cellular_domain_config.go b/go-packages/meep-platform-ctrl-client/model_cellular_domain_config.go new file mode 100644 index 000000000..60ed65170 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_cellular_domain_config.go @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Cellular domain configuration information +type CellularDomainConfig struct { + // Mobile Network Code part of PLMN identity as defined in ETSI TS 136 413 + Mnc string `json:"mnc,omitempty"` + // Mobile Country Code part of PLMN identity as defined in ETSI TS 136 413 + Mcc string `json:"mcc,omitempty"` + // The E-UTRAN Cell Identity as defined in ETSI TS 136 413 if no cellId is defined for the cell or if not applicable + DefaultCellId string `json:"defaultCellId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_cellular_poa_config.go b/go-packages/meep-platform-ctrl-client/model_cellular_poa_config.go new file mode 100644 index 000000000..f88de05df --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_cellular_poa_config.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// **DEPRECATED** As of release 1.5.1, renamed to poa4GConfig +type CellularPoaConfig struct { + // The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including the ID of the eNB serving the cell + CellId string `json:"cellId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_cpu_config.go b/go-packages/meep-platform-ctrl-client/model_cpu_config.go new file mode 100644 index 000000000..17ae08332 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_cpu_config.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// CPU configuration object +type CpuConfig struct { + // Minimum requested CPU + Min float32 `json:"min,omitempty"` + // Maximum requested CPU + Max float32 `json:"max,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_deployment.go b/go-packages/meep-platform-ctrl-client/model_deployment.go new file mode 100644 index 000000000..301c6bab1 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_deployment.go @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Network deployment object +type Deployment struct { + NetChar *NetworkCharacteristics `json:"netChar,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latency + InterDomainLatency int32 `json:"interDomainLatency,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation + InterDomainLatencyVariation int32 `json:"interDomainLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl + InterDomainThroughput int32 `json:"interDomainThroughput,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss + InterDomainPacketLoss float64 `json:"interDomainPacketLoss,omitempty"` + // Key/Value Pair Map (string, string) + Meta map[string]string `json:"meta,omitempty"` + // Key/Value Pair Map (string, string) + UserMeta map[string]string `json:"userMeta,omitempty"` + Domains []Domain `json:"domains,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_domain.go b/go-packages/meep-platform-ctrl-client/model_domain.go new file mode 100644 index 000000000..350b7d96f --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_domain.go @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Operator domain object +type Domain struct { + // Unique domain ID + Id string `json:"id,omitempty"` + // Domain name + Name string `json:"name,omitempty"` + // Domain type + Type_ string `json:"type,omitempty"` + NetChar *NetworkCharacteristics `json:"netChar,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latency + InterZoneLatency int32 `json:"interZoneLatency,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation + InterZoneLatencyVariation int32 `json:"interZoneLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl + InterZoneThroughput int32 `json:"interZoneThroughput,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss + InterZonePacketLoss float64 `json:"interZonePacketLoss,omitempty"` + // Key/Value Pair Map (string, string) + Meta map[string]string `json:"meta,omitempty"` + // Key/Value Pair Map (string, string) + UserMeta map[string]string `json:"userMeta,omitempty"` + CellularDomainConfig *CellularDomainConfig `json:"cellularDomainConfig,omitempty"` + Zones []Zone `json:"zones,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_egress_service.go b/go-packages/meep-platform-ctrl-client/model_egress_service.go new file mode 100644 index 000000000..3100920ba --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_egress_service.go @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// External service exposed internally via specific port +type EgressService struct { + // Service name + Name string `json:"name,omitempty"` + // Multi-Edge service name, if any + MeSvcName string `json:"meSvcName,omitempty"` + // External node IP address + Ip string `json:"ip,omitempty"` + // Service port number + Port int32 `json:"port,omitempty"` + // Service protocol (TCP or UDP) + Protocol string `json:"protocol,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_external_config.go b/go-packages/meep-platform-ctrl-client/model_external_config.go new file mode 100644 index 000000000..d5928452b --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_external_config.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// External Process configuration. NOTE: Only valid if 'isExternal' is set. +type ExternalConfig struct { + IngressServiceMap []IngressService `json:"ingressServiceMap,omitempty"` + EgressServiceMap []EgressService `json:"egressServiceMap,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_geo_data.go b/go-packages/meep-platform-ctrl-client/model_geo_data.go new file mode 100644 index 000000000..1b5c5742d --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_geo_data.go @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Geographic data +type GeoData struct { + Location *Point `json:"location,omitempty"` + // Optional - Radius (in meters) around the location + Radius float32 `json:"radius,omitempty"` + Path *LineString `json:"path,omitempty"` + // End-of-Path mode:

  • LOOP: When path endpoint is reached, start over from the beginning
  • REVERSE: When path endpoint is reached, return on the reverse path + EopMode string `json:"eopMode,omitempty"` + // Speed of movement along path in m/s + Velocity float32 `json:"velocity,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_gpu_config.go b/go-packages/meep-platform-ctrl-client/model_gpu_config.go new file mode 100644 index 000000000..692cdb16e --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_gpu_config.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// GPU configuration object +type GpuConfig struct { + // Requested GPU type + Type_ string `json:"type,omitempty"` + // Number of GPUs requested + Count int32 `json:"count,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_ingress_service.go b/go-packages/meep-platform-ctrl-client/model_ingress_service.go new file mode 100644 index 000000000..c631048ee --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_ingress_service.go @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Internal service exposed externally via specific port +type IngressService struct { + // Service name (unique or multi-edge) + Name string `json:"name,omitempty"` + // Internal service port number + Port int32 `json:"port,omitempty"` + // Externally-exposed unique service port in range (30000 - 32767) + ExternalPort int32 `json:"externalPort,omitempty"` + // Service protocol (TCP or UDP) + Protocol string `json:"protocol,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_line_string.go b/go-packages/meep-platform-ctrl-client/model_line_string.go new file mode 100644 index 000000000..718d98af0 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_line_string.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// An array of two or more positions in coordinate space (GeoJSON); a position is an array of two numbers +type LineString struct { + // Must be LineString + Type_ string `json:"type"` + // For a LineString, coordinates is an array of two or more positions; a position is an array of two decimal numbers (longitude and latitude precisely in that order) + Coordinates [][]float32 `json:"coordinates,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_memory_config.go b/go-packages/meep-platform-ctrl-client/model_memory_config.go new file mode 100644 index 000000000..609a0a0dd --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_memory_config.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Memory configuration object +type MemoryConfig struct { + // Minimum requested memory + Min int32 `json:"min,omitempty"` + // Maximum requested memory + Max int32 `json:"max,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_network_characteristics.go b/go-packages/meep-platform-ctrl-client/model_network_characteristics.go new file mode 100644 index 000000000..cb0fb9ce3 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_network_characteristics.go @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Network characteristics object +type NetworkCharacteristics struct { + // Latency in ms + Latency int32 `json:"latency,omitempty"` + // Latency variation in ms + LatencyVariation int32 `json:"latencyVariation,omitempty"` + // Latency distribution. Can only be set in the Scenario Deployment network characteristics, ignored otherwise. Latency distribution is set for the whole network and applied to every end-to-end traffic flows. Default value is 'Normal' distribution. + LatencyDistribution string `json:"latencyDistribution,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by throughputUl and throughputDl + Throughput int32 `json:"throughput,omitempty"` + // Downlink throughput limit in Mbps + ThroughputDl int32 `json:"throughputDl,omitempty"` + // Uplink throughput limit in Mbps + ThroughputUl int32 `json:"throughputUl,omitempty"` + // Packet loss percentage + PacketLoss float64 `json:"packetLoss,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_network_location.go b/go-packages/meep-platform-ctrl-client/model_network_location.go new file mode 100644 index 000000000..ef08d6ecf --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_network_location.go @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Logical network location object +type NetworkLocation struct { + // Unique network location ID + Id string `json:"id,omitempty"` + // Network location name + Name string `json:"name,omitempty"` + // Network location type + Type_ string `json:"type,omitempty"` + NetChar *NetworkCharacteristics `json:"netChar,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latency + TerminalLinkLatency int32 `json:"terminalLinkLatency,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation + TerminalLinkLatencyVariation int32 `json:"terminalLinkLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl + TerminalLinkThroughput int32 `json:"terminalLinkThroughput,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss + TerminalLinkPacketLoss float64 `json:"terminalLinkPacketLoss,omitempty"` + // Key/Value Pair Map (string, string) + Meta map[string]string `json:"meta,omitempty"` + // Key/Value Pair Map (string, string) + UserMeta map[string]string `json:"userMeta,omitempty"` + CellularPoaConfig *CellularPoaConfig `json:"cellularPoaConfig,omitempty"` + Poa4GConfig *Poa4GConfig `json:"poa4GConfig,omitempty"` + Poa5GConfig *Poa5GConfig `json:"poa5GConfig,omitempty"` + PoaWifiConfig *PoaWifiConfig `json:"poaWifiConfig,omitempty"` + GeoData *GeoData `json:"geoData,omitempty"` + PhysicalLocations []PhysicalLocation `json:"physicalLocations,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_physical_location.go b/go-packages/meep-platform-ctrl-client/model_physical_location.go new file mode 100644 index 000000000..61a0876b6 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_physical_location.go @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Physical location object +type PhysicalLocation struct { + // Unique physical location ID + Id string `json:"id,omitempty"` + // Physical location name + Name string `json:"name,omitempty"` + // Physical location type + Type_ string `json:"type,omitempty"` + // true: Physical location is external to MEEP false: Physical location is internal to MEEP + IsExternal bool `json:"isExternal,omitempty"` + GeoData *GeoData `json:"geoData,omitempty"` + NetworkLocationsInRange []string `json:"networkLocationsInRange,omitempty"` + // true: Physical location has network connectivity false: Physical location has no network connectivity + Connected bool `json:"connected,omitempty"` + // true: Physical location uses a wireless connection false: Physical location uses a wired connection + Wireless bool `json:"wireless,omitempty"` + // Prioritized, comma-separated list of supported wireless connection types. Default priority if not specififed is 'wifi,5g,4g,other'. Wireless connection types: - 4g - 5g - wifi - other + WirelessType string `json:"wirelessType,omitempty"` + // Key/Value Pair Map (string, string) + Meta map[string]string `json:"meta,omitempty"` + // Key/Value Pair Map (string, string) + UserMeta map[string]string `json:"userMeta,omitempty"` + Processes []Process `json:"processes,omitempty"` + NetChar *NetworkCharacteristics `json:"netChar,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latency + LinkLatency int32 `json:"linkLatency,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation + LinkLatencyVariation int32 `json:"linkLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl + LinkThroughput int32 `json:"linkThroughput,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss + LinkPacketLoss float64 `json:"linkPacketLoss,omitempty"` + // Physical location MAC Address + MacId string `json:"macId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_poa4_g_config.go b/go-packages/meep-platform-ctrl-client/model_poa4_g_config.go new file mode 100644 index 000000000..8e618126f --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_poa4_g_config.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Cellular 4G POA configuration information +type Poa4GConfig struct { + // The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including the ID of the eNB serving the cell + CellId string `json:"cellId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_poa5_g_config.go b/go-packages/meep-platform-ctrl-client/model_poa5_g_config.go new file mode 100644 index 000000000..5bb2bcbff --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_poa5_g_config.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Cellular 5G POA configuration information +type Poa5GConfig struct { + // The E-UTRAN Cell Identity as defined in ETSI TS 136 413 including the ID of the NR serving the cell + CellId string `json:"cellId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_poa_wifi_config.go b/go-packages/meep-platform-ctrl-client/model_poa_wifi_config.go new file mode 100644 index 000000000..2e1adbadc --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_poa_wifi_config.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// WIFI POA configuration information +type PoaWifiConfig struct { + // WIFI POA MAC Address + MacId string `json:"macId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_point.go b/go-packages/meep-platform-ctrl-client/model_point.go new file mode 100644 index 000000000..de8fbb342 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_point.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// A single position in coordinate space (GeoJSON); a position is an array of two numbers +type Point struct { + // Must be Point + Type_ string `json:"type"` + // For a Point, coordinates MUST be an array of two decimal numbers; longitude and latitude precisely in that order + Coordinates []float32 `json:"coordinates,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_process.go b/go-packages/meep-platform-ctrl-client/model_process.go new file mode 100644 index 000000000..3cf86e55f --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_process.go @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Application or service object +type Process struct { + // Unique process ID + Id string `json:"id,omitempty"` + // Process name + Name string `json:"name,omitempty"` + // Process type + Type_ string `json:"type,omitempty"` + // true: process is external to MEEP false: process is internal to MEEP + IsExternal bool `json:"isExternal,omitempty"` + // Docker image to deploy inside MEEP + Image string `json:"image,omitempty"` + // Environment variables using the format NAME=\"value\",NAME=\"value\",NAME=\"value\" + Environment string `json:"environment,omitempty"` + // Arguments to command executable + CommandArguments string `json:"commandArguments,omitempty"` + // Executable to invoke at container start up + CommandExe string `json:"commandExe,omitempty"` + ServiceConfig *ServiceConfig `json:"serviceConfig,omitempty"` + GpuConfig *GpuConfig `json:"gpuConfig,omitempty"` + MemoryConfig *MemoryConfig `json:"memoryConfig,omitempty"` + CpuConfig *CpuConfig `json:"cpuConfig,omitempty"` + ExternalConfig *ExternalConfig `json:"externalConfig,omitempty"` + // Process status + Status string `json:"status,omitempty"` + // Chart location for the deployment of the chart provided by the user + UserChartLocation string `json:"userChartLocation,omitempty"` + // Chart values.yaml file location for the deployment of the chart provided by the user + UserChartAlternateValues string `json:"userChartAlternateValues,omitempty"` + // Chart supplemental information related to the group (service) + UserChartGroup string `json:"userChartGroup,omitempty"` + // Key/Value Pair Map (string, string) + Meta map[string]string `json:"meta,omitempty"` + // Key/Value Pair Map (string, string) + UserMeta map[string]string `json:"userMeta,omitempty"` + NetChar *NetworkCharacteristics `json:"netChar,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latency + AppLatency int32 `json:"appLatency,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar latencyVariation + AppLatencyVariation int32 `json:"appLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar throughputUl and throughputDl + AppThroughput int32 `json:"appThroughput,omitempty"` + // **DEPRECATED** As of release 1.5.0, replaced by netChar packetLoss + AppPacketLoss float64 `json:"appPacketLoss,omitempty"` + // Identifier used for process placement in AdvantEDGE cluster + PlacementId string `json:"placementId,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_sandbox.go b/go-packages/meep-platform-ctrl-client/model_sandbox.go new file mode 100644 index 000000000..c7cdda4c1 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_sandbox.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Sandbox object +type Sandbox struct { + // Sandbox name + Name string `json:"name,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_sandbox_config.go b/go-packages/meep-platform-ctrl-client/model_sandbox_config.go new file mode 100644 index 000000000..d445ce5a6 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_sandbox_config.go @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Sandbox configuration object +type SandboxConfig struct { + // Name of scenario to activate in sandbox + ScenarioName string `json:"scenarioName,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_sandbox_list.go b/go-packages/meep-platform-ctrl-client/model_sandbox_list.go new file mode 100644 index 000000000..44af7bcee --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_sandbox_list.go @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Sandbox list +type SandboxList struct { + Sandboxes []Sandbox `json:"sandboxes,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_scenario.go b/go-packages/meep-platform-ctrl-client/model_scenario.go new file mode 100644 index 000000000..86f1794d7 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_scenario.go @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Scenario object +type Scenario struct { + // Scenario version + Version string `json:"version,omitempty"` + // Unique scenario ID + Id string `json:"id,omitempty"` + // Unique scenario name + Name string `json:"name,omitempty"` + // User description of the scenario. + Description string `json:"description,omitempty"` + Config *ScenarioConfig `json:"config,omitempty"` + Deployment *Deployment `json:"deployment,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_scenario_config.go b/go-packages/meep-platform-ctrl-client/model_scenario_config.go new file mode 100644 index 000000000..cf5b565dd --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_scenario_config.go @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Scenario configuration +type ScenarioConfig struct { + // Visualization configuration + Visualization string `json:"visualization,omitempty"` + // Other scenario configuration + Other string `json:"other,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_scenario_list.go b/go-packages/meep-platform-ctrl-client/model_scenario_list.go new file mode 100644 index 000000000..97a5b568c --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_scenario_list.go @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Scenario list +type ScenarioList struct { + Scenarios []Scenario `json:"scenarios,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_service_config.go b/go-packages/meep-platform-ctrl-client/model_service_config.go new file mode 100644 index 000000000..6b2556d16 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_service_config.go @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Service object +type ServiceConfig struct { + // Unique service name + Name string `json:"name,omitempty"` + // Multi-Edge service name, if any + MeSvcName string `json:"meSvcName,omitempty"` + Ports []ServicePort `json:"ports,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_service_port.go b/go-packages/meep-platform-ctrl-client/model_service_port.go new file mode 100644 index 000000000..ca7f67468 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_service_port.go @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Service port object +type ServicePort struct { + // Protocol that the application is using (TCP or UDP) + Protocol string `json:"protocol,omitempty"` + // Port number that the service is listening on + Port int32 `json:"port,omitempty"` + // External port number on which to expose the application (30000 - 32767)

  • Only one application allowed per external port
  • Scenario builder must configure to prevent conflicts + ExternalPort int32 `json:"externalPort,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/model_zone.go b/go-packages/meep-platform-ctrl-client/model_zone.go new file mode 100644 index 000000000..531290bf8 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/model_zone.go @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +// Logical zone (MEC network) object +type Zone struct { + // Unique zone ID + Id string `json:"id,omitempty"` + // Zone name + Name string `json:"name,omitempty"` + // Zone type + Type_ string `json:"type,omitempty"` + NetChar *NetworkCharacteristics `json:"netChar,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterFogLatency int32 `json:"interFogLatency,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterFogLatencyVariation int32 `json:"interFogLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterFogThroughput int32 `json:"interFogThroughput,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterFogPacketLoss float64 `json:"interFogPacketLoss,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterEdgeLatency int32 `json:"interEdgeLatency,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterEdgeLatencyVariation int32 `json:"interEdgeLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterEdgeThroughput int32 `json:"interEdgeThroughput,omitempty"` + // **DEPRECATED** As of release 1.3.0, no longer supported + InterEdgePacketLoss float64 `json:"interEdgePacketLoss,omitempty"` + // **DEPRECATED** As of release 1.3.0, replaced by netChar latency + EdgeFogLatency int32 `json:"edgeFogLatency,omitempty"` + // **DEPRECATED** As of release 1.3.0, replaced by netChar latencyVariation + EdgeFogLatencyVariation int32 `json:"edgeFogLatencyVariation,omitempty"` + // **DEPRECATED** As of release 1.3.0, replaced by netChar throughput + EdgeFogThroughput int32 `json:"edgeFogThroughput,omitempty"` + // **DEPRECATED** As of release 1.3.0, replaced by netChar packetLoss + EdgeFogPacketLoss float64 `json:"edgeFogPacketLoss,omitempty"` + // Key/Value Pair Map (string, string) + Meta map[string]string `json:"meta,omitempty"` + // Key/Value Pair Map (string, string) + UserMeta map[string]string `json:"userMeta,omitempty"` + NetworkLocations []NetworkLocation `json:"networkLocations,omitempty"` +} diff --git a/go-packages/meep-platform-ctrl-client/response.go b/go-packages/meep-platform-ctrl-client/response.go new file mode 100644 index 000000000..a5c8efc09 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/response.go @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Platform Controller REST API + * + * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "net/http" +) + +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the swagger operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/go-packages/meep-rnis-client/model_trigger.go b/go-packages/meep-rnis-client/model_trigger.go index 2c955abcb..6bb12f034 100644 --- a/go-packages/meep-rnis-client/model_trigger.go +++ b/go-packages/meep-rnis-client/model_trigger.go @@ -28,27 +28,29 @@ type Trigger int32 // List of Trigger const ( - 0__Trigger Trigger = "0" - 1__Trigger Trigger = "1" - 2__Trigger Trigger = "2" - 3__Trigger Trigger = "3" - 4__Trigger Trigger = "4" - 5__Trigger Trigger = "5" - 10__Trigger Trigger = "10" - 11__Trigger Trigger = "11" - 12__Trigger Trigger = "12" - 13__Trigger Trigger = "13" - 14__Trigger Trigger = "14" - 15__Trigger Trigger = "15" - 20__Trigger Trigger = "20" - 21__Trigger Trigger = "21" - 30__Trigger Trigger = "30" - 31__Trigger Trigger = "31" - 40__Trigger Trigger = "40" - 41__Trigger Trigger = "41" - 42__Trigger Trigger = "42" - 50__Trigger Trigger = "50" - 51__Trigger Trigger = "51" - 60__Trigger Trigger = "60" - 61__Trigger Trigger = "61" + TRIGGER_NOT_AVAILABLE Trigger = 0 + TRIGGER_PERIODICAL_REPORT_STRONGEST_CELLS Trigger = 1 + TRIGGER_PERIODICAL_REPORT_STRONGEST_CELLS_FOR_SON Trigger = 2 + TRIGGER_PERIODICAL_REPORT_CGI Trigger = 3 + TRIGGER_INTRA_PERIODICAL_REPORT_STRONGEST_CELLS Trigger = 4 + TRIGGER_INTRA_PERIODICAL_REPORT_CGI Trigger = 5 + TRIGGER_EVENT_A1 Trigger = 10 + TRIGGER_EVENT_A2 Trigger = 11 + TRIGGER_EVENT_A3 Trigger = 12 + TRIGGER_EVENT_A4 Trigger = 13 + TRIGGER_EVENT_A5 Trigger = 14 + TRIGGER_EVENT_A6 Trigger = 15 + TRIGGER_EVENT_B1 Trigger = 20 + TRIGGER_EVENT_B2 Trigger = 21 + TRIGGER_EVENT_B1_NR Trigger = 20 + TRIGGER_EVENT_B2_NR Trigger = 21 + TRIGGER_EVENT_C1 Trigger = 30 + TRIGGER_EVENT_C2 Trigger = 31 + TRIGGER_EVENT_W1 Trigger = 40 + TRIGGER_EVENT_W2 Trigger = 41 + TRIGGER_EVENT_W3 Trigger = 42 + TRIGGER_EVENT_V1 Trigger = 50 + TRIGGER_EVENT_V2 Trigger = 51 + TRIGGER_EVENT_H1 Trigger = 60 + TRIGGER_EVENT_H2 Trigger = 61 ) diff --git a/go-packages/meep-rnis-client/model_trigger_nr.go b/go-packages/meep-rnis-client/model_trigger_nr.go index 63464bf1a..ca7ef9006 100644 --- a/go-packages/meep-rnis-client/model_trigger_nr.go +++ b/go-packages/meep-rnis-client/model_trigger_nr.go @@ -28,17 +28,17 @@ type TriggerNr int32 // List of TriggerNr const ( - 0__TriggerNr TriggerNr = "0" - 1__TriggerNr TriggerNr = "1" - 2__TriggerNr TriggerNr = "2" - 10__TriggerNr TriggerNr = "10" - 11__TriggerNr TriggerNr = "11" - 12__TriggerNr TriggerNr = "12" - 13__TriggerNr TriggerNr = "13" - 14__TriggerNr TriggerNr = "14" - 15__TriggerNr TriggerNr = "15" - 20__TriggerNr TriggerNr = "20" - 21__TriggerNr TriggerNr = "21" - 30__TriggerNr TriggerNr = "30" - 31__TriggerNr TriggerNr = "31" + TRIGGER_NR_NOT_AVAILABLE TriggerNr = 0 + TRIGGER_NR_NR_PERIODICAL TriggerNr = 1 + TRIGGER_NR_NR_CGI TriggerNr = 2 + TRIGGER_NR_EVENT_A1 TriggerNr = 10 + TRIGGER_NR_EVENT_A2 TriggerNr = 11 + TRIGGER_NR_EVENT_A3 TriggerNr = 12 + TRIGGER_NR_EVENT_A4 TriggerNr = 13 + TRIGGER_NR_EVENT_A5 TriggerNr = 14 + TRIGGER_NR_EVENT_A6 TriggerNr = 15 + TRIGGER_NR_INTER_RAT_PERIODICAL TriggerNr = 20 + TRIGGER_NR_INTER_RAT_CGI TriggerNr = 21 + TRIGGER_NR_EVENT_B1 TriggerNr = 30 + TRIGGER_NR_EVENT_B2 TriggerNr = 31 ) diff --git a/test/system/.systemTest.go.swo b/test/system/.systemTest.go.swo new file mode 100644 index 0000000000000000000000000000000000000000..6b62b28a6de4bca3f302f6e109c19f59dc882608 GIT binary patch literal 16384 zcmeI3Z;Tve9mj_%ltuo9KkW-md^(8PyWZ_y3x?9r;L%>oCA5^=D<}l(-0pLGV|Qn^ zGqVS!9KJyc!C*)<`a+FSpfSc6;f1~ciN26TQS^loL%@KEs1QQ{BgMq{d7hbPX7+aX z?kE*8nN2_4otfv)@A*E@@A>oFy}5}Sr}v60DwkWl&bO?MSN`_k(fSMP9;%#XNw3** z=G23gUwd!bw&jY;R!*ay-W3;Eoop;RUNp69&r~&%VN?x|gpq6~Z?oK~H2u{}D^e5+ z6bh_afo?QEzU`a?mu=lLq4Hc}ZxRqKY<%y54`q4%X$hv4eQ}mf+jD)Gw>^T8Xki0KnQ2S>*)SH zco2@kJrKfSP<`S<8yxry+yI}14RA61ivZ1EOpxXsj;|$4B(Fe5-M|x`+p^R>%NqJf zXULw4zLY&TxX52GyX>uWdCB@(B$mk_u;Lr(|1G~+nF<0wDBHUow zc#S##_U*zR6J#9|_V_p-0~wB_#klk8k=V3DHCr6DN<7u6#r7Sd({iGDKWOiag4SfG zv$N$&FRIkyVt4vp6!_eCD?4?4$^Dz$XknkzmgPDLA2Bmkn-!D$r$t>WWoI&*>R0Nn6-v@w7$&;sJ7ed3vvQ3S%Kc8X zkkv+~4oWO`m|iyK3{I8Lob(56r(N+yc~CA4$?ESHc}SMjcCkY&_+fM)XjN*uKg%Ox zv#_f+|0j9Xn9}!>>+w25R2R3{mTAqBkgZTM1k4TdzJ}WEg(&K5uU1=r-DxRP-dWWs z-e*5*+jh>HAyz04$UVvg$H5r<-N1=l-z#V8R;wa*IPq}?zaPkCxCvafXBg^POly$X zHYN_L+PbK`-w8rlj(sPr%m!||)^X~x?1z;-GLqh6+1@)fwg2F?*Vkqb&N8kK9+|D(})C_a}2!j}j;6kSi6XJ#yguIMgKvrtbI2 zA<23s<7|**UO6zIcFWR|RWf=HOSP&env9v-l~R8zmCVzgl_IYM4&Lu#CReV^wK$T= zw!E?-YYB7LDR8CIf6IrA^Q^Rjh26O@U4U6h*`b&Y9qK?N(hGT-(&SL<{i>@P71jf{ zqo$ry;7PSrii_8`d?WK?C!6}z!j@0f?>)VbX=dQL;UIVENvPe#=(GGu-ZgByTJ`+M zoj;;h+*I1-S(LuL6`z6;s5d~WCOT$LZefKikLD^#X9C^pelQa6g-U8+n~{fcz*}xr zpDSE+`FZitrFcsf$Z5}wu8mVsC_AV{ClFy>dQRZ_dNRj(&GmTvJLPfpn`Jvr8ShKd zgz;r>x_rVOw-uxPYhT(Dook@Ci_!e;qy!x%?)3nXt-2DW9D>||GB^U;%0mFC)CGyL#{qWZdu7z+K%g4>ioZt^W#07Mb+>Bk0ocw zXF1EOGyf5AU@Ke-Hk=3Nz}fI8&i60D58)aZg%>%`KLt;~B&2T>ao%q13pyCD3!xIp}3|tNqP=$}chv5XVg16umcmaM4 zcY%s4)Zk)R59{DGc#}B7AK~ZlDBKR8g}tx`cEd;EOn8$R!;^3vz6=k*eQ+-{VH=FX zrSLJh2rh(Ih(-Jo9)TrTfU965YycIjI0N2h47>p^!{hK6`~bcJ_rtxQ#>old4$r~+ z{Kejnf1I|vUbJ~LpOni~YAt4?a^&_s?YpsZ^4!xEaxV40hFP>i37D#^mP`T-Vh6fO zr8&Y5hqx%IQ}whr@0aZv$J56k!W_EA#5_c(bA_D7OC>fCn}V*#B3DwUCEj#0wO;cF z0i}9NIsxZtw;pofN+;&5{Dy4Fh;W0b#j9NIh@X>U%f!Tl7!~@?Uboe9V-qldm7?u> z1ZQf=@|ru>Wwn@8x}qeZGJj1~IQ7U~%-3L6ZnZ#XYg$%Yl3`h8h@qo8nHr@fj4hRv zd^^Ov!%>?nRm^UOm9MP#7T3A_5tBFRHEJ?glx2JSWxVJNHlrLJOQmWxiA^=+ywhz( zBJjIJsuobQB?Ee(G+O09As7qknMEY=uijfdW|+O35XzvbC1*5%~>m`GOjN^N@2^uF1i>)EN9y{co9w5rW*=MX_h3KRq}YI+MWCbmqFD&JB) zen}k#T}h8+M(W!c zR7}hq9`;fu^v!5yi6H)+ED$ElpV_{Ab~Az;OauH$XZ4)ODwApfNf#&;-=FPUwUW(v z65Gckv=pgP+3NOQ>0wsA_d*UWP=1B&Rl|JKq1L=a7-L78yiT(Xu31p6y zy#vOyYG*!Rt;WqRwOdL@(!ei-j6%s|WOhaW3w>fo?$bwqZMN$7X2!SH@by{J#y+)b zGBQdIl#2B)$(p%%K2kF%LTn1`joP1t%6iA0o1@~@uWwp1V~lM=?wiNV-qok1Aww)K Y5Y5bYj>*`H?+?^#+0aT-4jftk0pPLr1^@s6 literal 0 HcmV?d00001 diff --git a/test/system/.systemTest.go.swp b/test/system/.systemTest.go.swp new file mode 100644 index 0000000000000000000000000000000000000000..312257df1556169fa2d3c46b3191559281b50621 GIT binary patch literal 24576 zcmeI4du$v>9mgjRT8>gu9+h~AcDxnn?AUiUNz@QwD#vk>gW9otHW5X|THno`SJ~UW z?Cv>DT(=-0C58UeKS&TrEd|sE2r5-Ts8lGTr43L(p-3P#ts1ogA%Q3l2^AH=_cuFp zyZ7)bHAoe6(#QLn=XZazv%i^H&kcU8FwU>f?PT~}#n=Oz&d=6M&u@P9!<(4!s;)gp z7gqj_AKpE5{f?Ex(AC@G1oI>11>1|p_8l0@MnOxOhJv9@;C}0#= zvjUB%GO+u~nH?V(8l*VaSv~yiZ<|?jbQ91hU=%P47zK<1MggOMQNSo*6nOnB5Y@M` z+fj|psw&ze*rbm2_6_RzTD6^SyS`N&?^4@J+x0E#_!_nSOxtyJXf{RxqkvJsC}0#Y z3K#{90!9I&fKk9GU=%P4{1+6k%Z%A@&d-wrkNJP?|Nm_pV}AvI0MCKnfS-cLz*+E3 z@D*?d+zCDhZUDc33+DO361Wwd0LQ^6!OdV7_}7(;Jq7LocY~AQ2ynnW*adci&EVXd z8T&k#0)ya*D;TSRaWD#cz_s8SuoY|pFTIJeXTX!-ac~xV2Yefx0jEI$90XT`pJf>P z7AS+8z-3?yc<_yk-43>aM=xjWUT_AS1{0tU{O~fy9s+y8Zg3F;C1*ha`~#X^0KWpH z?-0%n0tQau7(*{?CwMow3Ty+f;$Hj{yaFzOXMqc*!TZ2F!PQ_hVBp^vxVZ>k01tr= zf*$Y^25#=c_1ge%{keWMHx>kbkhS*Pjw{MM@_8u`b|iRM5}qA6{vK}ia}fl+&B#uL zj(N{8_Z*imHqXz>aD2}&ue)|s@q^lE6u2Yx`l#y&FUl2File?)ajK2LjvU_`sXMu% zi1f8=$@e00OO%^FwC_;1x1U?_l8^yf9)g1CQYEEXu!H8=mWC_aQgWy>dec=KZBJ{}CbOy?b%-)5O;*+HuoKNs z*fo)5x>y}G;LBG*nl?;WnnjqK5XZW-4V4pzZS$$I;xr$bEbx-Fax1Y+o&8FxtdNql zqEOW}-H=8r)!be?6q9x|pX7#C*|pj6;r4dgElobGjhEW2YC5PqDi$APyTw9Dk^*$9 zyiAm4;gRXQA4W5Qn=3|v<5jc0d^@-D7XGTZbR*?Cbv#f)@$w5pR&sN>a6^%L3~AZd zkh?V>MfE-Tyz7^2mx{8!tRZFVlq%KI9Pcv3y2 zH^7QlN=lk>SIc~@cHA{l*i`y_B5Y#G>FdqjNt!Y}?X}*^g<92mb;QI}GfUb=GZ}rg zrE5$pfeLh*rH++Kb1lZFqqS$&-bW`YwVR(-BcJE-Lzcgvhmju$^|%W;`uP?MVl1N? zML(aVj2dX(lXeh_Y$zLfn41oqTCr}IMAi>;2heeP3t4M?Y;1D&;GyF5>@=RJvoljS zTD`rx>x%o3xR@cH5~)sG_s(5=>*Zcm5TAw(Fq8Ejei|RJ#isb79kb z`sLe#4zX-oMIq%&64N2|RuyRFUI!VL0;f)|O)ZjNV%M`ua&iBYu4LLwljlA(Zjqu( zhm%f(bPqfyOl&S`nJwwa7OC}Vzmjf+mX*(Ye&ke+Q;*n`wmnK`#_KiqF19Y;DJdu1 zm^m>7gUR-#YS*lqyz73@8^35~sNb0qN72?laWn1baL~XT?&4DXmKq2$!h>-rB#PHl z`JNlU4aiOrj|tr;reF5b;aZwK@9XSun#Gf`x;`y{wK0MC>oc2$J=nh^B?os@iN z4wT~8vt~xgUAp89D2a}A@wRu#2_kM)1Qs5lmU>oN*!4t|$3v8MOR;xEyYZuf_9CYy zXbUsIYm5x%hxyQ{dbT>CtCR}e0E;=bx*tS53%4`Yi`Q(&W90vT1b+7Ofc$?wKmSMg z@(+VAf|KCW;8Wn^U@yplSK!NE1it|1z~kUY;9d}bGMEMA`%i(7f*Zg)z!l(f@F(Q^ zB6vZS;W;XY`56U_0!9I&fKk9GU=%P47zK<1MggP1Iu*dkCQW6P{Dv28-;O=<8goS# zj&e5M6>u)gy|_Z*GIN+xIYK)$dr|Nze%6|@Jvjn`X*ih-Cg*r4V}+RY$Yd}O)Dtv3 z3|3@lP!Jm#jK*E?p=o9bquH2CLx5pku`yM9fr*?6qw26^YMrsFN=!Za3dc04NSYuV_3u$0rJT7;IrTkun10oo4{MapE1{e z9{e0U4ITmC1E&G42RH>5!3=m0*aluk9UcZ>1NVTt!Cl~1AnUiz)?)>ki_#^&-nueNOYsSvmjP)qg^) zvd>*RjJRE*bpauVQ^AkfP9$A5Ob7B~fde1OuZwuWWk_p0g;$2Vk+^n~fnN>m8b9K= zv5UgXNnfcgD+fVlaE7SVpI}(VH z%d1l&tV4Bim_!cx;c6b`ed>yw(WiU2s^2PC5zr)Te5;e?BWkG$t!-&eTqjqR+q(QZ zu&&;$UaR`QTi+|!tTvb2syXcLD}42WAF}2JEJJR_T4^QD|DQZ+DX+SPuo}43Q z*0EmOA^(31eCIC#^8fYs{eOpVPwW5x0)7pi0bd2Xz4EHoB)mz$jo8FbWt2i~>dhqkvJs zDDZkvAen$&%U)NvR?Q6S4@5Wc8%*=rYWo+2>;FPi4grWF2B+|SY{zG->dOTBu0am~ zC=XXf*boP|&9qjuqB!5xjcCI@R&5^@Nl8M>E$EABj7Y^hG?u16ZlG^G)K?iw-BB5M R(Xy6WKY8vZW%}c({{Z##C6NFC literal 0 HcmV?d00001 diff --git a/test/system/go.mod b/test/system/go.mod new file mode 100644 index 000000000..70dabcfe6 --- /dev/null +++ b/test/system/go.mod @@ -0,0 +1,45 @@ +module github.com/InterDigitalInc/AdvantEDGE/test/system + +go 1.12 + +require ( + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-cache v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client v0.0.0 + github.com/gorilla/handlers v1.4.0 + github.com/gorilla/mux v1.7.4 + golang.org/x/sys v0.0.0-20190412213103-97732733099d // indirect + gopkg.in/yaml.v2 v2.2.2 // indirect +) + +replace ( + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr => ../../go-packages/meep-data-key-mgr + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model => ../../go-packages/meep-data-model + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-cache => ../../go-packages/meep-gis-cache + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client => ../../go-packages/meep-gis-engine-client + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger => ../../go-packages/meep-http-logger + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client => ../../go-packages/meep-loc-serv-client + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store => ../../go-packages/meep-metric-store + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client => ../../go-packages/meep-platform-ctrl-client + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client => ../../go-packages/meep-rnis-client + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client => ../../go-packages/meep-sandbox-ctrl-client + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client => ../../go-packages/meep-wais-client +) diff --git a/test/system/go.sum b/test/system/go.sum new file mode 100644 index 000000000..dc3346709 --- /dev/null +++ b/test/system/go.sum @@ -0,0 +1,68 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/InterDigitalInc/AdvantEDGE v1.5.0 h1:Gv1wxW7kV31reTqxX5TflvvYEEqnxaUlKWvgoandpfI= +github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0-20200703133018-94138d8210a3 h1:hbmjC8Fpv+9m2NytJO4bkf25Xz+IRn28/9CseJxS9YQ= +github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0-20200703133018-94138d8210a3/go.mod h1:OboTWbYNj5baVwRuX8A7o8JSx4cxVqT9uDs9DWFP8sc= +github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= +github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= +github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= +github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 h1:trnwuu/Q8T59kgRjXcSDBODnyZP9wes+bnLn0lx4PgM= +github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= +github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345/go.mod h1:OK4EvWJ441LQqGzed5NGB6vKBAE34n3z7iayPcEwr30= +github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72/go.mod h1:o+JdB7VetTHjLhU0N57x18B9voDBQe0paApdEAEoEfw= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= +github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= +github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= +github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= +github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237/go.mod h1:UOnLAUmVG5paym8pD3C4B9BQylUDC2vXFJJpT7JrlEA= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go new file mode 100644 index 000000000..6607a5645 --- /dev/null +++ b/test/system/loc-serv_test.go @@ -0,0 +1,2452 @@ +package main + +import ( + "encoding/json" + "fmt" + "testing" + + "context" + "time" + + locServClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client" + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" +) + +var locServAppClient *locServClient.APIClient +var locServServerUrl string + +func init() { + + startSystemTest() + + //create client + locServAppClientCfg := locServClient.NewConfiguration() + if hostUrlStr == "" { + locServAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/location/v2" + } else { + locServAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/location/v2" + } + locServAppClient = locServClient.NewAPIClient(locServAppClientCfg) + if locServAppClient == nil { + log.Error("Failed to create Location App REST API client: ", locServAppClientCfg.BasePath) + } + locServServerUrl = hostUrlStr + ":" + httpListenerPort + + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + +} + +func initialiseTest() { + log.Info("activating Scenario") + activateScenario("system-test") + time.Sleep(1000 * time.Millisecond) + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + time.Sleep(1000 * time.Millisecond) +} + +func clearUpTest() { + log.Info("terminating Scenario") + terminateScenario() + time.Sleep(1000 * time.Millisecond) +} + +/* +func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g2", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_4g_diff_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "", "Entering") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_5g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_wifi_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_generic_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_none_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_5g_same_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g3", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_5g_diff_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "", "Entering") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_4g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_wifi_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-wifi2", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_generic_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa2", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_none_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_wifi_same_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi4", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_wifi_diff_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "", "Entering") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_5g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_4g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-4g4", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_generic_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa3", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_none_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_generic_same_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_generic_diff_zone_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone5", "poa6", "", "Entering") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_gereneric_to_wifi_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_4g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-4g5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_5g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-5g5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_none_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_none_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 1.0, 1.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } +} + +func Test_4g_to_4g_same_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g2", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_4g_diff_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_5g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g1", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_wifi_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi1", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_generic_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa1", "poa-4g1", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_4g_to_none_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_5g_same_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone2" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g3", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_5g_diff_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone2" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_4g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone2" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g3", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_wifi_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone2" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi2", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_generic_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone2" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa2", "poa-5g2", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_5g_to_none_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone2" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_wifi_same_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone3" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi4", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_wifi_diff_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone3" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_5g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone3" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g4", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_4g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone3" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g4", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_generic_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone3" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa3", "poa-wifi3", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_wifi_to_none_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone3" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_generic_same_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone4" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_generic_diff_zone_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone4" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_gereneric_to_wifi_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone4" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_4g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone4" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_5g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone4" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g5", "poa4", "Transferring") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_generic_to_none_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone4" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + } else { + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_none_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 1.0, 1.0) + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } +} +*/ + +func Test_zoneStatus_4g_AP_threshold(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue2", 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 1 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 7.413917, 43.733505) + time.Sleep(60000 * time.Millisecond) + + //notification received for being greater than AP threshold + if len(httpReqBody) == 2 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 3 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[4]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue4", 7.415917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification not received, no change to poa that has equal value to threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification not received, values below AP threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } +} + +func Test_zoneStatus_5g_AP_threshold(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue2", 7.419917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 1 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 7.419917, 43.733505) + time.Sleep(60000 * time.Millisecond) + + //notification received for being greater than AP threshold + if len(httpReqBody) == 2 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 3 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[4]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue4", 7.421917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification not received, no change to poa that has equal value to threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification not received, values below AP threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } +} + +func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue2", 7.425917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 1 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 7.425917, 43.733505) + time.Sleep(60000 * time.Millisecond) + + //notification received for being greater than AP threshold + if len(httpReqBody) == 2 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 3 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[4]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue4", 7.427917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification not received, no change to poa that has equal value to threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification not received, values below AP threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } +} + +func Test_zoneStatus_generic_AP_threshold(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + + time.Sleep(1000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue2", 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 1 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 7.431917, 43.733505) + time.Sleep(60000 * time.Millisecond) + + //notification received for being greater than AP threshold + if len(httpReqBody) == 2 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue3", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to AP threshold + if len(httpReqBody) == 3 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[4]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue4", 7.433917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification not received, no change to poa that has equal value to threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification not received, values below AP threshold + if len(httpReqBody) != 3 { + t.Fatalf("Notification received") + } +} + +func Test_zoneStatus_zone_threshold(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 3) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + //moving to each different type of POA + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + geMoveAssetCoordinates("ue2", 7.419917, 43.733505) + geMoveAssetCoordinates("ue3", 7.425917, 43.733505) + geMoveAssetCoordinates("ue4", 7.431917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification received for being greater to zone threshold + if len(httpReqBody) == 1 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 4) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification received for being equal to zone threshold + if len(httpReqBody) == 2 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification not received, values below zone threshold + if len(httpReqBody) != 2 { + t.Fatalf("Notification received") + } +} + +func Test_zoneStatus_zone_AP_threshold(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 3) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + //moving to each different type of POA + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + geMoveAssetCoordinates("ue2", 7.413917, 43.733505) + geMoveAssetCoordinates("ue3", 7.413917, 43.733505) + geMoveAssetCoordinates("ue4", 7.413917, 43.733505) + time.Sleep(1000 * time.Millisecond) + + //notification received for being greater to zone threshold + if len(httpReqBody) == 2 { + var body locServClient.InlineZoneStatusNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 4, -1) + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 4) + } else { + t.Fatalf("Number of expected notifications not received") + } + + log.Info("moving asset") + geMoveAssetCoordinates("ue1", 0.0, 0.0) + geMoveAssetCoordinates("ue2", 0.0, 0.0) + geMoveAssetCoordinates("ue3", 0.0, 0.0) + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(1000 * time.Millisecond) + + //notification not received, values below zone threshold + if len(httpReqBody) != 2 { + t.Fatalf("Notification received") + } +} + +func locServSubscriptionUserTracking(address string, callbackReference string) error { + + userTrackingSubscription := locServClient.UserTrackingSubscription{address, &locServClient.CallbackReference{"", nil, callbackReference}, "", "", nil} + inlineUserTrackingSubscription := locServClient.InlineUserTrackingSubscription{&userTrackingSubscription} + + _, _, err := locServAppClient.LocationApi.UserTrackingSubPOST(context.TODO(), inlineUserTrackingSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func locServSubscriptionZonalTraffic(zoneId string, callbackReference string) error { + + zonalTrafficSubscription := locServClient.ZonalTrafficSubscription{&locServClient.CallbackReference{"", nil, callbackReference}, "", 0, nil, "", nil, zoneId} + inlineZonalTrafficSubscription := locServClient.InlineZonalTrafficSubscription{&zonalTrafficSubscription} + + _, _, err := locServAppClient.LocationApi.ZonalTrafficSubPOST(context.TODO(), inlineZonalTrafficSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func locServSubscriptionZoneStatus(zoneId string, callbackReference string, nbApThreshold int32, nbZoneThreshold int32) error { + + zoneStatusSubscription := locServClient.ZoneStatusSubscription{&locServClient.CallbackReference{"", nil, callbackReference}, "", nbApThreshold, nbZoneThreshold, nil, "", zoneId} + inlineZoneStatusSubscription := locServClient.InlineZoneStatusSubscription{&zoneStatusSubscription} + + _, _, err := locServAppClient.LocationApi.ZoneStatusSubPOST(context.TODO(), inlineZoneStatusSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func validateZonalPresenceNotification(t *testing.T, zonalPresenceNotification *locServClient.ZonalPresenceNotification, expectedAddress string, expectedZoneId string, expectedCurrentAccessPointId string, expectedPreviousAccessPointId string, expectedUserEventType locServClient.UserEventType) { + + if zonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if zonalPresenceNotification.ZoneId != expectedZoneId { + t.Fatalf("ZoneId of notification not as expected") + } + if zonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if zonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *zonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } +} + +func validateZoneStatusNotification(t *testing.T, zoneStatusNotification *locServClient.ZoneStatusNotification, expectedZoneId string, expectedApId string, expectedNbUsersInAP int32, expectedNbUsersInZone int32) { + + if zoneStatusNotification.ZoneId != expectedZoneId { + t.Fatalf("ZoneId of notification not as expected") + } + + if expectedNbUsersInZone != -1 { + if zoneStatusNotification.NumberOfUsersInZone != expectedNbUsersInZone { + t.Fatalf("NumberOfUsersInZone of notification not as expected") + } + } + if expectedNbUsersInAP != -1 { + if zoneStatusNotification.AccessPointId != expectedApId { + t.Fatalf("AccessPointId of notification not as expected") + } + if zoneStatusNotification.NumberOfUsersInAP != expectedNbUsersInAP { + t.Fatalf("NumberOfUsersInAP of notification not as expected") + } + } else { + if zoneStatusNotification.AccessPointId != "" { + t.Fatalf("AccessPointId of notification not as expected") + } + } +} diff --git a/test/system/loc-serv_test.go2 b/test/system/loc-serv_test.go2 new file mode 100644 index 000000000..eb838168e --- /dev/null +++ b/test/system/loc-serv_test.go2 @@ -0,0 +1,1455 @@ +package main + +import ( + "encoding/json" + "fmt" + "testing" + + "context" + "time" + + locServClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client" + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" +) + +var locServAppClient *locServClient.APIClient +var locServServerUrl string + +func init() { + + startSystemTest() + + //create client + locServAppClientCfg := locServClient.NewConfiguration() + if hostUrlStr == "" { + locServAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/location/v2" + } else { + locServAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/location/v2" + } + locServAppClient = locServClient.NewAPIClient(locServAppClientCfg) + if locServAppClient == nil { + log.Error("Failed to create Location App REST API client: ", locServAppClientCfg.BasePath) + } + locServServerUrl = hostUrlStr + ":" + httpListenerPort + + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + +} + +func initialiseTest() { + log.Info("activating Scenario") + activateScenario("system-test") + time.Sleep(1000 * time.Millisecond) + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + time.Sleep(1000 * time.Millisecond) +} + +func clearUpTest() { + log.Info("terminating Scenario") + terminateScenario() + time.Sleep(1000 * time.Millisecond) +} + +func Test_4g_to_4g_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g2" + expectedPreviousAccessPointId = "poa-4g1" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_4g_to_4g_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g1" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g3" + expectedUserEventType = "Entering" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + } else { + t.Fatalf("Notification not received") + } +} + +func Test_4g_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g1" + expectedPreviousAccessPointId = "poa-4g1" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_4g_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi1" + expectedPreviousAccessPointId = "poa-4g1" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_4g_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa1" + expectedPreviousAccessPointId = "poa-4g1" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_4g_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g1" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_5g_to_5g_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g3" + expectedPreviousAccessPointId = "poa-5g2" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_5g_to_5g_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g2" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g4" + expectedUserEventType = "Entering" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + } else { + t.Fatalf("Notification not received") + } +} + +func Test_5g_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g3" + expectedPreviousAccessPointId = "poa-5g2" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_5g_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi2" + expectedPreviousAccessPointId = "poa-5g2" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_5g_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa2" + expectedPreviousAccessPointId = "poa-5g2" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_5g_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.419917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g2" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_wifi_to_wifi_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi4" + expectedPreviousAccessPointId = "poa-wifi3" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_wifi_to_wifi_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi3" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi5" + expectedUserEventType = "Entering" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + } else { + t.Fatalf("Notification not received") + } +} + +func Test_wifi_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g4" + expectedPreviousAccessPointId = "poa-wifi3" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_wifi_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g4" + expectedPreviousAccessPointId = "poa-wifi3" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_wifi_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa3" + expectedPreviousAccessPointId = "poa-wifi3" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_wifi_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.425917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi3" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_generic_to_generic_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa5" + expectedPreviousAccessPointId = "poa4" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_generic_to_generic_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 2 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa4" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa6" + expectedUserEventType = "Entering" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + + } else { + t.Fatalf("Notification not received") + } +} + +func Test_gereneric_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-wifi5" + expectedPreviousAccessPointId = "poa4" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_generic_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-4g5" + expectedPreviousAccessPointId = "poa4" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_generic_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedPreviousAccessPointId string + + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa-5g5" + expectedPreviousAccessPointId = "poa4" + expectedUserEventType = "Transferring" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { + t.Fatalf("PreviousAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} + +func Test_generic_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + var expectedAddress string + var expectedCurrentAccessPointId string + var expectedUserEventType locServClient.UserEventType + + //moving to initial position + geMoveAssetCoordinates("ue1", 7.431917, 43.733505) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2 * time.Second) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + + //expectations + expectedAddress = testAddress + expectedCurrentAccessPointId = "poa4" + expectedUserEventType = "Leaving" + + if body.ZonalPresenceNotification.Address != expectedAddress { + t.Fatalf("Address of notification not as expected") + } + if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { + t.Fatalf("CurrentAccessPointId of notification not as expected") + } + if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { + t.Fatalf("UserEventType of notification not as expected") + } + } else { + t.Fatalf("Notification not received") + } +} +func Test_none_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseTest() + defer clearUpTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates("ue1", 0.0, 0.0) + time.Sleep(2 * time.Second) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 1.0, 1.0) + time.Sleep(2 * time.Second) + + if len(httpReqBody) >= 1 { + t.Fatalf("Notification received") + } +} + +func locServSubscriptionUserTracking(address string, callbackReference string) error { + + userTrackingSubscription := locServClient.UserTrackingSubscription{address, &locServClient.CallbackReference{"", nil, callbackReference}, "", "", nil} + inlineUserTrackingSubscription := locServClient.InlineUserTrackingSubscription{&userTrackingSubscription} + + _, _, err := locServAppClient.LocationApi.UserTrackingSubPOST(context.TODO(), inlineUserTrackingSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func locServSubscriptionZonalTraffic(zoneId string, callbackReference string) error { + + zonalTrafficSubscription := locServClient.ZonalTrafficSubscription{&locServClient.CallbackReference{"", nil, callbackReference}, "", 0, nil, "", nil, zoneId} + inlineZonalTrafficSubscription := locServClient.InlineZonalTrafficSubscription{&zonalTrafficSubscription} + + _, _, err := locServAppClient.LocationApi.ZonalTrafficSubPOST(context.TODO(), inlineZonalTrafficSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func locServSubscriptionZoneStatus(zoneId string, callbackReference string, nbApThreshold int32, nbZoneThreshold int32) error { + + zoneStatusSubscription := locServClient.ZoneStatusSubscription{&locServClient.CallbackReference{"", nil, callbackReference}, "", nbApThreshold, nbZoneThreshold, nil, "", zoneId} + inlineZoneStatusSubscription := locServClient.InlineZoneStatusSubscription{&zoneStatusSubscription} + + _, _, err := locServAppClient.LocationApi.ZoneStatusSubPOST(context.TODO(), inlineZoneStatusSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + diff --git a/test/system/systemTest.go b/test/system/systemTest.go new file mode 100644 index 000000000..1b4d8f428 --- /dev/null +++ b/test/system/systemTest.go @@ -0,0 +1,344 @@ +package main + +import ( + "net/http" + "os" + "os/signal" + "syscall" + "time" + "errors" + "context" + "net/url" + "strings" + "io/ioutil" + + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" + platformCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client" + sandboxCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client" + rnisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client" + waisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client" + gisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client" + +) + +var httpReqBody []string + +var platformCtrlAppClient *platformCtrlClient.APIClient +var sandboxCtrlAppClient *sandboxCtrlClient.APIClient +var rnisAppClient *rnisClient.APIClient +var waisAppClient *waisClient.APIClient +var gisAppClient *gisClient.APIClient + +var sandboxName = "sandbox-system-test" +var scenarioName = "scenario-system-test" +var hostUrlStr = "" +var httpListenerPort = "3333" +var run = false + +const PASS = true +const FAIL = false + +func resetHttpReqBody() { + httpReqBody = []string{} +} + +func initialiseVars() { + + hostUrl, _ := url.Parse(strings.TrimSpace(os.Getenv("MEEP_HOST_TEST_URL"))) + hostUrlStr = hostUrl.String() +} + +func createClients() error { + + // Create & store client for App REST API + platformCtrlAppClientCfg := platformCtrlClient.NewConfiguration() + if hostUrlStr == "" { + platformCtrlAppClientCfg.BasePath = "http://localhost/platform-ctrl/v1" + } else { + platformCtrlAppClientCfg.BasePath = hostUrlStr + "/platform-ctrl/v1" + } + platformCtrlAppClient = platformCtrlClient.NewAPIClient(platformCtrlAppClientCfg) + if platformCtrlAppClient == nil { + log.Error("Failed to create Platform App REST API client: ", platformCtrlAppClientCfg.BasePath) + err := errors.New("Failed to create Platform App REST API client") + return err + } + return nil +} + +func createSandboxClients(sandboxName string) error { + + // Create & store client for App REST API + sandboxCtrlAppClientCfg := sandboxCtrlClient.NewConfiguration() + if hostUrlStr == "" { + sandboxCtrlAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/sandbox-ctrl/v1" + } else { + sandboxCtrlAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/sandbox-ctrl/v1" + } + sandboxCtrlAppClient = sandboxCtrlClient.NewAPIClient(sandboxCtrlAppClientCfg) + if sandboxCtrlAppClient == nil { + log.Error("Failed to create Sandbox App REST API client: ", sandboxCtrlAppClientCfg.BasePath) + err := errors.New("Failed to create Sandbox App REST API client") + return err + } + + rnisAppClientCfg := rnisClient.NewConfiguration() + if hostUrlStr == "" { + rnisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/rni/v2" + } else { + rnisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/rni/v2" + } + rnisAppClient = rnisClient.NewAPIClient(rnisAppClientCfg) + if rnisAppClient == nil { + log.Error("Failed to create RNI App REST API client: ", rnisAppClientCfg.BasePath) + err := errors.New("Failed to create RNI App REST API client") + return err + } + + waisAppClientCfg := waisClient.NewConfiguration() + if hostUrlStr == "" { + waisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/wai/v2" + } else { + waisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/wai/v2" + } + waisAppClient = waisClient.NewAPIClient(waisAppClientCfg) + if waisAppClient == nil { + log.Error("Failed to create WAI App REST API client: ", waisAppClientCfg.BasePath) + err := errors.New("Failed to create WAI App REST API client") + return err + } + + gisAppClientCfg := gisClient.NewConfiguration() + if hostUrlStr == "" { + gisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/gis/v1" + } else { + gisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/gis/v1" + } + gisAppClient = gisClient.NewAPIClient(gisAppClientCfg) + if gisAppClient == nil { + log.Error("Failed to create GIS App REST API client: ", gisAppClientCfg.BasePath) + err := errors.New("Failed to create GIS App REST API client") + return err + } + + return nil +} + +func createSandbox(name string) error { + + config := platformCtrlClient.SandboxConfig{""} + _, err := platformCtrlAppClient.SandboxControlApi.CreateSandboxWithName(context.TODO(), name, config) + if err != nil { + log.Error("Failed to create sandbox: ", err) + return err + } + + return nil +} + +func deleteSandbox(name string) error { + + _, err := platformCtrlAppClient.SandboxControlApi.DeleteSandbox(context.TODO(), name) + if err != nil { + log.Error("Failed to delete sandbox: ", err) + return err + } + return nil +} + +func createScenario(name string) error { + + var scenario platformCtrlClient.Scenario + _, err := platformCtrlAppClient.ScenarioConfigurationApi.SetScenario(context.TODO(), name, scenario) + if err != nil { + log.Error("Failed to create scenario: ", err) + return err + } + + return nil +} + +func deleteScenario(name string) error { + + _, err := platformCtrlAppClient.ScenarioConfigurationApi.DeleteScenario(context.TODO(), name) + if err != nil { + log.Error("Failed to delete scenario: ", err) + return err + } + + return nil +} + +func activateScenario(name string) error { + + _, err := sandboxCtrlAppClient.ActiveScenarioApi.ActivateScenario(context.TODO(), name, nil) + if err != nil { + log.Error("Failed to activate scenario: ", err) + return err + } + + //reinitialisation of http msg queue + resetHttpReqBody() + + return nil +} + +func terminateScenario() error { + + _, err := sandboxCtrlAppClient.ActiveScenarioApi.TerminateScenario(context.TODO()) + if err != nil { + log.Error("Failed to terminate scenario: ", err) + return err + } + + return nil +} + +func createBasics() { + initialiseVars() + log.Info("creating Clients") + createClients() + log.Info("creating Sandbox") + err := createSandbox(sandboxName) + if err == nil { + time.Sleep(20000 * time.Millisecond) + } + log.Info("creating Sandbox Clients") + createSandboxClients(sandboxName) +} + +func clearBasics() { + log.Info("deleting Sandbox") + deleteSandbox(sandboxName) +} + +func startSystemTest() { + if !run { + go main() + createBasics() + } +} + +func stopSystemTest() { + if run { + clearBasics() + } +} + +func main() { + + //create default route handler + http.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) { + log.Info("http message received!") + defer req.Body.Close() + body, _ := ioutil.ReadAll(req.Body) + httpReqBody = append(httpReqBody, string(body)) + }) + + log.Info(os.Args) + + log.Info("Starting System Test") + + run = true + go func() { + sigchan := make(chan os.Signal, 10) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + <-sigchan + log.Info("Program killed !") + // do last actions and wait for all write operations to end + run = false + }() + + go func() { + // Initialize RNIS + /*err := server.Init() + if err != nil { + log.Error("Failed to initialize RNI Service") + run = false + return + } + + // Start RNIS Event Handler thread + err = server.Run() + if err != nil { + log.Error("Failed to start RNI Service") + run = false + return + } + */ + + //create default route handler + log.Fatal(http.ListenAndServe(":" + httpListenerPort, nil)) + run = false + }() + + //createBasics() + + count := 0 + for { + if !run { + log.Info("Ran for ", count, " seconds") + clearBasics() + break + } + time.Sleep(time.Second) + count++ + } + +} + +func geAutomationUpdate(mobility bool, movement bool, poasInRange bool, netCharUpd bool) error { + + _, err := gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "MOBILITY", mobility) + if err != nil { + log.Error("Failed to communicatie with gis engine: ", err) + return err + } + _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "MOVEMENT", movement) + if err != nil { + log.Error("Failed to communicatie with gis engine: ", err) + return err + } + _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "POAS-IN-RANGE", poasInRange) + if err != nil { + log.Error("Failed to communicatie with gis engine: ", err) + return err + } + + _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "NETWORK-CHARACTERISTICS-UPDATE", netCharUpd) + if err != nil { + log.Error("Failed to communicatie with gis engine: ", err) + return err + } + + return nil +} + +func geMoveAssetCoordinates(assetName string, long float32, lat float32) error { + + var geoData gisClient.GeoDataAsset + point := gisClient.Point{"Point", []float32{long, lat}} + geoData.Location = &point + geoData.AssetName = assetName + geoData.AssetType = "UE" + geoData.SubType = "UE" + err := geMoveAsset(assetName, geoData) + if err != nil { + log.Error("Failed to move asset: ", err) + return err + } + + return nil +} + +func geMoveAsset(assetName string, geoData gisClient.GeoDataAsset) error { + + _, err := gisAppClient.GeospatialDataApi.UpdateGeoDataByName(context.TODO(), assetName, geoData) + if err != nil { + log.Error("Failed to communicatie with gis engine: ", err) + return err + } + + return nil +} + diff --git a/test/system/systemTest_test.go2 b/test/system/systemTest_test.go2 new file mode 100644 index 000000000..402440bd9 --- /dev/null +++ b/test/system/systemTest_test.go2 @@ -0,0 +1,7035 @@ +package main + +import ( + //"bytes" + //"encoding/json" + //"errors" + "fmt" + //"io" + //"net/http" + //"net/http/httptest" + //"strconv" + "testing" + "time" + + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" +// ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" + mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" + mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" + + // "github.com/gorilla/mux" +) + +const testScenario string = ` +{ + "version": "1.5.6", + "name": "4g-5g-wifi-macro", + "deployment": { + "netChar": { + "latency": 50, + "latencyVariation": 10, + "latencyDistribution": "Normal", + "throughputDl": 1000, + "throughputUl": 1000, + "throughput": null, + "packetLoss": null + }, + "userMeta": { + "mec-sandbox": "{\"defaultStaticUeCount\": 1, \"defaultLowVelocityUeCount\": 1, \"defaultHighVelocityUeCount\": 1, \"highVelocitySpeedThreshold\": 10}", + "network-info": "{\"type\": \"local\", \"path\":\"4G-Macro-Network-Topology.png\"}" + }, + "domains": [ + { + "id": "PUBLIC", + "name": "PUBLIC", + "type": "PUBLIC", + "netChar": { + "latency": 6, + "latencyVariation": 2, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "zones": [ + { + "id": "PUBLIC-COMMON", + "name": "PUBLIC-COMMON", + "type": "COMMON", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "networkLocations": [ + { + "id": "PUBLIC-COMMON-DEFAULT", + "name": "PUBLIC-COMMON-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "meta": null, + "userMeta": null + } + ], + "interZoneLatency": null, + "interZoneLatencyVariation": null, + "interZoneThroughput": null, + "interZonePacketLoss": null, + "meta": null, + "userMeta": null, + "cellularDomainConfig": null + }, + { + "id": "f1c5f2fe-5fbb-48fa-a0df-6ad00e4eeb4c", + "name": "sandbox-operator", + "type": "OPERATOR-CELLULAR", + "netChar": { + "latency": 6, + "latencyVariation": 2, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "cellularDomainConfig": { + "mnc": "001", + "mcc": "001", + "defaultCellId": "FFFFFFF" + }, + "zones": [ + { + "id": "sandbox-operator-COMMON", + "name": "sandbox-operator-COMMON", + "type": "COMMON", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "networkLocations": [ + { + "id": "sandbox-operator-COMMON-DEFAULT", + "name": "sandbox-operator-COMMON-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "meta": null, + "userMeta": null + }, + { + "id": "6fd7e9d1-3646-474d-880b-d4a21799d280", + "name": "zone01", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "blueviolet" + }, + "networkLocations": [ + { + "id": "zone01-DEFAULT", + "name": "zone01-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "3480e529-3fc1-44b8-a892-42bbbfa4018f", + "name": "4g-macro-cell-1", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "1010101" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.419344, + 43.72764 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "3331ee44-2236-1111-0020-5a3c2bde0eaa", + "name": "10.10.0.4", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.420433, + 43.729942 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.420433, + 43.729942 + ], + [ + 7.420659, + 43.73036 + ], + [ + 7.420621, + 43.731045 + ], + [ + 7.420922, + 43.73129 + ], + [ + 7.421345, + 43.731373 + ], + [ + 7.42135, + 43.73168 + ], + [ + 7.421148, + 43.73173 + ], + [ + 7.420616, + 43.731964 + ], + [ + 7.419779, + 43.732197 + ], + [ + 7.419111, + 43.732353 + ], + [ + 7.418931, + 43.732315 + ], + [ + 7.418345, + 43.731964 + ], + [ + 7.418319, + 43.73186 + ], + [ + 7.418024, + 43.73179 + ], + [ + 7.41796, + 43.731728 + ], + [ + 7.417729, + 43.731743 + ], + [ + 7.417463, + 43.731632 + ], + [ + 7.417507, + 43.73148 + ], + [ + 7.417428, + 43.731407 + ], + [ + 7.417343, + 43.731396 + ], + [ + 7.417334, + 43.731133 + ], + [ + 7.417317, + 43.73053 + ], + [ + 7.417164, + 43.7304 + ], + [ + 7.417164, + 43.72998 + ], + [ + 7.417319, + 43.729916 + ], + [ + 7.419065, + 43.730103 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0004", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "1e2600f4-4861-43d6-abcb-07f4481a124c", + "name": "10.10.0.3", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.423684, + 43.727867 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.423684, + 43.727867 + ], + [ + 7.422571, + 43.727325 + ], + [ + 7.422421, + 43.727333 + ], + [ + 7.42196, + 43.727123 + ], + [ + 7.421828, + 43.72711 + ], + [ + 7.420988, + 43.726707 + ], + [ + 7.420757, + 43.72654 + ], + [ + 7.420393, + 43.72653 + ], + [ + 7.420207, + 43.726746 + ], + [ + 7.419985, + 43.72686 + ], + [ + 7.41988, + 43.72701 + ], + [ + 7.419869, + 43.727287 + ], + [ + 7.419807, + 43.727474 + ], + [ + 7.419671, + 43.727585 + ], + [ + 7.419502, + 43.727608 + ], + [ + 7.419402, + 43.728645 + ], + [ + 7.421238, + 43.72874 + ], + [ + 7.421412, + 43.728493 + ], + [ + 7.421532, + 43.728237 + ], + [ + 7.421697, + 43.72798 + ], + [ + 7.421928, + 43.727783 + ], + [ + 7.422381, + 43.727524 + ], + [ + 7.422507, + 43.72749 + ], + [ + 7.422922, + 43.72768 + ], + [ + 7.422894, + 43.727715 + ], + [ + 7.423666, + 43.72804 + ], + [ + 7.423763, + 43.72794 + ], + [ + 7.4237, + 43.727905 + ], + [ + 7.423684, + 43.727867 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0003", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "8c2599e8-dd88-4ff2-9cf4-6fc54663c152", + "name": "4g-macro-cell-2", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "2020202" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.413819, + 43.729538 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "c52208b3-93bb-4255-9b34-52432acc4398", + "name": "10.100.0.1", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.412295, + 43.728676 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.412295, + 43.728676 + ], + [ + 7.412273, + 43.728664 + ], + [ + 7.412281, + 43.728645 + ], + [ + 7.412294, + 43.72861 + ], + [ + 7.412353, + 43.728577 + ], + [ + 7.412433, + 43.728584 + ], + [ + 7.412494, + 43.72862 + ], + [ + 7.412491, + 43.72867 + ], + [ + 7.412466, + 43.728714 + ], + [ + 7.412627, + 43.728798 + ], + [ + 7.412708, + 43.728863 + ], + [ + 7.412821, + 43.729042 + ], + [ + 7.413009, + 43.729298 + ], + [ + 7.413331, + 43.72953 + ], + [ + 7.414082, + 43.729942 + ], + [ + 7.414709, + 43.730297 + ], + [ + 7.415187, + 43.730553 + ], + [ + 7.415568, + 43.73077 + ], + [ + 7.416118, + 43.73108 + ], + [ + 7.416652, + 43.73135 + ], + [ + 7.416979, + 43.731503 + ], + [ + 7.417131, + 43.73154 + ], + [ + 7.41718, + 43.731457 + ], + [ + 7.417308, + 43.73144 + ], + [ + 7.417392, + 43.731476 + ], + [ + 7.417432, + 43.731533 + ], + [ + 7.417426, + 43.731598 + ], + [ + 7.417365, + 43.73165 + ], + [ + 7.417268, + 43.731663 + ], + [ + 7.417177, + 43.73164 + ], + [ + 7.417037, + 43.731712 + ], + [ + 7.416912, + 43.73183 + ], + [ + 7.416855, + 43.731888 + ], + [ + 7.41681, + 43.731964 + ], + [ + 7.41681, + 43.732018 + ], + [ + 7.416761, + 43.732048 + ], + [ + 7.4167, + 43.732037 + ], + [ + 7.416646, + 43.731995 + ], + [ + 7.416437, + 43.73177 + ], + [ + 7.416278, + 43.731544 + ], + [ + 7.416238, + 43.731464 + ], + [ + 7.416225, + 43.731384 + ], + [ + 7.416228, + 43.73122 + ], + [ + 7.416206, + 43.731102 + ], + [ + 7.416128, + 43.73104 + ], + [ + 7.416005, + 43.73094 + ], + [ + 7.415892, + 43.73085 + ], + [ + 7.415442, + 43.730564 + ], + [ + 7.414985, + 43.73029 + ], + [ + 7.413749, + 43.7296 + ], + [ + 7.413719, + 43.729523 + ], + [ + 7.414267, + 43.72908 + ], + [ + 7.414825, + 43.728683 + ], + [ + 7.414983, + 43.728634 + ], + [ + 7.415184, + 43.728607 + ], + [ + 7.415248, + 43.728603 + ], + [ + 7.41531, + 43.72861 + ], + [ + 7.415366, + 43.72868 + ], + [ + 7.415329, + 43.728752 + ], + [ + 7.415332, + 43.72882 + ], + [ + 7.41538, + 43.728905 + ], + [ + 7.415645, + 43.729088 + ], + [ + 7.416165, + 43.729477 + ], + [ + 7.416268, + 43.729515 + ], + [ + 7.416372, + 43.72958 + ], + [ + 7.416673, + 43.7298 + ], + [ + 7.416808, + 43.729828 + ], + [ + 7.416867, + 43.72982 + ], + [ + 7.417084, + 43.72983 + ], + [ + 7.417418, + 43.72988 + ], + [ + 7.417764, + 43.729916 + ], + [ + 7.418454, + 43.72999 + ], + [ + 7.418545, + 43.729046 + ], + [ + 7.418624, + 43.729004 + ], + [ + 7.419099, + 43.72902 + ], + [ + 7.419173, + 43.728962 + ], + [ + 7.419217, + 43.72858 + ], + [ + 7.420207, + 43.72863 + ], + [ + 7.421203, + 43.728664 + ], + [ + 7.421265, + 43.72848 + ], + [ + 7.421318, + 43.72833 + ], + [ + 7.421387, + 43.72821 + ], + [ + 7.421448, + 43.72811 + ], + [ + 7.421565, + 43.727966 + ], + [ + 7.42162, + 43.7279 + ], + [ + 7.42168, + 43.72785 + ], + [ + 7.421951, + 43.727634 + ], + [ + 7.422287, + 43.72743 + ], + [ + 7.422104, + 43.72733 + ], + [ + 7.421898, + 43.72723 + ], + [ + 7.421297, + 43.726948 + ], + [ + 7.42101, + 43.726795 + ], + [ + 7.42075, + 43.72662 + ], + [ + 7.420669, + 43.726624 + ], + [ + 7.420599, + 43.726635 + ], + [ + 7.420543, + 43.72666 + ], + [ + 7.420205, + 43.726803 + ], + [ + 7.420039, + 43.726883 + ], + [ + 7.41995, + 43.72704 + ], + [ + 7.419926, + 43.727287 + ], + [ + 7.419913, + 43.727413 + ], + [ + 7.419859, + 43.72752 + ], + [ + 7.419728, + 43.727615 + ], + [ + 7.419527, + 43.72767 + ], + [ + 7.419304, + 43.72768 + ], + [ + 7.418912, + 43.727684 + ], + [ + 7.418875, + 43.727726 + ], + [ + 7.418805, + 43.727734 + ], + [ + 7.418751, + 43.727886 + ], + [ + 7.41866, + 43.728058 + ], + [ + 7.418553, + 43.728134 + ], + [ + 7.418459, + 43.72819 + ], + [ + 7.418341, + 43.728245 + ], + [ + 7.418135, + 43.728283 + ], + [ + 7.418035, + 43.72831 + ], + [ + 7.417955, + 43.728355 + ], + [ + 7.417933, + 43.728546 + ], + [ + 7.417923, + 43.72878 + ], + [ + 7.417864, + 43.72901 + ], + [ + 7.41777, + 43.729256 + ], + [ + 7.417654, + 43.729446 + ], + [ + 7.417483, + 43.729645 + ], + [ + 7.417416, + 43.72971 + ], + [ + 7.417233, + 43.72983 + ], + [ + 7.417139, + 43.729893 + ], + [ + 7.417102, + 43.729935 + ], + [ + 7.41707, + 43.72999 + ], + [ + 7.417072, + 43.730053 + ], + [ + 7.417314, + 43.730247 + ], + [ + 7.417579, + 43.730446 + ], + [ + 7.418376, + 43.73103 + ], + [ + 7.41858, + 43.73113 + ], + [ + 7.419038, + 43.73124 + ], + [ + 7.419392, + 43.73131 + ], + [ + 7.419736, + 43.73141 + ], + [ + 7.420988, + 43.73178 + ], + [ + 7.421616, + 43.731987 + ], + [ + 7.421924, + 43.732105 + ], + [ + 7.422169, + 43.73223 + ], + [ + 7.422276, + 43.732334 + ], + [ + 7.422316, + 43.73246 + ], + [ + 7.422297, + 43.732597 + ], + [ + 7.42222, + 43.732723 + ], + [ + 7.422096, + 43.73284 + ], + [ + 7.422002, + 43.732975 + ], + [ + 7.421962, + 43.733047 + ], + [ + 7.421949, + 43.733135 + ], + [ + 7.421696, + 43.733627 + ], + [ + 7.421522, + 43.734016 + ], + [ + 7.421377, + 43.73445 + ], + [ + 7.421289, + 43.73488 + ], + [ + 7.421232, + 43.735355 + ], + [ + 7.421211, + 43.73588 + ], + [ + 7.421291, + 43.73624 + ], + [ + 7.421447, + 43.736584 + ], + [ + 7.421576, + 43.73678 + ], + [ + 7.421629, + 43.73683 + ], + [ + 7.421755, + 43.736908 + ], + [ + 7.422032, + 43.737015 + ], + [ + 7.42237, + 43.737045 + ], + [ + 7.422756, + 43.73709 + ], + [ + 7.423142, + 43.737164 + ], + [ + 7.423915, + 43.737328 + ], + [ + 7.424164, + 43.737377 + ], + [ + 7.424414, + 43.737408 + ], + [ + 7.424918, + 43.73745 + ], + [ + 7.425942, + 43.73778 + ], + [ + 7.426543, + 43.737877 + ], + [ + 7.426795, + 43.737984 + ], + [ + 7.426946, + 43.738132 + ], + [ + 7.426972, + 43.738243 + ], + [ + 7.426924, + 43.738384 + ], + [ + 7.426747, + 43.738514 + ], + [ + 7.426495, + 43.738655 + ], + [ + 7.426119, + 43.738857 + ], + [ + 7.425932, + 43.738956 + ], + [ + 7.42583, + 43.739017 + ], + [ + 7.425776, + 43.739098 + ], + [ + 7.425771, + 43.739197 + ], + [ + 7.425814, + 43.73932 + ], + [ + 7.425771, + 43.73942 + ], + [ + 7.425685, + 43.739525 + ], + [ + 7.425154, + 43.73971 + ], + [ + 7.425562, + 43.740387 + ], + [ + 7.425765, + 43.7407 + ], + [ + 7.425883, + 43.740875 + ], + [ + 7.426023, + 43.741028 + ], + [ + 7.426329, + 43.741234 + ], + [ + 7.426538, + 43.74138 + ], + [ + 7.426736, + 43.741535 + ], + [ + 7.426822, + 43.74154 + ], + [ + 7.426908, + 43.74159 + ], + [ + 7.426895, + 43.741665 + ], + [ + 7.427034, + 43.74174 + ], + [ + 7.427466, + 43.742035 + ], + [ + 7.427699, + 43.742188 + ], + [ + 7.427799, + 43.742268 + ], + [ + 7.427908, + 43.74236 + ], + [ + 7.428187, + 43.7429 + ], + [ + 7.428544, + 43.743557 + ], + [ + 7.42892, + 43.744236 + ], + [ + 7.429225, + 43.74491 + ], + [ + 7.429504, + 43.74551 + ], + [ + 7.429751, + 43.74569 + ], + [ + 7.429939, + 43.745804 + ], + [ + 7.430121, + 43.74594 + ], + [ + 7.430202, + 43.746082 + ], + [ + 7.430239, + 43.746162 + ], + [ + 7.43062, + 43.746452 + ], + [ + 7.431017, + 43.74667 + ], + [ + 7.431371, + 43.746925 + ], + [ + 7.431682, + 43.747177 + ], + [ + 7.431763, + 43.7473 + ], + [ + 7.431763, + 43.747467 + ], + [ + 7.431731, + 43.747578 + ], + [ + 7.431822, + 43.747734 + ], + [ + 7.432031, + 43.747807 + ], + [ + 7.432246, + 43.747856 + ], + [ + 7.432525, + 43.747852 + ], + [ + 7.432809, + 43.747955 + ], + [ + 7.433152, + 43.748158 + ], + [ + 7.43341, + 43.748363 + ], + [ + 7.43401, + 43.748726 + ], + [ + 7.434322, + 43.748905 + ], + [ + 7.434671, + 43.749058 + ], + [ + 7.435019, + 43.74907 + ], + [ + 7.435373, + 43.749073 + ], + [ + 7.435818, + 43.74906 + ], + [ + 7.436028, + 43.749104 + ], + [ + 7.43621, + 43.749184 + ], + [ + 7.436376, + 43.749287 + ], + [ + 7.43651, + 43.749416 + ], + [ + 7.43709, + 43.749954 + ], + [ + 7.437347, + 43.750195 + ], + [ + 7.437589, + 43.75045 + ], + [ + 7.437841, + 43.75071 + ], + [ + 7.43812, + 43.751137 + ], + [ + 7.438431, + 43.751614 + ], + [ + 7.438881, + 43.751606 + ], + [ + 7.439327, + 43.75162 + ], + [ + 7.439826, + 43.751553 + ], + [ + 7.44004, + 43.751488 + ], + [ + 7.440137, + 43.751392 + ], + [ + 7.440062, + 43.751163 + ], + [ + 7.439842, + 43.75103 + ], + [ + 7.43952, + 43.750824 + ], + [ + 7.439203, + 43.750637 + ], + [ + 7.439219, + 43.750423 + ], + [ + 7.439364, + 43.750286 + ], + [ + 7.439616, + 43.75027 + ], + [ + 7.440062, + 43.750523 + ], + [ + 7.440443, + 43.750797 + ], + [ + 7.440115, + 43.750893 + ], + [ + 7.439836, + 43.75065 + ], + [ + 7.439289, + 43.75024 + ], + [ + 7.438694, + 43.749947 + ], + [ + 7.43732, + 43.749363 + ], + [ + 7.435936, + 43.74877 + ], + [ + 7.435287, + 43.74844 + ], + [ + 7.433453, + 43.747387 + ], + [ + 7.432712, + 43.74694 + ], + [ + 7.431956, + 43.746502 + ], + [ + 7.431586, + 43.74628 + ], + [ + 7.431216, + 43.746056 + ], + [ + 7.430974, + 43.745815 + ], + [ + 7.430792, + 43.7456 + ], + [ + 7.430679, + 43.745537 + ], + [ + 7.430668, + 43.74546 + ], + [ + 7.430674, + 43.745377 + ], + [ + 7.43069, + 43.74523 + ], + [ + 7.43062, + 43.745117 + ], + [ + 7.43041, + 43.744785 + ], + [ + 7.430306, + 43.744625 + ], + [ + 7.430225, + 43.74446 + ], + [ + 7.430192, + 43.744396 + ], + [ + 7.430144, + 43.74434 + ], + [ + 7.429972, + 43.744175 + ], + [ + 7.429881, + 43.743988 + ], + [ + 7.429728, + 43.743587 + ], + [ + 7.429689, + 43.743484 + ], + [ + 7.429671, + 43.743435 + ], + [ + 7.429656, + 43.743385 + ], + [ + 7.429612, + 43.743202 + ], + [ + 7.429592, + 43.743034 + ], + [ + 7.429584, + 43.742874 + ], + [ + 7.429596, + 43.742657 + ], + [ + 7.429612, + 43.742485 + ], + [ + 7.429639, + 43.74218 + ], + [ + 7.429783, + 43.741016 + ], + [ + 7.429848, + 43.740414 + ], + [ + 7.429872, + 43.740257 + ], + [ + 7.429858, + 43.740124 + ], + [ + 7.429791, + 43.739834 + ], + [ + 7.42971, + 43.739548 + ], + [ + 7.429573, + 43.73925 + ], + [ + 7.429385, + 43.73896 + ], + [ + 7.42915, + 43.738686 + ], + [ + 7.429027, + 43.738552 + ], + [ + 7.428953, + 43.738483 + ], + [ + 7.428917, + 43.73845 + ], + [ + 7.428875, + 43.738422 + ], + [ + 7.428521, + 43.738182 + ], + [ + 7.428061, + 43.73796 + ], + [ + 7.427626, + 43.737766 + ], + [ + 7.427324, + 43.737656 + ], + [ + 7.427005, + 43.737576 + ], + [ + 7.426667, + 43.737507 + ], + [ + 7.426342, + 43.737473 + ], + [ + 7.42602, + 43.737442 + ], + [ + 7.42571, + 43.737434 + ], + [ + 7.425395, + 43.737434 + ], + [ + 7.42384, + 43.73755 + ], + [ + 7.423571, + 43.73761 + ], + [ + 7.423247, + 43.737644 + ], + [ + 7.42289, + 43.737667 + ], + [ + 7.422737, + 43.737656 + ], + [ + 7.422659, + 43.737644 + ], + [ + 7.42259, + 43.737625 + ], + [ + 7.422582, + 43.7376 + ], + [ + 7.422584, + 43.737576 + ], + [ + 7.422598, + 43.73753 + ], + [ + 7.422646, + 43.7375 + ], + [ + 7.422814, + 43.737434 + ], + [ + 7.423523, + 43.737408 + ], + [ + 7.423972, + 43.737442 + ], + [ + 7.424034, + 43.73743 + ], + [ + 7.424064, + 43.73741 + ], + [ + 7.424055, + 43.737385 + ], + [ + 7.424038, + 43.737366 + ], + [ + 7.423644, + 43.73728 + ], + [ + 7.423225, + 43.73719 + ], + [ + 7.422795, + 43.73711 + ], + [ + 7.422332, + 43.737053 + ], + [ + 7.422099, + 43.73703 + ], + [ + 7.421981, + 43.73701 + ], + [ + 7.421785, + 43.737007 + ], + [ + 7.421583, + 43.736977 + ], + [ + 7.421478, + 43.736946 + ], + [ + 7.421381, + 43.7369 + ], + [ + 7.421202, + 43.7368 + ], + [ + 7.421065, + 43.736702 + ], + [ + 7.421003, + 43.73664 + ], + [ + 7.420967, + 43.736614 + ], + [ + 7.420598, + 43.736317 + ], + [ + 7.420181, + 43.73597 + ], + [ + 7.420098, + 43.7359 + ], + [ + 7.420028, + 43.735836 + ], + [ + 7.419874, + 43.735687 + ], + [ + 7.419729, + 43.73555 + ], + [ + 7.419451, + 43.735283 + ], + [ + 7.419311, + 43.735146 + ], + [ + 7.419177, + 43.735004 + ], + [ + 7.418924, + 43.73472 + ], + [ + 7.418668, + 43.734436 + ], + [ + 7.418515, + 43.73424 + ], + [ + 7.41849, + 43.734142 + ], + [ + 7.41851, + 43.73403 + ], + [ + 7.418537, + 43.733932 + ], + [ + 7.418588, + 43.733727 + ], + [ + 7.418687, + 43.73334 + ], + [ + 7.418813, + 43.732906 + ], + [ + 7.418915, + 43.73265 + ], + [ + 7.418904, + 43.732555 + ], + [ + 7.418859, + 43.732525 + ], + [ + 7.418795, + 43.73252 + ], + [ + 7.418462, + 43.732613 + ], + [ + 7.418294, + 43.73266 + ], + [ + 7.418215, + 43.73269 + ], + [ + 7.41814, + 43.73272 + ], + [ + 7.417854, + 43.732807 + ], + [ + 7.41764, + 43.732853 + ], + [ + 7.417487, + 43.732895 + ], + [ + 7.417425, + 43.732925 + ], + [ + 7.417377, + 43.732986 + ], + [ + 7.417373, + 43.733036 + ], + [ + 7.4174, + 43.7331 + ], + [ + 7.417593, + 43.733456 + ], + [ + 7.417621, + 43.733547 + ], + [ + 7.417609, + 43.733665 + ], + [ + 7.417566, + 43.733784 + ], + [ + 7.417477, + 43.733948 + ], + [ + 7.417422, + 43.73416 + ], + [ + 7.417394, + 43.7342 + ], + [ + 7.417331, + 43.734238 + ], + [ + 7.417137, + 43.73429 + ], + [ + 7.417091, + 43.734406 + ], + [ + 7.417072, + 43.73461 + ], + [ + 7.41707, + 43.734833 + ], + [ + 7.417106, + 43.735027 + ], + [ + 7.417174, + 43.735165 + ], + [ + 7.417213, + 43.735237 + ], + [ + 7.417265, + 43.735313 + ], + [ + 7.417349, + 43.735413 + ], + [ + 7.417468, + 43.735542 + ], + [ + 7.417709, + 43.735783 + ], + [ + 7.417825, + 43.735874 + ], + [ + 7.417894, + 43.735916 + ], + [ + 7.417971, + 43.735947 + ], + [ + 7.418423, + 43.736076 + ], + [ + 7.418604, + 43.736122 + ], + [ + 7.418683, + 43.736156 + ], + [ + 7.418759, + 43.7362 + ], + [ + 7.419186, + 43.736515 + ], + [ + 7.419429, + 43.736725 + ], + [ + 7.419634, + 43.736874 + ], + [ + 7.41982, + 43.737015 + ], + [ + 7.419993, + 43.737167 + ], + [ + 7.420052, + 43.73722 + ], + [ + 7.420099, + 43.737286 + ], + [ + 7.42013, + 43.737335 + ], + [ + 7.420121, + 43.737442 + ], + [ + 7.420076, + 43.73754 + ], + [ + 7.420024, + 43.73758 + ], + [ + 7.419942, + 43.737614 + ], + [ + 7.419759, + 43.737682 + ], + [ + 7.419337, + 43.737827 + ], + [ + 7.419228, + 43.7379 + ], + [ + 7.419127, + 43.737995 + ], + [ + 7.419092, + 43.738087 + ], + [ + 7.419126, + 43.738163 + ], + [ + 7.419173, + 43.738186 + ], + [ + 7.419261, + 43.73819 + ], + [ + 7.419348, + 43.738174 + ], + [ + 7.419405, + 43.73811 + ], + [ + 7.419454, + 43.737915 + ], + [ + 7.419511, + 43.737743 + ], + [ + 7.419544, + 43.737705 + ], + [ + 7.419611, + 43.737644 + ], + [ + 7.419867, + 43.73755 + ], + [ + 7.419964, + 43.737514 + ], + [ + 7.420028, + 43.73747 + ], + [ + 7.420036, + 43.737423 + ], + [ + 7.420034, + 43.73738 + ], + [ + 7.420013, + 43.737335 + ], + [ + 7.41998, + 43.737293 + ], + [ + 7.419899, + 43.73722 + ], + [ + 7.419673, + 43.73708 + ], + [ + 7.419535, + 43.73704 + ], + [ + 7.419489, + 43.737026 + ], + [ + 7.419434, + 43.73703 + ], + [ + 7.419327, + 43.737045 + ], + [ + 7.41915, + 43.73712 + ], + [ + 7.419123, + 43.737137 + ], + [ + 7.41913, + 43.73716 + ], + [ + 7.41912, + 43.73719 + ], + [ + 7.419033, + 43.73725 + ], + [ + 7.41893, + 43.73732 + ], + [ + 7.418659, + 43.73749 + ], + [ + 7.418499, + 43.73756 + ], + [ + 7.418411, + 43.737583 + ], + [ + 7.41831, + 43.7376 + ], + [ + 7.418235, + 43.73759 + ], + [ + 7.418163, + 43.73757 + ], + [ + 7.418037, + 43.737507 + ], + [ + 7.417955, + 43.73744 + ], + [ + 7.417869, + 43.73738 + ], + [ + 7.417664, + 43.737312 + ], + [ + 7.417506, + 43.737274 + ], + [ + 7.417401, + 43.73726 + ], + [ + 7.417366, + 43.737236 + ], + [ + 7.417346, + 43.737206 + ], + [ + 7.417345, + 43.73717 + ], + [ + 7.417311, + 43.737103 + ], + [ + 7.417304, + 43.737064 + ], + [ + 7.417295, + 43.737045 + ], + [ + 7.41729, + 43.737022 + ], + [ + 7.417276, + 43.736973 + ], + [ + 7.417247, + 43.736935 + ], + [ + 7.417186, + 43.736893 + ], + [ + 7.416992, + 43.73685 + ], + [ + 7.416886, + 43.73682 + ], + [ + 7.416842, + 43.736797 + ], + [ + 7.41681, + 43.73677 + ], + [ + 7.416771, + 43.73672 + ], + [ + 7.416749, + 43.736668 + ], + [ + 7.416704, + 43.736313 + ], + [ + 7.416675, + 43.736084 + ], + [ + 7.416665, + 43.735966 + ], + [ + 7.416665, + 43.735855 + ], + [ + 7.416615, + 43.73581 + ], + [ + 7.416623, + 43.73574 + ], + [ + 7.416591, + 43.73564 + ], + [ + 7.416561, + 43.735546 + ], + [ + 7.416504, + 43.735416 + ], + [ + 7.41637, + 43.73514 + ], + [ + 7.41632, + 43.734993 + ], + [ + 7.416289, + 43.73486 + ], + [ + 7.416272, + 43.73474 + ], + [ + 7.416262, + 43.73462 + ], + [ + 7.416245, + 43.734394 + ], + [ + 7.416225, + 43.734295 + ], + [ + 7.416201, + 43.734203 + ], + [ + 7.416174, + 43.734142 + ], + [ + 7.416138, + 43.73409 + ], + [ + 7.416054, + 43.733955 + ], + [ + 7.41599, + 43.733894 + ], + [ + 7.415801, + 43.733715 + ], + [ + 7.415393, + 43.733383 + ], + [ + 7.415356, + 43.733337 + ], + [ + 7.415299, + 43.73332 + ], + [ + 7.415204, + 43.733276 + ], + [ + 7.41514, + 43.73322 + ], + [ + 7.415098, + 43.733154 + ], + [ + 7.415077, + 43.733097 + ], + [ + 7.414878, + 43.732937 + ], + [ + 7.414619, + 43.73273 + ], + [ + 7.414414, + 43.73253 + ], + [ + 7.414343, + 43.73237 + ], + [ + 7.4143, + 43.73213 + ], + [ + 7.414363, + 43.731937 + ], + [ + 7.414526, + 43.731796 + ], + [ + 7.414589, + 43.73177 + ], + [ + 7.414902, + 43.73153 + ], + [ + 7.415022, + 43.73144 + ], + [ + 7.415058, + 43.73137 + ], + [ + 7.415065, + 43.731266 + ], + [ + 7.415031, + 43.731213 + ], + [ + 7.414972, + 43.73117 + ], + [ + 7.414802, + 43.731125 + ], + [ + 7.414583, + 43.7311 + ], + [ + 7.414045, + 43.731014 + ], + [ + 7.413182, + 43.730873 + ], + [ + 7.413132, + 43.730865 + ], + [ + 7.413081, + 43.730846 + ], + [ + 7.412977, + 43.73082 + ], + [ + 7.412864, + 43.73075 + ], + [ + 7.412629, + 43.730595 + ], + [ + 7.41271, + 43.730377 + ], + [ + 7.412778, + 43.72999 + ], + [ + 7.412793, + 43.729607 + ], + [ + 7.412826, + 43.72954 + ], + [ + 7.412839, + 43.72948 + ], + [ + 7.412739, + 43.729347 + ], + [ + 7.412632, + 43.729225 + ], + [ + 7.412401, + 43.728916 + ], + [ + 7.412397, + 43.72874 + ], + [ + 7.412365, + 43.728737 + ], + [ + 7.412332, + 43.72873 + ], + [ + 7.412307, + 43.72871 + ], + [ + 7.412295, + 43.728676 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640001", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "f32f0c05-4491-4a93-be0c-19420d4407f0", + "name": "4g-macro-cell-3", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "3030303" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.416715, + 43.733616 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "0ca4bfcc-7346-4f57-9c85-bb92642ec37e", + "name": "10.1.0.2", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.4187, + 43.732403 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010002", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "1835f9ea-1f72-47e8-98b7-f0a5e4ff44e4", + "name": "wifi-ap-1", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C01010101" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.419891, + 43.727787 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "fb7ff207-f67d-4a1d-a353-038e96085d06", + "name": "wifi-ap-2", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C02020202" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.42179, + 43.727474 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "37be6821-a5f3-4af9-af0a-ceff4c0f66be", + "name": "5g-small-cell-1", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "101010101" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.415385, + 43.730846 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "ab60918a-acd8-4f4e-9693-d2fbffae9b72", + "name": "5g-small-cell-2", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "202020202" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.416962, + 43.731453 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "de2d952d-11b1-4294-8a67-6d994f1a5f37", + "name": "5g-small-cell-3", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "303030303" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.418507, + 43.731865 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + }, + { + "id": "4c3c9568-6408-4900-9d97-4556f6d805db", + "name": "zone02", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "darkred" + }, + "networkLocations": [ + { + "id": "zone02-DEFAULT", + "name": "zone02-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "78327873-c828-47da-8a5b-3c74d251dbbc", + "name": "4g-macro-cell-4", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "4040404" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.423547, + 43.731724 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "67a40b8b-5777-4e96-a896-8622af4a741f", + "name": "10.100.0.3", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427423, + 43.731323 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.427423, + 43.731323 + ], + [ + 7.427463, + 43.73143 + ], + [ + 7.427455, + 43.731537 + ], + [ + 7.427423, + 43.731598 + ], + [ + 7.427439, + 43.731667 + ], + [ + 7.427479, + 43.731766 + ], + [ + 7.427951, + 43.73259 + ], + [ + 7.427989, + 43.732677 + ], + [ + 7.427962, + 43.73281 + ], + [ + 7.427852, + 43.732925 + ], + [ + 7.427655, + 43.732994 + ], + [ + 7.427556, + 43.733 + ], + [ + 7.425453, + 43.73256 + ], + [ + 7.42436, + 43.7323 + ], + [ + 7.424033, + 43.732254 + ], + [ + 7.423397, + 43.73226 + ], + [ + 7.422675, + 43.73218 + ], + [ + 7.422588, + 43.7322 + ], + [ + 7.42249, + 43.732243 + ], + [ + 7.422382, + 43.732323 + ], + [ + 7.422415, + 43.73246 + ], + [ + 7.422351, + 43.73269 + ], + [ + 7.422257, + 43.73279 + ], + [ + 7.4221, + 43.73293 + ], + [ + 7.421912, + 43.733208 + ], + [ + 7.421604, + 43.733833 + ], + [ + 7.421522, + 43.734016 + ], + [ + 7.421377, + 43.73445 + ], + [ + 7.421289, + 43.73488 + ], + [ + 7.421232, + 43.735355 + ], + [ + 7.421211, + 43.73588 + ], + [ + 7.421291, + 43.73624 + ], + [ + 7.421447, + 43.736584 + ], + [ + 7.421576, + 43.73678 + ], + [ + 7.4216, + 43.7368 + ], + [ + 7.421723, + 43.73684 + ], + [ + 7.424054, + 43.73709 + ], + [ + 7.424611, + 43.737144 + ], + [ + 7.424942, + 43.73719 + ], + [ + 7.425462, + 43.737217 + ], + [ + 7.426063, + 43.737286 + ], + [ + 7.426653, + 43.737366 + ], + [ + 7.427215, + 43.73749 + ], + [ + 7.427498, + 43.737583 + ], + [ + 7.427762, + 43.73765 + ], + [ + 7.42799, + 43.737732 + ], + [ + 7.428867, + 43.738125 + ], + [ + 7.429136, + 43.73831 + ], + [ + 7.429626, + 43.738724 + ], + [ + 7.429853, + 43.73897 + ], + [ + 7.430023, + 43.739243 + ], + [ + 7.430125, + 43.7395 + ], + [ + 7.430301, + 43.740196 + ], + [ + 7.430422, + 43.741196 + ], + [ + 7.430411, + 43.741318 + ], + [ + 7.430493, + 43.741344 + ], + [ + 7.430568, + 43.741417 + ], + [ + 7.430773, + 43.74177 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640003", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "ca3b5b42-0e99-4553-9d19-4696cd8fe469", + "name": "4g-macro-cell-5", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "5050505" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.429257, + 43.73411 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "c18e3f93-79c4-427d-af91-81996adab3e7", + "name": "10.1.0.3", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.426565, + 43.73298 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010003", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "1d2683f4-086e-47d6-abbb-07fa481a25fb", + "name": "10.10.0.1", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.43166, + 43.736156 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.43166, + 43.736156 + ], + [ + 7.431723, + 43.736115 + ], + [ + 7.431162, + 43.735607 + ], + [ + 7.430685, + 43.73518 + ], + [ + 7.43043, + 43.73532 + ], + [ + 7.429067, + 43.734108 + ], + [ + 7.428863, + 43.734184 + ], + [ + 7.428388, + 43.734116 + ], + [ + 7.427817, + 43.73446 + ], + [ + 7.427689, + 43.734917 + ], + [ + 7.427581, + 43.73499 + ], + [ + 7.427308, + 43.734955 + ], + [ + 7.42723, + 43.734844 + ], + [ + 7.427281, + 43.734646 + ], + [ + 7.427411, + 43.734657 + ], + [ + 7.427709, + 43.73362 + ], + [ + 7.424581, + 43.732964 + ], + [ + 7.424312, + 43.73363 + ], + [ + 7.424512, + 43.73368 + ], + [ + 7.424534, + 43.733707 + ], + [ + 7.424534, + 43.73373 + ], + [ + 7.424477, + 43.733753 + ], + [ + 7.42423, + 43.73371 + ], + [ + 7.424029, + 43.733665 + ], + [ + 7.423999, + 43.733624 + ], + [ + 7.424058, + 43.73358 + ], + [ + 7.424246, + 43.733624 + ], + [ + 7.424522, + 43.732952 + ], + [ + 7.423748, + 43.73279 + ], + [ + 7.423545, + 43.733307 + ], + [ + 7.423508, + 43.7333 + ], + [ + 7.423535, + 43.73324 + ], + [ + 7.423668, + 43.732857 + ], + [ + 7.423455, + 43.73282 + ], + [ + 7.423356, + 43.73307 + ], + [ + 7.423199, + 43.733135 + ], + [ + 7.423043, + 43.73321 + ], + [ + 7.422855, + 43.73337 + ], + [ + 7.422744, + 43.733517 + ], + [ + 7.422694, + 43.733624 + ], + [ + 7.422659, + 43.73374 + ], + [ + 7.422578, + 43.734074 + ], + [ + 7.422604, + 43.734188 + ], + [ + 7.422541, + 43.734425 + ], + [ + 7.422509, + 43.73456 + ], + [ + 7.422697, + 43.73458 + ], + [ + 7.422847, + 43.734077 + ], + [ + 7.422881, + 43.73408 + ], + [ + 7.422756, + 43.73459 + ], + [ + 7.423254, + 43.73466 + ], + [ + 7.423413, + 43.73412 + ], + [ + 7.423512, + 43.73413 + ], + [ + 7.423351, + 43.734753 + ], + [ + 7.42326, + 43.73506 + ], + [ + 7.423223, + 43.73522 + ], + [ + 7.423173, + 43.735416 + ], + [ + 7.423072, + 43.7354 + ], + [ + 7.4232, + 43.734898 + ], + [ + 7.423191, + 43.734848 + ], + [ + 7.422693, + 43.734776 + ], + [ + 7.42256, + 43.7353 + ], + [ + 7.422513, + 43.73529 + ], + [ + 7.422655, + 43.734776 + ], + [ + 7.422423, + 43.734737 + ], + [ + 7.422299, + 43.735203 + ], + [ + 7.422233, + 43.735435 + ], + [ + 7.42215, + 43.735508 + ], + [ + 7.422032, + 43.735546 + ], + [ + 7.421888, + 43.735535 + ], + [ + 7.421866, + 43.735683 + ], + [ + 7.421872, + 43.735928 + ], + [ + 7.421975, + 43.736275 + ], + [ + 7.422107, + 43.73651 + ], + [ + 7.422269, + 43.73673 + ], + [ + 7.42493, + 43.737007 + ], + [ + 7.425109, + 43.73692 + ], + [ + 7.425631, + 43.736973 + ], + [ + 7.425674, + 43.736706 + ], + [ + 7.425721, + 43.736477 + ], + [ + 7.425736, + 43.736366 + ], + [ + 7.425787, + 43.736378 + ], + [ + 7.425655, + 43.737087 + ], + [ + 7.426748, + 43.73719 + ], + [ + 7.426931, + 43.736523 + ], + [ + 7.427054, + 43.736073 + ], + [ + 7.427052, + 43.73606 + ], + [ + 7.427027, + 43.736053 + ], + [ + 7.426908, + 43.73604 + ], + [ + 7.426963, + 43.73584 + ], + [ + 7.427089, + 43.73575 + ], + [ + 7.427368, + 43.735783 + ], + [ + 7.427427, + 43.735886 + ], + [ + 7.427096, + 43.737133 + ], + [ + 7.429107, + 43.73754 + ], + [ + 7.429795, + 43.736343 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0001", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "ec32caa6-ddc6-4f5e-a815-654782b31abb", + "name": "10.100.0.2", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427394, + 43.73243 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.427394, + 43.73243 + ], + [ + 7.427393, + 43.732353 + ], + [ + 7.427373, + 43.732296 + ], + [ + 7.427259, + 43.73213 + ], + [ + 7.427153, + 43.73204 + ], + [ + 7.42705, + 43.73197 + ], + [ + 7.426688, + 43.73188 + ], + [ + 7.426318, + 43.731792 + ], + [ + 7.425634, + 43.731598 + ], + [ + 7.425535, + 43.731598 + ], + [ + 7.425433, + 43.73161 + ], + [ + 7.425336, + 43.73161 + ], + [ + 7.425151, + 43.731556 + ], + [ + 7.424628, + 43.73141 + ], + [ + 7.424135, + 43.731285 + ], + [ + 7.423933, + 43.73179 + ], + [ + 7.423861, + 43.731827 + ], + [ + 7.423566, + 43.73177 + ], + [ + 7.423389, + 43.731663 + ], + [ + 7.423225, + 43.73154 + ], + [ + 7.422997, + 43.731396 + ], + [ + 7.422858, + 43.731335 + ], + [ + 7.422794, + 43.731304 + ], + [ + 7.422718, + 43.731285 + ], + [ + 7.422579, + 43.731262 + ], + [ + 7.422418, + 43.731255 + ], + [ + 7.422195, + 43.731262 + ], + [ + 7.421973, + 43.731285 + ], + [ + 7.421833, + 43.731297 + ], + [ + 7.421705, + 43.73133 + ], + [ + 7.421624, + 43.731327 + ], + [ + 7.421565, + 43.731323 + ], + [ + 7.421501, + 43.731297 + ], + [ + 7.421483, + 43.731228 + ], + [ + 7.421468, + 43.73116 + ], + [ + 7.421443, + 43.73103 + ], + [ + 7.421409, + 43.73089 + ], + [ + 7.421372, + 43.73075 + ], + [ + 7.421435, + 43.730694 + ], + [ + 7.421506, + 43.730682 + ], + [ + 7.421731, + 43.73061 + ], + [ + 7.421821, + 43.73055 + ], + [ + 7.421992, + 43.730377 + ], + [ + 7.42217, + 43.730206 + ], + [ + 7.422477, + 43.729942 + ], + [ + 7.422555, + 43.729897 + ], + [ + 7.422657, + 43.729866 + ], + [ + 7.422801, + 43.729847 + ], + [ + 7.422969, + 43.729862 + ], + [ + 7.423137, + 43.72991 + ], + [ + 7.423295, + 43.72997 + ], + [ + 7.423507, + 43.73005 + ], + [ + 7.423712, + 43.730137 + ], + [ + 7.42411, + 43.73032 + ], + [ + 7.424566, + 43.730526 + ], + [ + 7.424802, + 43.730633 + ], + [ + 7.42501, + 43.730743 + ], + [ + 7.425791, + 43.731174 + ], + [ + 7.426482, + 43.73159 + ], + [ + 7.426963, + 43.731895 + ], + [ + 7.427077, + 43.731968 + ], + [ + 7.427186, + 43.732048 + ], + [ + 7.42729, + 43.73213 + ], + [ + 7.427362, + 43.732227 + ], + [ + 7.427418, + 43.732353 + ], + [ + 7.427415, + 43.732384 + ], + [ + 7.427411, + 43.732407 + ], + [ + 7.427394, + 43.73243 + ], + [ + 7.427383, + 43.732483 + ], + [ + 7.427288, + 43.732548 + ], + [ + 7.427203, + 43.73256 + ], + [ + 7.427085, + 43.732555 + ], + [ + 7.426884, + 43.732517 + ], + [ + 7.425842, + 43.73234 + ], + [ + 7.424798, + 43.732162 + ], + [ + 7.424667, + 43.73214 + ], + [ + 7.42444, + 43.7321 + ], + [ + 7.424072, + 43.732044 + ], + [ + 7.423361, + 43.731934 + ], + [ + 7.423054, + 43.7319 + ], + [ + 7.42274, + 43.731876 + ], + [ + 7.422414, + 43.73187 + ], + [ + 7.422089, + 43.731876 + ], + [ + 7.421887, + 43.731884 + ], + [ + 7.421699, + 43.731895 + ], + [ + 7.421429, + 43.731926 + ], + [ + 7.421102, + 43.73198 + ], + [ + 7.420582, + 43.732067 + ], + [ + 7.420058, + 43.732174 + ], + [ + 7.419941, + 43.7322 + ], + [ + 7.419804, + 43.732254 + ], + [ + 7.419237, + 43.732403 + ], + [ + 7.419181, + 43.732418 + ], + [ + 7.419127, + 43.73245 + ], + [ + 7.419071, + 43.73248 + ], + [ + 7.419063, + 43.732513 + ], + [ + 7.419017, + 43.732548 + ], + [ + 7.418957, + 43.73256 + ], + [ + 7.418904, + 43.732555 + ], + [ + 7.418859, + 43.732525 + ], + [ + 7.418795, + 43.73252 + ], + [ + 7.418733, + 43.732536 + ], + [ + 7.418541, + 43.73259 + ], + [ + 7.418358, + 43.732643 + ], + [ + 7.418179, + 43.732704 + ], + [ + 7.417854, + 43.732807 + ], + [ + 7.417669, + 43.732845 + ], + [ + 7.417487, + 43.732895 + ], + [ + 7.417425, + 43.732925 + ], + [ + 7.417405, + 43.73295 + ], + [ + 7.417605, + 43.73323 + ], + [ + 7.417778, + 43.733547 + ], + [ + 7.417915, + 43.733955 + ], + [ + 7.41809, + 43.734455 + ], + [ + 7.418133, + 43.734684 + ], + [ + 7.418188, + 43.7349 + ], + [ + 7.418289, + 43.735046 + ], + [ + 7.4184, + 43.735184 + ], + [ + 7.418585, + 43.735382 + ], + [ + 7.418671, + 43.735455 + ], + [ + 7.418768, + 43.73552 + ], + [ + 7.419179, + 43.735825 + ], + [ + 7.419366, + 43.73598 + ], + [ + 7.419533, + 43.73615 + ], + [ + 7.419881, + 43.736473 + ], + [ + 7.420241, + 43.736786 + ], + [ + 7.420468, + 43.73692 + ], + [ + 7.420685, + 43.73703 + ], + [ + 7.420944, + 43.73716 + ], + [ + 7.421228, + 43.737274 + ], + [ + 7.421522, + 43.737373 + ], + [ + 7.421826, + 43.73747 + ], + [ + 7.422055, + 43.73752 + ], + [ + 7.422283, + 43.73756 + ], + [ + 7.422403, + 43.73758 + ], + [ + 7.422472, + 43.737526 + ], + [ + 7.422561, + 43.737473 + ], + [ + 7.422688, + 43.737442 + ], + [ + 7.422814, + 43.737434 + ], + [ + 7.423132, + 43.737423 + ], + [ + 7.423523, + 43.737408 + ], + [ + 7.423972, + 43.737442 + ], + [ + 7.424034, + 43.73743 + ], + [ + 7.424064, + 43.73741 + ], + [ + 7.424055, + 43.737385 + ], + [ + 7.424028, + 43.73735 + ], + [ + 7.423706, + 43.737286 + ], + [ + 7.423228, + 43.737183 + ], + [ + 7.422826, + 43.737103 + ], + [ + 7.42263, + 43.737076 + ], + [ + 7.422426, + 43.737053 + ], + [ + 7.42209, + 43.73702 + ], + [ + 7.421949, + 43.73701 + ], + [ + 7.421754, + 43.737003 + ], + [ + 7.421639, + 43.736984 + ], + [ + 7.421527, + 43.73696 + ], + [ + 7.421421, + 43.73692 + ], + [ + 7.421323, + 43.73687 + ], + [ + 7.421228, + 43.736813 + ], + [ + 7.421133, + 43.73675 + ], + [ + 7.421065, + 43.736702 + ], + [ + 7.421003, + 43.73664 + ], + [ + 7.420847, + 43.73652 + ], + [ + 7.420513, + 43.736244 + ], + [ + 7.420098, + 43.7359 + ], + [ + 7.419858, + 43.735672 + ], + [ + 7.41939, + 43.73522 + ], + [ + 7.41916, + 43.734985 + ], + [ + 7.418728, + 43.734505 + ], + [ + 7.418581, + 43.734325 + ], + [ + 7.418515, + 43.73424 + ], + [ + 7.41849, + 43.734142 + ], + [ + 7.418601, + 43.733677 + ], + [ + 7.418681, + 43.73336 + ], + [ + 7.418772, + 43.733047 + ], + [ + 7.418813, + 43.732906 + ], + [ + 7.418878, + 43.732742 + ], + [ + 7.418915, + 43.73265 + ], + [ + 7.41891, + 43.732605 + ], + [ + 7.418904, + 43.732555 + ], + [ + 7.418859, + 43.732525 + ], + [ + 7.418849, + 43.73247 + ], + [ + 7.418872, + 43.732426 + ], + [ + 7.418902, + 43.73241 + ], + [ + 7.418951, + 43.732403 + ], + [ + 7.419008, + 43.732403 + ], + [ + 7.419118, + 43.73241 + ], + [ + 7.419225, + 43.73239 + ], + [ + 7.4198, + 43.73224 + ], + [ + 7.419934, + 43.732185 + ], + [ + 7.420066, + 43.73216 + ], + [ + 7.420587, + 43.73205 + ], + [ + 7.421116, + 43.73196 + ], + [ + 7.421403, + 43.73192 + ], + [ + 7.421688, + 43.731884 + ], + [ + 7.422084, + 43.73186 + ], + [ + 7.422473, + 43.731853 + ], + [ + 7.422827, + 43.73187 + ], + [ + 7.42319, + 43.731903 + ], + [ + 7.423363, + 43.731922 + ], + [ + 7.423535, + 43.73195 + ], + [ + 7.423881, + 43.732002 + ], + [ + 7.425014, + 43.73219 + ], + [ + 7.425588, + 43.73229 + ], + [ + 7.426168, + 43.732388 + ], + [ + 7.426901, + 43.732506 + ], + [ + 7.427068, + 43.732536 + ], + [ + 7.427147, + 43.732548 + ], + [ + 7.427227, + 43.732548 + ], + [ + 7.427279, + 43.732533 + ], + [ + 7.427352, + 43.73249 + ], + [ + 7.427394, + 43.73243 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640002", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "bc76299f-1394-46d7-ab61-1791c883718d", + "name": "wifi-ap-4", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C04040404" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427702, + 43.733475 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "4a0a69b3-7c5a-475e-a34d-a0c9177e972e", + "name": "wifi-ap-3", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C03030303" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.422327, + 43.73342 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "66938f56-4e52-47e2-baa2-501f026e4eb3", + "name": "wifi-ap-5", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C05050505" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421984, + 43.735027 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "b50df04b-c3bd-46c4-a7d4-5de55e74b444", + "name": "5g-small-cell-4", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "404040404" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.419741, + 43.732998 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "bddd61c9-6ddd-4f7e-9082-0d004fced7ab", + "name": "5g-small-cell-5", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "505050505" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421158, + 43.732063 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "8e0dad0d-72c9-4b6d-850b-06b02243b1d3", + "name": "5g-small-cell-6", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "606060606" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421865, + 43.733368 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "318f3796-4091-409e-8767-44ba36600a34", + "name": "5g-small-cell-7", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "707070707" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.420943, + 43.734097 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "7d3688cc-0dda-48b1-a171-b817c176e053", + "name": "5g-small-cell-8", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "808080808" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.425063, + 43.732555 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "91691048-64bb-4d2f-917f-4219a95881c0", + "name": "5g-small-cell-9", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "909090909" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427027, + 43.73308 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + }, + { + "id": "472c9927-800a-46e9-9d62-d08b09080dd5", + "name": "zone03", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "darkorange" + }, + "networkLocations": [ + { + "id": "zone03-DEFAULT", + "name": "zone03-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "e4ce8267-5433-4b2b-aa5a-9a40de76b685", + "name": "4g-macro-cell-6", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "6060606" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421007, + 43.737087 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "c3bc8d8d-170b-45bb-93a9-8ce658571321", + "name": "10.1.0.1", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421802, + 43.736515 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010001", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "663df9f0-57af-43aa-ba2e-e45a4b2f3c28", + "name": "4g-macro-cell-7", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "7070707" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.426414, + 43.739445 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "190a7ff6-7b77-479a-8f23-1f5c7f935914", + "name": "wifi-ap-6", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C06060606" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.425288, + 43.73727 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "99e67725-25b1-4274-8b05-fe253b0e5ee6", + "name": "wifi-ap-7", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C07070707" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.429639, + 43.739006 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "a3067167-cdaf-4264-9e32-abfc0ede0564", + "name": "5g-small-cell-10", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "A0A0A0A0A" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.426736, + 43.73771 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "2c2ba76c-8880-4c5b-a949-a161713910f4", + "name": "5g-small-cell-11", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "B0B0B0B0B" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.42856, + 43.738018 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "d9ca5e58-15fe-4161-840f-f3155db3729b", + "name": "5g-small-cell-12", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "C0C0C0C0C" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.42738, + 43.739075 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + }, + { + "id": "d56c4e67-0e0f-4456-9431-290de7b674c8", + "name": "zone04", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "limegreen" + }, + "networkLocations": [ + { + "id": "zone04-DEFAULT", + "name": "zone04-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "fc4d9ec8-ebb6-4b5d-a281-bb74af729b4a", + "name": "4g-macro-cell-8", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "8080808" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.429504, + 43.74301 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "b73b3ef5-dba0-44af-a648-bbda7191c249", + "name": "4g-macro-cell-9", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "9090909" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.432551, + 43.746544 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "e1d47a4b-0664-4915-81ea-eb0d70af15a7", + "name": "4g-macro-cell-10", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "A0A0A0A" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.437573, + 43.748993 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "4e423f57-daef-4c1c-b30e-45e88e3c9366", + "name": "10.1.0.4", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438248, + 43.74835 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010004", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "824cf1bf-f91d-44c2-906d-e939fa3339cd", + "name": "10.10.0.2", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438755, + 43.748512 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.438755, + 43.748512 + ], + [ + 7.438267, + 43.748566 + ], + [ + 7.437795, + 43.7484 + ], + [ + 7.437684, + 43.748253 + ], + [ + 7.437555, + 43.748203 + ], + [ + 7.437341, + 43.748203 + ], + [ + 7.43673, + 43.747974 + ], + [ + 7.436623, + 43.747704 + ], + [ + 7.436237, + 43.747643 + ], + [ + 7.435969, + 43.74743 + ], + [ + 7.435841, + 43.74717 + ], + [ + 7.435504, + 43.74695 + ], + [ + 7.434829, + 43.74691 + ], + [ + 7.434293, + 43.746685 + ], + [ + 7.433882, + 43.746166 + ], + [ + 7.433431, + 43.746063 + ], + [ + 7.432831, + 43.745686 + ], + [ + 7.432585, + 43.745182 + ], + [ + 7.432767, + 43.744633 + ], + [ + 7.432552, + 43.744244 + ], + [ + 7.432617, + 43.743763 + ], + [ + 7.432305, + 43.743305 + ], + [ + 7.431682, + 43.742676 + ], + [ + 7.431136, + 43.74201 + ], + [ + 7.430524, + 43.741123 + ], + [ + 7.430432, + 43.740696 + ], + [ + 7.430382, + 43.740437 + ], + [ + 7.430384, + 43.74021 + ], + [ + 7.430288, + 43.739372 + ], + [ + 7.429773, + 43.73849 + ], + [ + 7.429976, + 43.738228 + ], + [ + 7.429654, + 43.73791 + ], + [ + 7.429371, + 43.73765 + ], + [ + 7.430027, + 43.736446 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0002", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "097f79f4-bf76-4be0-be28-5acc3bdb0dba", + "name": "10.100.0.4", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438357, + 43.74781 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.438357, + 43.74781 + ], + [ + 7.438296, + 43.747852 + ], + [ + 7.438229, + 43.74791 + ], + [ + 7.43813, + 43.74803 + ], + [ + 7.438074, + 43.748108 + ], + [ + 7.438025, + 43.748264 + ], + [ + 7.437991, + 43.748398 + ], + [ + 7.437937, + 43.748512 + ], + [ + 7.437883, + 43.74859 + ], + [ + 7.437741, + 43.74875 + ], + [ + 7.437593, + 43.748924 + ], + [ + 7.437481, + 43.74905 + ], + [ + 7.437416, + 43.74911 + ], + [ + 7.437419, + 43.749146 + ], + [ + 7.43739, + 43.749184 + ], + [ + 7.437339, + 43.749203 + ], + [ + 7.437285, + 43.74919 + ], + [ + 7.437256, + 43.74917 + ], + [ + 7.43555, + 43.74844 + ], + [ + 7.435097, + 43.748184 + ], + [ + 7.435008, + 43.748077 + ], + [ + 7.434885, + 43.747814 + ], + [ + 7.434788, + 43.747723 + ], + [ + 7.433391, + 43.74693 + ], + [ + 7.433243, + 43.74679 + ], + [ + 7.43301, + 43.746536 + ], + [ + 7.432804, + 43.74642 + ], + [ + 7.432353, + 43.74604 + ], + [ + 7.431985, + 43.74559 + ], + [ + 7.431216, + 43.74428 + ], + [ + 7.430556, + 43.74307 + ], + [ + 7.430336, + 43.741848 + ], + [ + 7.430226, + 43.74178 + ], + [ + 7.430038, + 43.741756 + ], + [ + 7.429864, + 43.741695 + ], + [ + 7.429766, + 43.74158 + ], + [ + 7.429731, + 43.741432 + ], + [ + 7.429797, + 43.741234 + ], + [ + 7.42986, + 43.74115 + ], + [ + 7.42995, + 43.74109 + ], + [ + 7.430094, + 43.74108 + ], + [ + 7.430255, + 43.74114 + ], + [ + 7.430392, + 43.74126 + ], + [ + 7.430475, + 43.7415 + ], + [ + 7.430642, + 43.742832 + ], + [ + 7.430717, + 43.74308 + ], + [ + 7.432086, + 43.745556 + ], + [ + 7.432441, + 43.74601 + ], + [ + 7.433179, + 43.746563 + ], + [ + 7.434716, + 43.747498 + ], + [ + 7.434871, + 43.74766 + ], + [ + 7.435108, + 43.74807 + ], + [ + 7.435305, + 43.74823 + ], + [ + 7.435923, + 43.748547 + ], + [ + 7.436871, + 43.748955 + ], + [ + 7.437138, + 43.749054 + ], + [ + 7.437248, + 43.74907 + ], + [ + 7.437368, + 43.749058 + ], + [ + 7.43747, + 43.74894 + ], + [ + 7.437652, + 43.748714 + ], + [ + 7.437765, + 43.74859 + ], + [ + 7.437835, + 43.748512 + ], + [ + 7.437883, + 43.74838 + ], + [ + 7.437918, + 43.74817 + ], + [ + 7.437931, + 43.748116 + ], + [ + 7.438001, + 43.747997 + ], + [ + 7.438098, + 43.747868 + ], + [ + 7.438138, + 43.747826 + ], + [ + 7.438159, + 43.74777 + ], + [ + 7.438159, + 43.747692 + ], + [ + 7.438173, + 43.747616 + ], + [ + 7.438205, + 43.747566 + ], + [ + 7.438264, + 43.747528 + ], + [ + 7.438347, + 43.747513 + ], + [ + 7.438443, + 43.74752 + ], + [ + 7.438505, + 43.74755 + ], + [ + 7.438548, + 43.7476 + ], + [ + 7.438569, + 43.747654 + ], + [ + 7.438545, + 43.747726 + ], + [ + 7.438494, + 43.747772 + ], + [ + 7.438431, + 43.7478 + ], + [ + 7.438357, + 43.74781 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640004", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "4a3da8ed-e833-48bf-b833-2c67512e53cf", + "name": "wifi-ap-8", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C08080808" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.431644, + 43.746662 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "d1cc062f-bb7f-40cf-91af-5593376f3b4d", + "name": "wifi-ap-9", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C09090909" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.435867, + 43.748856 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "c4df58ab-17a2-49e0-b5fa-531a6ce15baf", + "name": "wifi-ap-10", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C0A0A0A0A" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438055, + 43.748734 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "3fbf9ec8-3932-455c-8352-0d06b7bb7a15", + "name": "5g-small-cell-13", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "D0D0D0D0D" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.431907, + 43.74543 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "80e3b677-56cb-495c-b798-e19f96d491b9", + "name": "5g-small-cell-14", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "E0E0E0E0E" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.433109, + 43.746513 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "dcb66c87-1854-4c8e-ae88-72b14df9aaff", + "name": "5g-small-cell-15", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "F0F0F0F0F" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.434376, + 43.747337 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "10b048d1-2fba-486d-89a0-d1a3191b90b4", + "name": "5g-small-cell-16", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "010101010" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.435985, + 43.747784 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "35602880-9727-4ed6-8f53-fe0ffab22cb4", + "name": "5g-small-cell-17", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "111111111" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.437487, + 43.7487 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "4aef0f33-51d2-472c-8441-b5c55f0de626", + "name": "5g-small-cell-18", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "212121212" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438839, + 43.749706 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "3396c6ae-28f8-4c8b-ba12-9991bddeed61", + "name": "5g-small-cell-19", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "313131313" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.4371, + 43.750282 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "246f3830-3b56-4359-9452-b17f34426888", + "name": "5g-small-cell-20", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "414141414" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.436006, + 43.749382 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "da565fc0-0d1e-47a1-944e-2d77441051de", + "name": "wifi-ap-11", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C0B0B0B0B" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.43891, + 43.74822 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + } + ], + "interZoneLatency": null, + "interZoneLatencyVariation": null, + "interZoneThroughput": null, + "interZonePacketLoss": null, + "meta": null, + "userMeta": null + } + ], + "interDomainLatency": null, + "interDomainLatencyVariation": null, + "interDomainThroughput": null, + "interDomainPacketLoss": null, + "meta": null + }, + "id": null, + "description": null, + "config": null +} +` + +var sandboxName string + +const redisTestAddr = "localhost:30380" +const influxTestAddr = "http://localhost:30986" +const testScenarioName = "testScenario" + +var m *mod.Model +var mqLocal *mq.MsgQueue + + +func TestSuccessSubscriptionCellChange(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initializeVars() + reInitHttpReq() +/* + err := Init() + if err != nil { + t.Fatalf("Error initializing test basic procedure") + } + err = Run() + if err != nil { + t.Fatalf("Error running test basic procedure") + } +*/ + fmt.Println("Set a scenario") + initialiseScenario(testScenario) + +// fmt.Println("Terminate a scenario") +// terminateScenario() +} + +func terminateScenario() { + if mqLocal != nil { + msg := mqLocal.CreateMsg(mq.MsgScenarioTerminate, mq.TargetAll, testScenarioName) + err := mqLocal.SendMsg(msg) + if err != nil { + log.Error("Failed to send message: ", err) + } + time.Sleep(100 * time.Millisecond) + } +} + +func initializeVars() { + + mod.DbAddress = redisTestAddr + sandboxName = testScenarioName + Initialise() + +} + +func initialiseScenario(testScenario string) { + + cfg := mod.ModelCfg{ + Name: testScenarioName, + Namespace: sandboxName, + Module: "test-mod", + UpdateCb: nil, + DbAddr: redisTestAddr, + } + + var err error + m, err = mod.NewModel(cfg) + if err != nil { + log.Error("Failed to create model: ", err) + return + } + + // Create message queue + mqLocal, err = mq.NewMsgQueue(mq.GetLocalName(testScenarioName), "test-mod", testScenarioName, redisTestAddr) + if err != nil { + log.Error("Failed to create Message Queue with error: ", err) + return + } + log.Info("Message Queue created") + + fmt.Println("Set Model") + err = m.SetScenario([]byte(testScenario)) + if err != nil { + log.Error("Failed to set model: ", err) + return + } + + err = m.Activate() + if err != nil { + log.Error("Failed to activate scenario with err: ", err.Error()) + return + } + + msg := mqLocal.CreateMsg(mq.MsgScenarioActivate, mq.TargetAll, testScenarioName) + err = mqLocal.SendMsg(msg) + if err != nil { + log.Error("Failed to send message: ", err) + return + } + + time.Sleep(100 * time.Millisecond) +} + diff --git a/test/system/test.json b/test/system/test.json new file mode 100644 index 000000000..5690091b9 --- /dev/null +++ b/test/system/test.json @@ -0,0 +1,6910 @@ +{ + "version": "1.5.6", + "name": "4g-5g-wifi-macro", + "deployment": { + "netChar": { + "latency": 50, + "latencyVariation": 10, + "latencyDistribution": "Normal", + "throughputDl": 1000, + "throughputUl": 1000, + "throughput": null, + "packetLoss": null + }, + "userMeta": { + "mec-sandbox": "{\"defaultStaticUeCount\": 1, \"defaultLowVelocityUeCount\": 1, \"defaultHighVelocityUeCount\": 1, \"highVelocitySpeedThreshold\": 10}", + "network-info": "{\"type\": \"local\", \"path\":\"4G-Macro-Network-Topology.png\"}" + }, + "domains": [ + { + "id": "PUBLIC", + "name": "PUBLIC", + "type": "PUBLIC", + "netChar": { + "latency": 6, + "latencyVariation": 2, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "zones": [ + { + "id": "PUBLIC-COMMON", + "name": "PUBLIC-COMMON", + "type": "COMMON", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "networkLocations": [ + { + "id": "PUBLIC-COMMON-DEFAULT", + "name": "PUBLIC-COMMON-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "meta": null, + "userMeta": null + } + ], + "interZoneLatency": null, + "interZoneLatencyVariation": null, + "interZoneThroughput": null, + "interZonePacketLoss": null, + "meta": null, + "userMeta": null, + "cellularDomainConfig": null + }, + { + "id": "f1c5f2fe-5fbb-48fa-a0df-6ad00e4eeb4c", + "name": "sandbox-operator", + "type": "OPERATOR-CELLULAR", + "netChar": { + "latency": 6, + "latencyVariation": 2, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "cellularDomainConfig": { + "mnc": "001", + "mcc": "001", + "defaultCellId": "FFFFFFF" + }, + "zones": [ + { + "id": "sandbox-operator-COMMON", + "name": "sandbox-operator-COMMON", + "type": "COMMON", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "networkLocations": [ + { + "id": "sandbox-operator-COMMON-DEFAULT", + "name": "sandbox-operator-COMMON-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "meta": null, + "userMeta": null + }, + { + "id": "6fd7e9d1-3646-474d-880b-d4a21799d280", + "name": "zone01", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "blueviolet" + }, + "networkLocations": [ + { + "id": "zone01-DEFAULT", + "name": "zone01-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "3480e529-3fc1-44b8-a892-42bbbfa4018f", + "name": "4g-macro-cell-1", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "1010101" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.419344, + 43.72764 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "3331ee44-2236-1111-0020-5a3c2bde0eaa", + "name": "10.10.0.4", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.420433, + 43.729942 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.420433, + 43.729942 + ], + [ + 7.420659, + 43.73036 + ], + [ + 7.420621, + 43.731045 + ], + [ + 7.420922, + 43.73129 + ], + [ + 7.421345, + 43.731373 + ], + [ + 7.42135, + 43.73168 + ], + [ + 7.421148, + 43.73173 + ], + [ + 7.420616, + 43.731964 + ], + [ + 7.419779, + 43.732197 + ], + [ + 7.419111, + 43.732353 + ], + [ + 7.418931, + 43.732315 + ], + [ + 7.418345, + 43.731964 + ], + [ + 7.418319, + 43.73186 + ], + [ + 7.418024, + 43.73179 + ], + [ + 7.41796, + 43.731728 + ], + [ + 7.417729, + 43.731743 + ], + [ + 7.417463, + 43.731632 + ], + [ + 7.417507, + 43.73148 + ], + [ + 7.417428, + 43.731407 + ], + [ + 7.417343, + 43.731396 + ], + [ + 7.417334, + 43.731133 + ], + [ + 7.417317, + 43.73053 + ], + [ + 7.417164, + 43.7304 + ], + [ + 7.417164, + 43.72998 + ], + [ + 7.417319, + 43.729916 + ], + [ + 7.419065, + 43.730103 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0004", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "1e2600f4-4861-43d6-abcb-07f4481a124c", + "name": "10.10.0.3", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.423684, + 43.727867 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.423684, + 43.727867 + ], + [ + 7.422571, + 43.727325 + ], + [ + 7.422421, + 43.727333 + ], + [ + 7.42196, + 43.727123 + ], + [ + 7.421828, + 43.72711 + ], + [ + 7.420988, + 43.726707 + ], + [ + 7.420757, + 43.72654 + ], + [ + 7.420393, + 43.72653 + ], + [ + 7.420207, + 43.726746 + ], + [ + 7.419985, + 43.72686 + ], + [ + 7.41988, + 43.72701 + ], + [ + 7.419869, + 43.727287 + ], + [ + 7.419807, + 43.727474 + ], + [ + 7.419671, + 43.727585 + ], + [ + 7.419502, + 43.727608 + ], + [ + 7.419402, + 43.728645 + ], + [ + 7.421238, + 43.72874 + ], + [ + 7.421412, + 43.728493 + ], + [ + 7.421532, + 43.728237 + ], + [ + 7.421697, + 43.72798 + ], + [ + 7.421928, + 43.727783 + ], + [ + 7.422381, + 43.727524 + ], + [ + 7.422507, + 43.72749 + ], + [ + 7.422922, + 43.72768 + ], + [ + 7.422894, + 43.727715 + ], + [ + 7.423666, + 43.72804 + ], + [ + 7.423763, + 43.72794 + ], + [ + 7.4237, + 43.727905 + ], + [ + 7.423684, + 43.727867 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0003", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "8c2599e8-dd88-4ff2-9cf4-6fc54663c152", + "name": "4g-macro-cell-2", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "2020202" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.413819, + 43.729538 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "c52208b3-93bb-4255-9b34-52432acc4398", + "name": "10.100.0.1", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.412295, + 43.728676 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.412295, + 43.728676 + ], + [ + 7.412273, + 43.728664 + ], + [ + 7.412281, + 43.728645 + ], + [ + 7.412294, + 43.72861 + ], + [ + 7.412353, + 43.728577 + ], + [ + 7.412433, + 43.728584 + ], + [ + 7.412494, + 43.72862 + ], + [ + 7.412491, + 43.72867 + ], + [ + 7.412466, + 43.728714 + ], + [ + 7.412627, + 43.728798 + ], + [ + 7.412708, + 43.728863 + ], + [ + 7.412821, + 43.729042 + ], + [ + 7.413009, + 43.729298 + ], + [ + 7.413331, + 43.72953 + ], + [ + 7.414082, + 43.729942 + ], + [ + 7.414709, + 43.730297 + ], + [ + 7.415187, + 43.730553 + ], + [ + 7.415568, + 43.73077 + ], + [ + 7.416118, + 43.73108 + ], + [ + 7.416652, + 43.73135 + ], + [ + 7.416979, + 43.731503 + ], + [ + 7.417131, + 43.73154 + ], + [ + 7.41718, + 43.731457 + ], + [ + 7.417308, + 43.73144 + ], + [ + 7.417392, + 43.731476 + ], + [ + 7.417432, + 43.731533 + ], + [ + 7.417426, + 43.731598 + ], + [ + 7.417365, + 43.73165 + ], + [ + 7.417268, + 43.731663 + ], + [ + 7.417177, + 43.73164 + ], + [ + 7.417037, + 43.731712 + ], + [ + 7.416912, + 43.73183 + ], + [ + 7.416855, + 43.731888 + ], + [ + 7.41681, + 43.731964 + ], + [ + 7.41681, + 43.732018 + ], + [ + 7.416761, + 43.732048 + ], + [ + 7.4167, + 43.732037 + ], + [ + 7.416646, + 43.731995 + ], + [ + 7.416437, + 43.73177 + ], + [ + 7.416278, + 43.731544 + ], + [ + 7.416238, + 43.731464 + ], + [ + 7.416225, + 43.731384 + ], + [ + 7.416228, + 43.73122 + ], + [ + 7.416206, + 43.731102 + ], + [ + 7.416128, + 43.73104 + ], + [ + 7.416005, + 43.73094 + ], + [ + 7.415892, + 43.73085 + ], + [ + 7.415442, + 43.730564 + ], + [ + 7.414985, + 43.73029 + ], + [ + 7.413749, + 43.7296 + ], + [ + 7.413719, + 43.729523 + ], + [ + 7.414267, + 43.72908 + ], + [ + 7.414825, + 43.728683 + ], + [ + 7.414983, + 43.728634 + ], + [ + 7.415184, + 43.728607 + ], + [ + 7.415248, + 43.728603 + ], + [ + 7.41531, + 43.72861 + ], + [ + 7.415366, + 43.72868 + ], + [ + 7.415329, + 43.728752 + ], + [ + 7.415332, + 43.72882 + ], + [ + 7.41538, + 43.728905 + ], + [ + 7.415645, + 43.729088 + ], + [ + 7.416165, + 43.729477 + ], + [ + 7.416268, + 43.729515 + ], + [ + 7.416372, + 43.72958 + ], + [ + 7.416673, + 43.7298 + ], + [ + 7.416808, + 43.729828 + ], + [ + 7.416867, + 43.72982 + ], + [ + 7.417084, + 43.72983 + ], + [ + 7.417418, + 43.72988 + ], + [ + 7.417764, + 43.729916 + ], + [ + 7.418454, + 43.72999 + ], + [ + 7.418545, + 43.729046 + ], + [ + 7.418624, + 43.729004 + ], + [ + 7.419099, + 43.72902 + ], + [ + 7.419173, + 43.728962 + ], + [ + 7.419217, + 43.72858 + ], + [ + 7.420207, + 43.72863 + ], + [ + 7.421203, + 43.728664 + ], + [ + 7.421265, + 43.72848 + ], + [ + 7.421318, + 43.72833 + ], + [ + 7.421387, + 43.72821 + ], + [ + 7.421448, + 43.72811 + ], + [ + 7.421565, + 43.727966 + ], + [ + 7.42162, + 43.7279 + ], + [ + 7.42168, + 43.72785 + ], + [ + 7.421951, + 43.727634 + ], + [ + 7.422287, + 43.72743 + ], + [ + 7.422104, + 43.72733 + ], + [ + 7.421898, + 43.72723 + ], + [ + 7.421297, + 43.726948 + ], + [ + 7.42101, + 43.726795 + ], + [ + 7.42075, + 43.72662 + ], + [ + 7.420669, + 43.726624 + ], + [ + 7.420599, + 43.726635 + ], + [ + 7.420543, + 43.72666 + ], + [ + 7.420205, + 43.726803 + ], + [ + 7.420039, + 43.726883 + ], + [ + 7.41995, + 43.72704 + ], + [ + 7.419926, + 43.727287 + ], + [ + 7.419913, + 43.727413 + ], + [ + 7.419859, + 43.72752 + ], + [ + 7.419728, + 43.727615 + ], + [ + 7.419527, + 43.72767 + ], + [ + 7.419304, + 43.72768 + ], + [ + 7.418912, + 43.727684 + ], + [ + 7.418875, + 43.727726 + ], + [ + 7.418805, + 43.727734 + ], + [ + 7.418751, + 43.727886 + ], + [ + 7.41866, + 43.728058 + ], + [ + 7.418553, + 43.728134 + ], + [ + 7.418459, + 43.72819 + ], + [ + 7.418341, + 43.728245 + ], + [ + 7.418135, + 43.728283 + ], + [ + 7.418035, + 43.72831 + ], + [ + 7.417955, + 43.728355 + ], + [ + 7.417933, + 43.728546 + ], + [ + 7.417923, + 43.72878 + ], + [ + 7.417864, + 43.72901 + ], + [ + 7.41777, + 43.729256 + ], + [ + 7.417654, + 43.729446 + ], + [ + 7.417483, + 43.729645 + ], + [ + 7.417416, + 43.72971 + ], + [ + 7.417233, + 43.72983 + ], + [ + 7.417139, + 43.729893 + ], + [ + 7.417102, + 43.729935 + ], + [ + 7.41707, + 43.72999 + ], + [ + 7.417072, + 43.730053 + ], + [ + 7.417314, + 43.730247 + ], + [ + 7.417579, + 43.730446 + ], + [ + 7.418376, + 43.73103 + ], + [ + 7.41858, + 43.73113 + ], + [ + 7.419038, + 43.73124 + ], + [ + 7.419392, + 43.73131 + ], + [ + 7.419736, + 43.73141 + ], + [ + 7.420988, + 43.73178 + ], + [ + 7.421616, + 43.731987 + ], + [ + 7.421924, + 43.732105 + ], + [ + 7.422169, + 43.73223 + ], + [ + 7.422276, + 43.732334 + ], + [ + 7.422316, + 43.73246 + ], + [ + 7.422297, + 43.732597 + ], + [ + 7.42222, + 43.732723 + ], + [ + 7.422096, + 43.73284 + ], + [ + 7.422002, + 43.732975 + ], + [ + 7.421962, + 43.733047 + ], + [ + 7.421949, + 43.733135 + ], + [ + 7.421696, + 43.733627 + ], + [ + 7.421522, + 43.734016 + ], + [ + 7.421377, + 43.73445 + ], + [ + 7.421289, + 43.73488 + ], + [ + 7.421232, + 43.735355 + ], + [ + 7.421211, + 43.73588 + ], + [ + 7.421291, + 43.73624 + ], + [ + 7.421447, + 43.736584 + ], + [ + 7.421576, + 43.73678 + ], + [ + 7.421629, + 43.73683 + ], + [ + 7.421755, + 43.736908 + ], + [ + 7.422032, + 43.737015 + ], + [ + 7.42237, + 43.737045 + ], + [ + 7.422756, + 43.73709 + ], + [ + 7.423142, + 43.737164 + ], + [ + 7.423915, + 43.737328 + ], + [ + 7.424164, + 43.737377 + ], + [ + 7.424414, + 43.737408 + ], + [ + 7.424918, + 43.73745 + ], + [ + 7.425942, + 43.73778 + ], + [ + 7.426543, + 43.737877 + ], + [ + 7.426795, + 43.737984 + ], + [ + 7.426946, + 43.738132 + ], + [ + 7.426972, + 43.738243 + ], + [ + 7.426924, + 43.738384 + ], + [ + 7.426747, + 43.738514 + ], + [ + 7.426495, + 43.738655 + ], + [ + 7.426119, + 43.738857 + ], + [ + 7.425932, + 43.738956 + ], + [ + 7.42583, + 43.739017 + ], + [ + 7.425776, + 43.739098 + ], + [ + 7.425771, + 43.739197 + ], + [ + 7.425814, + 43.73932 + ], + [ + 7.425771, + 43.73942 + ], + [ + 7.425685, + 43.739525 + ], + [ + 7.425154, + 43.73971 + ], + [ + 7.425562, + 43.740387 + ], + [ + 7.425765, + 43.7407 + ], + [ + 7.425883, + 43.740875 + ], + [ + 7.426023, + 43.741028 + ], + [ + 7.426329, + 43.741234 + ], + [ + 7.426538, + 43.74138 + ], + [ + 7.426736, + 43.741535 + ], + [ + 7.426822, + 43.74154 + ], + [ + 7.426908, + 43.74159 + ], + [ + 7.426895, + 43.741665 + ], + [ + 7.427034, + 43.74174 + ], + [ + 7.427466, + 43.742035 + ], + [ + 7.427699, + 43.742188 + ], + [ + 7.427799, + 43.742268 + ], + [ + 7.427908, + 43.74236 + ], + [ + 7.428187, + 43.7429 + ], + [ + 7.428544, + 43.743557 + ], + [ + 7.42892, + 43.744236 + ], + [ + 7.429225, + 43.74491 + ], + [ + 7.429504, + 43.74551 + ], + [ + 7.429751, + 43.74569 + ], + [ + 7.429939, + 43.745804 + ], + [ + 7.430121, + 43.74594 + ], + [ + 7.430202, + 43.746082 + ], + [ + 7.430239, + 43.746162 + ], + [ + 7.43062, + 43.746452 + ], + [ + 7.431017, + 43.74667 + ], + [ + 7.431371, + 43.746925 + ], + [ + 7.431682, + 43.747177 + ], + [ + 7.431763, + 43.7473 + ], + [ + 7.431763, + 43.747467 + ], + [ + 7.431731, + 43.747578 + ], + [ + 7.431822, + 43.747734 + ], + [ + 7.432031, + 43.747807 + ], + [ + 7.432246, + 43.747856 + ], + [ + 7.432525, + 43.747852 + ], + [ + 7.432809, + 43.747955 + ], + [ + 7.433152, + 43.748158 + ], + [ + 7.43341, + 43.748363 + ], + [ + 7.43401, + 43.748726 + ], + [ + 7.434322, + 43.748905 + ], + [ + 7.434671, + 43.749058 + ], + [ + 7.435019, + 43.74907 + ], + [ + 7.435373, + 43.749073 + ], + [ + 7.435818, + 43.74906 + ], + [ + 7.436028, + 43.749104 + ], + [ + 7.43621, + 43.749184 + ], + [ + 7.436376, + 43.749287 + ], + [ + 7.43651, + 43.749416 + ], + [ + 7.43709, + 43.749954 + ], + [ + 7.437347, + 43.750195 + ], + [ + 7.437589, + 43.75045 + ], + [ + 7.437841, + 43.75071 + ], + [ + 7.43812, + 43.751137 + ], + [ + 7.438431, + 43.751614 + ], + [ + 7.438881, + 43.751606 + ], + [ + 7.439327, + 43.75162 + ], + [ + 7.439826, + 43.751553 + ], + [ + 7.44004, + 43.751488 + ], + [ + 7.440137, + 43.751392 + ], + [ + 7.440062, + 43.751163 + ], + [ + 7.439842, + 43.75103 + ], + [ + 7.43952, + 43.750824 + ], + [ + 7.439203, + 43.750637 + ], + [ + 7.439219, + 43.750423 + ], + [ + 7.439364, + 43.750286 + ], + [ + 7.439616, + 43.75027 + ], + [ + 7.440062, + 43.750523 + ], + [ + 7.440443, + 43.750797 + ], + [ + 7.440115, + 43.750893 + ], + [ + 7.439836, + 43.75065 + ], + [ + 7.439289, + 43.75024 + ], + [ + 7.438694, + 43.749947 + ], + [ + 7.43732, + 43.749363 + ], + [ + 7.435936, + 43.74877 + ], + [ + 7.435287, + 43.74844 + ], + [ + 7.433453, + 43.747387 + ], + [ + 7.432712, + 43.74694 + ], + [ + 7.431956, + 43.746502 + ], + [ + 7.431586, + 43.74628 + ], + [ + 7.431216, + 43.746056 + ], + [ + 7.430974, + 43.745815 + ], + [ + 7.430792, + 43.7456 + ], + [ + 7.430679, + 43.745537 + ], + [ + 7.430668, + 43.74546 + ], + [ + 7.430674, + 43.745377 + ], + [ + 7.43069, + 43.74523 + ], + [ + 7.43062, + 43.745117 + ], + [ + 7.43041, + 43.744785 + ], + [ + 7.430306, + 43.744625 + ], + [ + 7.430225, + 43.74446 + ], + [ + 7.430192, + 43.744396 + ], + [ + 7.430144, + 43.74434 + ], + [ + 7.429972, + 43.744175 + ], + [ + 7.429881, + 43.743988 + ], + [ + 7.429728, + 43.743587 + ], + [ + 7.429689, + 43.743484 + ], + [ + 7.429671, + 43.743435 + ], + [ + 7.429656, + 43.743385 + ], + [ + 7.429612, + 43.743202 + ], + [ + 7.429592, + 43.743034 + ], + [ + 7.429584, + 43.742874 + ], + [ + 7.429596, + 43.742657 + ], + [ + 7.429612, + 43.742485 + ], + [ + 7.429639, + 43.74218 + ], + [ + 7.429783, + 43.741016 + ], + [ + 7.429848, + 43.740414 + ], + [ + 7.429872, + 43.740257 + ], + [ + 7.429858, + 43.740124 + ], + [ + 7.429791, + 43.739834 + ], + [ + 7.42971, + 43.739548 + ], + [ + 7.429573, + 43.73925 + ], + [ + 7.429385, + 43.73896 + ], + [ + 7.42915, + 43.738686 + ], + [ + 7.429027, + 43.738552 + ], + [ + 7.428953, + 43.738483 + ], + [ + 7.428917, + 43.73845 + ], + [ + 7.428875, + 43.738422 + ], + [ + 7.428521, + 43.738182 + ], + [ + 7.428061, + 43.73796 + ], + [ + 7.427626, + 43.737766 + ], + [ + 7.427324, + 43.737656 + ], + [ + 7.427005, + 43.737576 + ], + [ + 7.426667, + 43.737507 + ], + [ + 7.426342, + 43.737473 + ], + [ + 7.42602, + 43.737442 + ], + [ + 7.42571, + 43.737434 + ], + [ + 7.425395, + 43.737434 + ], + [ + 7.42384, + 43.73755 + ], + [ + 7.423571, + 43.73761 + ], + [ + 7.423247, + 43.737644 + ], + [ + 7.42289, + 43.737667 + ], + [ + 7.422737, + 43.737656 + ], + [ + 7.422659, + 43.737644 + ], + [ + 7.42259, + 43.737625 + ], + [ + 7.422582, + 43.7376 + ], + [ + 7.422584, + 43.737576 + ], + [ + 7.422598, + 43.73753 + ], + [ + 7.422646, + 43.7375 + ], + [ + 7.422814, + 43.737434 + ], + [ + 7.423523, + 43.737408 + ], + [ + 7.423972, + 43.737442 + ], + [ + 7.424034, + 43.73743 + ], + [ + 7.424064, + 43.73741 + ], + [ + 7.424055, + 43.737385 + ], + [ + 7.424038, + 43.737366 + ], + [ + 7.423644, + 43.73728 + ], + [ + 7.423225, + 43.73719 + ], + [ + 7.422795, + 43.73711 + ], + [ + 7.422332, + 43.737053 + ], + [ + 7.422099, + 43.73703 + ], + [ + 7.421981, + 43.73701 + ], + [ + 7.421785, + 43.737007 + ], + [ + 7.421583, + 43.736977 + ], + [ + 7.421478, + 43.736946 + ], + [ + 7.421381, + 43.7369 + ], + [ + 7.421202, + 43.7368 + ], + [ + 7.421065, + 43.736702 + ], + [ + 7.421003, + 43.73664 + ], + [ + 7.420967, + 43.736614 + ], + [ + 7.420598, + 43.736317 + ], + [ + 7.420181, + 43.73597 + ], + [ + 7.420098, + 43.7359 + ], + [ + 7.420028, + 43.735836 + ], + [ + 7.419874, + 43.735687 + ], + [ + 7.419729, + 43.73555 + ], + [ + 7.419451, + 43.735283 + ], + [ + 7.419311, + 43.735146 + ], + [ + 7.419177, + 43.735004 + ], + [ + 7.418924, + 43.73472 + ], + [ + 7.418668, + 43.734436 + ], + [ + 7.418515, + 43.73424 + ], + [ + 7.41849, + 43.734142 + ], + [ + 7.41851, + 43.73403 + ], + [ + 7.418537, + 43.733932 + ], + [ + 7.418588, + 43.733727 + ], + [ + 7.418687, + 43.73334 + ], + [ + 7.418813, + 43.732906 + ], + [ + 7.418915, + 43.73265 + ], + [ + 7.418904, + 43.732555 + ], + [ + 7.418859, + 43.732525 + ], + [ + 7.418795, + 43.73252 + ], + [ + 7.418462, + 43.732613 + ], + [ + 7.418294, + 43.73266 + ], + [ + 7.418215, + 43.73269 + ], + [ + 7.41814, + 43.73272 + ], + [ + 7.417854, + 43.732807 + ], + [ + 7.41764, + 43.732853 + ], + [ + 7.417487, + 43.732895 + ], + [ + 7.417425, + 43.732925 + ], + [ + 7.417377, + 43.732986 + ], + [ + 7.417373, + 43.733036 + ], + [ + 7.4174, + 43.7331 + ], + [ + 7.417593, + 43.733456 + ], + [ + 7.417621, + 43.733547 + ], + [ + 7.417609, + 43.733665 + ], + [ + 7.417566, + 43.733784 + ], + [ + 7.417477, + 43.733948 + ], + [ + 7.417422, + 43.73416 + ], + [ + 7.417394, + 43.7342 + ], + [ + 7.417331, + 43.734238 + ], + [ + 7.417137, + 43.73429 + ], + [ + 7.417091, + 43.734406 + ], + [ + 7.417072, + 43.73461 + ], + [ + 7.41707, + 43.734833 + ], + [ + 7.417106, + 43.735027 + ], + [ + 7.417174, + 43.735165 + ], + [ + 7.417213, + 43.735237 + ], + [ + 7.417265, + 43.735313 + ], + [ + 7.417349, + 43.735413 + ], + [ + 7.417468, + 43.735542 + ], + [ + 7.417709, + 43.735783 + ], + [ + 7.417825, + 43.735874 + ], + [ + 7.417894, + 43.735916 + ], + [ + 7.417971, + 43.735947 + ], + [ + 7.418423, + 43.736076 + ], + [ + 7.418604, + 43.736122 + ], + [ + 7.418683, + 43.736156 + ], + [ + 7.418759, + 43.7362 + ], + [ + 7.419186, + 43.736515 + ], + [ + 7.419429, + 43.736725 + ], + [ + 7.419634, + 43.736874 + ], + [ + 7.41982, + 43.737015 + ], + [ + 7.419993, + 43.737167 + ], + [ + 7.420052, + 43.73722 + ], + [ + 7.420099, + 43.737286 + ], + [ + 7.42013, + 43.737335 + ], + [ + 7.420121, + 43.737442 + ], + [ + 7.420076, + 43.73754 + ], + [ + 7.420024, + 43.73758 + ], + [ + 7.419942, + 43.737614 + ], + [ + 7.419759, + 43.737682 + ], + [ + 7.419337, + 43.737827 + ], + [ + 7.419228, + 43.7379 + ], + [ + 7.419127, + 43.737995 + ], + [ + 7.419092, + 43.738087 + ], + [ + 7.419126, + 43.738163 + ], + [ + 7.419173, + 43.738186 + ], + [ + 7.419261, + 43.73819 + ], + [ + 7.419348, + 43.738174 + ], + [ + 7.419405, + 43.73811 + ], + [ + 7.419454, + 43.737915 + ], + [ + 7.419511, + 43.737743 + ], + [ + 7.419544, + 43.737705 + ], + [ + 7.419611, + 43.737644 + ], + [ + 7.419867, + 43.73755 + ], + [ + 7.419964, + 43.737514 + ], + [ + 7.420028, + 43.73747 + ], + [ + 7.420036, + 43.737423 + ], + [ + 7.420034, + 43.73738 + ], + [ + 7.420013, + 43.737335 + ], + [ + 7.41998, + 43.737293 + ], + [ + 7.419899, + 43.73722 + ], + [ + 7.419673, + 43.73708 + ], + [ + 7.419535, + 43.73704 + ], + [ + 7.419489, + 43.737026 + ], + [ + 7.419434, + 43.73703 + ], + [ + 7.419327, + 43.737045 + ], + [ + 7.41915, + 43.73712 + ], + [ + 7.419123, + 43.737137 + ], + [ + 7.41913, + 43.73716 + ], + [ + 7.41912, + 43.73719 + ], + [ + 7.419033, + 43.73725 + ], + [ + 7.41893, + 43.73732 + ], + [ + 7.418659, + 43.73749 + ], + [ + 7.418499, + 43.73756 + ], + [ + 7.418411, + 43.737583 + ], + [ + 7.41831, + 43.7376 + ], + [ + 7.418235, + 43.73759 + ], + [ + 7.418163, + 43.73757 + ], + [ + 7.418037, + 43.737507 + ], + [ + 7.417955, + 43.73744 + ], + [ + 7.417869, + 43.73738 + ], + [ + 7.417664, + 43.737312 + ], + [ + 7.417506, + 43.737274 + ], + [ + 7.417401, + 43.73726 + ], + [ + 7.417366, + 43.737236 + ], + [ + 7.417346, + 43.737206 + ], + [ + 7.417345, + 43.73717 + ], + [ + 7.417311, + 43.737103 + ], + [ + 7.417304, + 43.737064 + ], + [ + 7.417295, + 43.737045 + ], + [ + 7.41729, + 43.737022 + ], + [ + 7.417276, + 43.736973 + ], + [ + 7.417247, + 43.736935 + ], + [ + 7.417186, + 43.736893 + ], + [ + 7.416992, + 43.73685 + ], + [ + 7.416886, + 43.73682 + ], + [ + 7.416842, + 43.736797 + ], + [ + 7.41681, + 43.73677 + ], + [ + 7.416771, + 43.73672 + ], + [ + 7.416749, + 43.736668 + ], + [ + 7.416704, + 43.736313 + ], + [ + 7.416675, + 43.736084 + ], + [ + 7.416665, + 43.735966 + ], + [ + 7.416665, + 43.735855 + ], + [ + 7.416615, + 43.73581 + ], + [ + 7.416623, + 43.73574 + ], + [ + 7.416591, + 43.73564 + ], + [ + 7.416561, + 43.735546 + ], + [ + 7.416504, + 43.735416 + ], + [ + 7.41637, + 43.73514 + ], + [ + 7.41632, + 43.734993 + ], + [ + 7.416289, + 43.73486 + ], + [ + 7.416272, + 43.73474 + ], + [ + 7.416262, + 43.73462 + ], + [ + 7.416245, + 43.734394 + ], + [ + 7.416225, + 43.734295 + ], + [ + 7.416201, + 43.734203 + ], + [ + 7.416174, + 43.734142 + ], + [ + 7.416138, + 43.73409 + ], + [ + 7.416054, + 43.733955 + ], + [ + 7.41599, + 43.733894 + ], + [ + 7.415801, + 43.733715 + ], + [ + 7.415393, + 43.733383 + ], + [ + 7.415356, + 43.733337 + ], + [ + 7.415299, + 43.73332 + ], + [ + 7.415204, + 43.733276 + ], + [ + 7.41514, + 43.73322 + ], + [ + 7.415098, + 43.733154 + ], + [ + 7.415077, + 43.733097 + ], + [ + 7.414878, + 43.732937 + ], + [ + 7.414619, + 43.73273 + ], + [ + 7.414414, + 43.73253 + ], + [ + 7.414343, + 43.73237 + ], + [ + 7.4143, + 43.73213 + ], + [ + 7.414363, + 43.731937 + ], + [ + 7.414526, + 43.731796 + ], + [ + 7.414589, + 43.73177 + ], + [ + 7.414902, + 43.73153 + ], + [ + 7.415022, + 43.73144 + ], + [ + 7.415058, + 43.73137 + ], + [ + 7.415065, + 43.731266 + ], + [ + 7.415031, + 43.731213 + ], + [ + 7.414972, + 43.73117 + ], + [ + 7.414802, + 43.731125 + ], + [ + 7.414583, + 43.7311 + ], + [ + 7.414045, + 43.731014 + ], + [ + 7.413182, + 43.730873 + ], + [ + 7.413132, + 43.730865 + ], + [ + 7.413081, + 43.730846 + ], + [ + 7.412977, + 43.73082 + ], + [ + 7.412864, + 43.73075 + ], + [ + 7.412629, + 43.730595 + ], + [ + 7.41271, + 43.730377 + ], + [ + 7.412778, + 43.72999 + ], + [ + 7.412793, + 43.729607 + ], + [ + 7.412826, + 43.72954 + ], + [ + 7.412839, + 43.72948 + ], + [ + 7.412739, + 43.729347 + ], + [ + 7.412632, + 43.729225 + ], + [ + 7.412401, + 43.728916 + ], + [ + 7.412397, + 43.72874 + ], + [ + 7.412365, + 43.728737 + ], + [ + 7.412332, + 43.72873 + ], + [ + 7.412307, + 43.72871 + ], + [ + 7.412295, + 43.728676 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640001", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "f32f0c05-4491-4a93-be0c-19420d4407f0", + "name": "4g-macro-cell-3", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "3030303" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.416715, + 43.733616 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "0ca4bfcc-7346-4f57-9c85-bb92642ec37e", + "name": "10.1.0.2", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.4187, + 43.732403 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010002", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "1835f9ea-1f72-47e8-98b7-f0a5e4ff44e4", + "name": "wifi-ap-1", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C01010101" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.419891, + 43.727787 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "fb7ff207-f67d-4a1d-a353-038e96085d06", + "name": "wifi-ap-2", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C02020202" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.42179, + 43.727474 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "37be6821-a5f3-4af9-af0a-ceff4c0f66be", + "name": "5g-small-cell-1", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "101010101" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.415385, + 43.730846 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "ab60918a-acd8-4f4e-9693-d2fbffae9b72", + "name": "5g-small-cell-2", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "202020202" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.416962, + 43.731453 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "de2d952d-11b1-4294-8a67-6d994f1a5f37", + "name": "5g-small-cell-3", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "303030303" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.418507, + 43.731865 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + }, + { + "id": "4c3c9568-6408-4900-9d97-4556f6d805db", + "name": "zone02", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "darkred" + }, + "networkLocations": [ + { + "id": "zone02-DEFAULT", + "name": "zone02-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "78327873-c828-47da-8a5b-3c74d251dbbc", + "name": "4g-macro-cell-4", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "4040404" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.423547, + 43.731724 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "67a40b8b-5777-4e96-a896-8622af4a741f", + "name": "10.100.0.3", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427423, + 43.731323 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.427423, + 43.731323 + ], + [ + 7.427463, + 43.73143 + ], + [ + 7.427455, + 43.731537 + ], + [ + 7.427423, + 43.731598 + ], + [ + 7.427439, + 43.731667 + ], + [ + 7.427479, + 43.731766 + ], + [ + 7.427951, + 43.73259 + ], + [ + 7.427989, + 43.732677 + ], + [ + 7.427962, + 43.73281 + ], + [ + 7.427852, + 43.732925 + ], + [ + 7.427655, + 43.732994 + ], + [ + 7.427556, + 43.733 + ], + [ + 7.425453, + 43.73256 + ], + [ + 7.42436, + 43.7323 + ], + [ + 7.424033, + 43.732254 + ], + [ + 7.423397, + 43.73226 + ], + [ + 7.422675, + 43.73218 + ], + [ + 7.422588, + 43.7322 + ], + [ + 7.42249, + 43.732243 + ], + [ + 7.422382, + 43.732323 + ], + [ + 7.422415, + 43.73246 + ], + [ + 7.422351, + 43.73269 + ], + [ + 7.422257, + 43.73279 + ], + [ + 7.4221, + 43.73293 + ], + [ + 7.421912, + 43.733208 + ], + [ + 7.421604, + 43.733833 + ], + [ + 7.421522, + 43.734016 + ], + [ + 7.421377, + 43.73445 + ], + [ + 7.421289, + 43.73488 + ], + [ + 7.421232, + 43.735355 + ], + [ + 7.421211, + 43.73588 + ], + [ + 7.421291, + 43.73624 + ], + [ + 7.421447, + 43.736584 + ], + [ + 7.421576, + 43.73678 + ], + [ + 7.4216, + 43.7368 + ], + [ + 7.421723, + 43.73684 + ], + [ + 7.424054, + 43.73709 + ], + [ + 7.424611, + 43.737144 + ], + [ + 7.424942, + 43.73719 + ], + [ + 7.425462, + 43.737217 + ], + [ + 7.426063, + 43.737286 + ], + [ + 7.426653, + 43.737366 + ], + [ + 7.427215, + 43.73749 + ], + [ + 7.427498, + 43.737583 + ], + [ + 7.427762, + 43.73765 + ], + [ + 7.42799, + 43.737732 + ], + [ + 7.428867, + 43.738125 + ], + [ + 7.429136, + 43.73831 + ], + [ + 7.429626, + 43.738724 + ], + [ + 7.429853, + 43.73897 + ], + [ + 7.430023, + 43.739243 + ], + [ + 7.430125, + 43.7395 + ], + [ + 7.430301, + 43.740196 + ], + [ + 7.430422, + 43.741196 + ], + [ + 7.430411, + 43.741318 + ], + [ + 7.430493, + 43.741344 + ], + [ + 7.430568, + 43.741417 + ], + [ + 7.430773, + 43.74177 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640003", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "ca3b5b42-0e99-4553-9d19-4696cd8fe469", + "name": "4g-macro-cell-5", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "5050505" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.429257, + 43.73411 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "c18e3f93-79c4-427d-af91-81996adab3e7", + "name": "10.1.0.3", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.426565, + 43.73298 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010003", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "1d2683f4-086e-47d6-abbb-07fa481a25fb", + "name": "10.10.0.1", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.43166, + 43.736156 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.43166, + 43.736156 + ], + [ + 7.431723, + 43.736115 + ], + [ + 7.431162, + 43.735607 + ], + [ + 7.430685, + 43.73518 + ], + [ + 7.43043, + 43.73532 + ], + [ + 7.429067, + 43.734108 + ], + [ + 7.428863, + 43.734184 + ], + [ + 7.428388, + 43.734116 + ], + [ + 7.427817, + 43.73446 + ], + [ + 7.427689, + 43.734917 + ], + [ + 7.427581, + 43.73499 + ], + [ + 7.427308, + 43.734955 + ], + [ + 7.42723, + 43.734844 + ], + [ + 7.427281, + 43.734646 + ], + [ + 7.427411, + 43.734657 + ], + [ + 7.427709, + 43.73362 + ], + [ + 7.424581, + 43.732964 + ], + [ + 7.424312, + 43.73363 + ], + [ + 7.424512, + 43.73368 + ], + [ + 7.424534, + 43.733707 + ], + [ + 7.424534, + 43.73373 + ], + [ + 7.424477, + 43.733753 + ], + [ + 7.42423, + 43.73371 + ], + [ + 7.424029, + 43.733665 + ], + [ + 7.423999, + 43.733624 + ], + [ + 7.424058, + 43.73358 + ], + [ + 7.424246, + 43.733624 + ], + [ + 7.424522, + 43.732952 + ], + [ + 7.423748, + 43.73279 + ], + [ + 7.423545, + 43.733307 + ], + [ + 7.423508, + 43.7333 + ], + [ + 7.423535, + 43.73324 + ], + [ + 7.423668, + 43.732857 + ], + [ + 7.423455, + 43.73282 + ], + [ + 7.423356, + 43.73307 + ], + [ + 7.423199, + 43.733135 + ], + [ + 7.423043, + 43.73321 + ], + [ + 7.422855, + 43.73337 + ], + [ + 7.422744, + 43.733517 + ], + [ + 7.422694, + 43.733624 + ], + [ + 7.422659, + 43.73374 + ], + [ + 7.422578, + 43.734074 + ], + [ + 7.422604, + 43.734188 + ], + [ + 7.422541, + 43.734425 + ], + [ + 7.422509, + 43.73456 + ], + [ + 7.422697, + 43.73458 + ], + [ + 7.422847, + 43.734077 + ], + [ + 7.422881, + 43.73408 + ], + [ + 7.422756, + 43.73459 + ], + [ + 7.423254, + 43.73466 + ], + [ + 7.423413, + 43.73412 + ], + [ + 7.423512, + 43.73413 + ], + [ + 7.423351, + 43.734753 + ], + [ + 7.42326, + 43.73506 + ], + [ + 7.423223, + 43.73522 + ], + [ + 7.423173, + 43.735416 + ], + [ + 7.423072, + 43.7354 + ], + [ + 7.4232, + 43.734898 + ], + [ + 7.423191, + 43.734848 + ], + [ + 7.422693, + 43.734776 + ], + [ + 7.42256, + 43.7353 + ], + [ + 7.422513, + 43.73529 + ], + [ + 7.422655, + 43.734776 + ], + [ + 7.422423, + 43.734737 + ], + [ + 7.422299, + 43.735203 + ], + [ + 7.422233, + 43.735435 + ], + [ + 7.42215, + 43.735508 + ], + [ + 7.422032, + 43.735546 + ], + [ + 7.421888, + 43.735535 + ], + [ + 7.421866, + 43.735683 + ], + [ + 7.421872, + 43.735928 + ], + [ + 7.421975, + 43.736275 + ], + [ + 7.422107, + 43.73651 + ], + [ + 7.422269, + 43.73673 + ], + [ + 7.42493, + 43.737007 + ], + [ + 7.425109, + 43.73692 + ], + [ + 7.425631, + 43.736973 + ], + [ + 7.425674, + 43.736706 + ], + [ + 7.425721, + 43.736477 + ], + [ + 7.425736, + 43.736366 + ], + [ + 7.425787, + 43.736378 + ], + [ + 7.425655, + 43.737087 + ], + [ + 7.426748, + 43.73719 + ], + [ + 7.426931, + 43.736523 + ], + [ + 7.427054, + 43.736073 + ], + [ + 7.427052, + 43.73606 + ], + [ + 7.427027, + 43.736053 + ], + [ + 7.426908, + 43.73604 + ], + [ + 7.426963, + 43.73584 + ], + [ + 7.427089, + 43.73575 + ], + [ + 7.427368, + 43.735783 + ], + [ + 7.427427, + 43.735886 + ], + [ + 7.427096, + 43.737133 + ], + [ + 7.429107, + 43.73754 + ], + [ + 7.429795, + 43.736343 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0001", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "ec32caa6-ddc6-4f5e-a815-654782b31abb", + "name": "10.100.0.2", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427394, + 43.73243 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.427394, + 43.73243 + ], + [ + 7.427393, + 43.732353 + ], + [ + 7.427373, + 43.732296 + ], + [ + 7.427259, + 43.73213 + ], + [ + 7.427153, + 43.73204 + ], + [ + 7.42705, + 43.73197 + ], + [ + 7.426688, + 43.73188 + ], + [ + 7.426318, + 43.731792 + ], + [ + 7.425634, + 43.731598 + ], + [ + 7.425535, + 43.731598 + ], + [ + 7.425433, + 43.73161 + ], + [ + 7.425336, + 43.73161 + ], + [ + 7.425151, + 43.731556 + ], + [ + 7.424628, + 43.73141 + ], + [ + 7.424135, + 43.731285 + ], + [ + 7.423933, + 43.73179 + ], + [ + 7.423861, + 43.731827 + ], + [ + 7.423566, + 43.73177 + ], + [ + 7.423389, + 43.731663 + ], + [ + 7.423225, + 43.73154 + ], + [ + 7.422997, + 43.731396 + ], + [ + 7.422858, + 43.731335 + ], + [ + 7.422794, + 43.731304 + ], + [ + 7.422718, + 43.731285 + ], + [ + 7.422579, + 43.731262 + ], + [ + 7.422418, + 43.731255 + ], + [ + 7.422195, + 43.731262 + ], + [ + 7.421973, + 43.731285 + ], + [ + 7.421833, + 43.731297 + ], + [ + 7.421705, + 43.73133 + ], + [ + 7.421624, + 43.731327 + ], + [ + 7.421565, + 43.731323 + ], + [ + 7.421501, + 43.731297 + ], + [ + 7.421483, + 43.731228 + ], + [ + 7.421468, + 43.73116 + ], + [ + 7.421443, + 43.73103 + ], + [ + 7.421409, + 43.73089 + ], + [ + 7.421372, + 43.73075 + ], + [ + 7.421435, + 43.730694 + ], + [ + 7.421506, + 43.730682 + ], + [ + 7.421731, + 43.73061 + ], + [ + 7.421821, + 43.73055 + ], + [ + 7.421992, + 43.730377 + ], + [ + 7.42217, + 43.730206 + ], + [ + 7.422477, + 43.729942 + ], + [ + 7.422555, + 43.729897 + ], + [ + 7.422657, + 43.729866 + ], + [ + 7.422801, + 43.729847 + ], + [ + 7.422969, + 43.729862 + ], + [ + 7.423137, + 43.72991 + ], + [ + 7.423295, + 43.72997 + ], + [ + 7.423507, + 43.73005 + ], + [ + 7.423712, + 43.730137 + ], + [ + 7.42411, + 43.73032 + ], + [ + 7.424566, + 43.730526 + ], + [ + 7.424802, + 43.730633 + ], + [ + 7.42501, + 43.730743 + ], + [ + 7.425791, + 43.731174 + ], + [ + 7.426482, + 43.73159 + ], + [ + 7.426963, + 43.731895 + ], + [ + 7.427077, + 43.731968 + ], + [ + 7.427186, + 43.732048 + ], + [ + 7.42729, + 43.73213 + ], + [ + 7.427362, + 43.732227 + ], + [ + 7.427418, + 43.732353 + ], + [ + 7.427415, + 43.732384 + ], + [ + 7.427411, + 43.732407 + ], + [ + 7.427394, + 43.73243 + ], + [ + 7.427383, + 43.732483 + ], + [ + 7.427288, + 43.732548 + ], + [ + 7.427203, + 43.73256 + ], + [ + 7.427085, + 43.732555 + ], + [ + 7.426884, + 43.732517 + ], + [ + 7.425842, + 43.73234 + ], + [ + 7.424798, + 43.732162 + ], + [ + 7.424667, + 43.73214 + ], + [ + 7.42444, + 43.7321 + ], + [ + 7.424072, + 43.732044 + ], + [ + 7.423361, + 43.731934 + ], + [ + 7.423054, + 43.7319 + ], + [ + 7.42274, + 43.731876 + ], + [ + 7.422414, + 43.73187 + ], + [ + 7.422089, + 43.731876 + ], + [ + 7.421887, + 43.731884 + ], + [ + 7.421699, + 43.731895 + ], + [ + 7.421429, + 43.731926 + ], + [ + 7.421102, + 43.73198 + ], + [ + 7.420582, + 43.732067 + ], + [ + 7.420058, + 43.732174 + ], + [ + 7.419941, + 43.7322 + ], + [ + 7.419804, + 43.732254 + ], + [ + 7.419237, + 43.732403 + ], + [ + 7.419181, + 43.732418 + ], + [ + 7.419127, + 43.73245 + ], + [ + 7.419071, + 43.73248 + ], + [ + 7.419063, + 43.732513 + ], + [ + 7.419017, + 43.732548 + ], + [ + 7.418957, + 43.73256 + ], + [ + 7.418904, + 43.732555 + ], + [ + 7.418859, + 43.732525 + ], + [ + 7.418795, + 43.73252 + ], + [ + 7.418733, + 43.732536 + ], + [ + 7.418541, + 43.73259 + ], + [ + 7.418358, + 43.732643 + ], + [ + 7.418179, + 43.732704 + ], + [ + 7.417854, + 43.732807 + ], + [ + 7.417669, + 43.732845 + ], + [ + 7.417487, + 43.732895 + ], + [ + 7.417425, + 43.732925 + ], + [ + 7.417405, + 43.73295 + ], + [ + 7.417605, + 43.73323 + ], + [ + 7.417778, + 43.733547 + ], + [ + 7.417915, + 43.733955 + ], + [ + 7.41809, + 43.734455 + ], + [ + 7.418133, + 43.734684 + ], + [ + 7.418188, + 43.7349 + ], + [ + 7.418289, + 43.735046 + ], + [ + 7.4184, + 43.735184 + ], + [ + 7.418585, + 43.735382 + ], + [ + 7.418671, + 43.735455 + ], + [ + 7.418768, + 43.73552 + ], + [ + 7.419179, + 43.735825 + ], + [ + 7.419366, + 43.73598 + ], + [ + 7.419533, + 43.73615 + ], + [ + 7.419881, + 43.736473 + ], + [ + 7.420241, + 43.736786 + ], + [ + 7.420468, + 43.73692 + ], + [ + 7.420685, + 43.73703 + ], + [ + 7.420944, + 43.73716 + ], + [ + 7.421228, + 43.737274 + ], + [ + 7.421522, + 43.737373 + ], + [ + 7.421826, + 43.73747 + ], + [ + 7.422055, + 43.73752 + ], + [ + 7.422283, + 43.73756 + ], + [ + 7.422403, + 43.73758 + ], + [ + 7.422472, + 43.737526 + ], + [ + 7.422561, + 43.737473 + ], + [ + 7.422688, + 43.737442 + ], + [ + 7.422814, + 43.737434 + ], + [ + 7.423132, + 43.737423 + ], + [ + 7.423523, + 43.737408 + ], + [ + 7.423972, + 43.737442 + ], + [ + 7.424034, + 43.73743 + ], + [ + 7.424064, + 43.73741 + ], + [ + 7.424055, + 43.737385 + ], + [ + 7.424028, + 43.73735 + ], + [ + 7.423706, + 43.737286 + ], + [ + 7.423228, + 43.737183 + ], + [ + 7.422826, + 43.737103 + ], + [ + 7.42263, + 43.737076 + ], + [ + 7.422426, + 43.737053 + ], + [ + 7.42209, + 43.73702 + ], + [ + 7.421949, + 43.73701 + ], + [ + 7.421754, + 43.737003 + ], + [ + 7.421639, + 43.736984 + ], + [ + 7.421527, + 43.73696 + ], + [ + 7.421421, + 43.73692 + ], + [ + 7.421323, + 43.73687 + ], + [ + 7.421228, + 43.736813 + ], + [ + 7.421133, + 43.73675 + ], + [ + 7.421065, + 43.736702 + ], + [ + 7.421003, + 43.73664 + ], + [ + 7.420847, + 43.73652 + ], + [ + 7.420513, + 43.736244 + ], + [ + 7.420098, + 43.7359 + ], + [ + 7.419858, + 43.735672 + ], + [ + 7.41939, + 43.73522 + ], + [ + 7.41916, + 43.734985 + ], + [ + 7.418728, + 43.734505 + ], + [ + 7.418581, + 43.734325 + ], + [ + 7.418515, + 43.73424 + ], + [ + 7.41849, + 43.734142 + ], + [ + 7.418601, + 43.733677 + ], + [ + 7.418681, + 43.73336 + ], + [ + 7.418772, + 43.733047 + ], + [ + 7.418813, + 43.732906 + ], + [ + 7.418878, + 43.732742 + ], + [ + 7.418915, + 43.73265 + ], + [ + 7.41891, + 43.732605 + ], + [ + 7.418904, + 43.732555 + ], + [ + 7.418859, + 43.732525 + ], + [ + 7.418849, + 43.73247 + ], + [ + 7.418872, + 43.732426 + ], + [ + 7.418902, + 43.73241 + ], + [ + 7.418951, + 43.732403 + ], + [ + 7.419008, + 43.732403 + ], + [ + 7.419118, + 43.73241 + ], + [ + 7.419225, + 43.73239 + ], + [ + 7.4198, + 43.73224 + ], + [ + 7.419934, + 43.732185 + ], + [ + 7.420066, + 43.73216 + ], + [ + 7.420587, + 43.73205 + ], + [ + 7.421116, + 43.73196 + ], + [ + 7.421403, + 43.73192 + ], + [ + 7.421688, + 43.731884 + ], + [ + 7.422084, + 43.73186 + ], + [ + 7.422473, + 43.731853 + ], + [ + 7.422827, + 43.73187 + ], + [ + 7.42319, + 43.731903 + ], + [ + 7.423363, + 43.731922 + ], + [ + 7.423535, + 43.73195 + ], + [ + 7.423881, + 43.732002 + ], + [ + 7.425014, + 43.73219 + ], + [ + 7.425588, + 43.73229 + ], + [ + 7.426168, + 43.732388 + ], + [ + 7.426901, + 43.732506 + ], + [ + 7.427068, + 43.732536 + ], + [ + 7.427147, + 43.732548 + ], + [ + 7.427227, + 43.732548 + ], + [ + 7.427279, + 43.732533 + ], + [ + 7.427352, + 43.73249 + ], + [ + 7.427394, + 43.73243 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640002", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "bc76299f-1394-46d7-ab61-1791c883718d", + "name": "wifi-ap-4", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C04040404" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427702, + 43.733475 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "4a0a69b3-7c5a-475e-a34d-a0c9177e972e", + "name": "wifi-ap-3", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C03030303" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.422327, + 43.73342 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "66938f56-4e52-47e2-baa2-501f026e4eb3", + "name": "wifi-ap-5", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C05050505" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421984, + 43.735027 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "b50df04b-c3bd-46c4-a7d4-5de55e74b444", + "name": "5g-small-cell-4", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "404040404" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.419741, + 43.732998 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "bddd61c9-6ddd-4f7e-9082-0d004fced7ab", + "name": "5g-small-cell-5", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "505050505" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421158, + 43.732063 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "8e0dad0d-72c9-4b6d-850b-06b02243b1d3", + "name": "5g-small-cell-6", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "606060606" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421865, + 43.733368 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "318f3796-4091-409e-8767-44ba36600a34", + "name": "5g-small-cell-7", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "707070707" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.420943, + 43.734097 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "7d3688cc-0dda-48b1-a171-b817c176e053", + "name": "5g-small-cell-8", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "808080808" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.425063, + 43.732555 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "91691048-64bb-4d2f-917f-4219a95881c0", + "name": "5g-small-cell-9", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "909090909" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.427027, + 43.73308 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + }, + { + "id": "472c9927-800a-46e9-9d62-d08b09080dd5", + "name": "zone03", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "darkorange" + }, + "networkLocations": [ + { + "id": "zone03-DEFAULT", + "name": "zone03-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "e4ce8267-5433-4b2b-aa5a-9a40de76b685", + "name": "4g-macro-cell-6", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "6060606" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421007, + 43.737087 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "c3bc8d8d-170b-45bb-93a9-8ce658571321", + "name": "10.1.0.1", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.421802, + 43.736515 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010001", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "663df9f0-57af-43aa-ba2e-e45a4b2f3c28", + "name": "4g-macro-cell-7", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "7070707" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.426414, + 43.739445 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "190a7ff6-7b77-479a-8f23-1f5c7f935914", + "name": "wifi-ap-6", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C06060606" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.425288, + 43.73727 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "99e67725-25b1-4274-8b05-fe253b0e5ee6", + "name": "wifi-ap-7", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C07070707" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.429639, + 43.739006 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "a3067167-cdaf-4264-9e32-abfc0ede0564", + "name": "5g-small-cell-10", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "A0A0A0A0A" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.426736, + 43.73771 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "2c2ba76c-8880-4c5b-a949-a161713910f4", + "name": "5g-small-cell-11", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "B0B0B0B0B" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.42856, + 43.738018 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "d9ca5e58-15fe-4161-840f-f3155db3729b", + "name": "5g-small-cell-12", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "C0C0C0C0C" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.42738, + 43.739075 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + }, + { + "id": "d56c4e67-0e0f-4456-9431-290de7b674c8", + "name": "zone04", + "type": "ZONE", + "netChar": { + "latency": 5, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "meta": { + "display.map.color": "limegreen" + }, + "networkLocations": [ + { + "id": "zone04-DEFAULT", + "name": "zone04-DEFAULT", + "type": "DEFAULT", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "geoData": null, + "physicalLocations": null + }, + { + "id": "fc4d9ec8-ebb6-4b5d-a281-bb74af729b4a", + "name": "4g-macro-cell-8", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "8080808" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.429504, + 43.74301 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "b73b3ef5-dba0-44af-a648-bbda7191c249", + "name": "4g-macro-cell-9", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "9090909" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.432551, + 43.746544 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "e1d47a4b-0664-4915-81ea-eb0d70af15a7", + "name": "4g-macro-cell-10", + "type": "POA-4G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa4GConfig": { + "cellId": "A0A0A0A" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.437573, + 43.748993 + ] + }, + "radius": 400, + "path": null, + "eopMode": null, + "velocity": null + }, + "physicalLocations": [ + { + "id": "4e423f57-daef-4c1c-b30e-45e88e3c9366", + "name": "10.1.0.4", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438248, + 43.74835 + ] + }, + "radius": null, + "path": null, + "eopMode": null, + "velocity": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-ios-videocam" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A010004", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "824cf1bf-f91d-44c2-906d-e939fa3339cd", + "name": "10.10.0.2", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438755, + 43.748512 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.438755, + 43.748512 + ], + [ + 7.438267, + 43.748566 + ], + [ + 7.437795, + 43.7484 + ], + [ + 7.437684, + 43.748253 + ], + [ + 7.437555, + 43.748203 + ], + [ + 7.437341, + 43.748203 + ], + [ + 7.43673, + 43.747974 + ], + [ + 7.436623, + 43.747704 + ], + [ + 7.436237, + 43.747643 + ], + [ + 7.435969, + 43.74743 + ], + [ + 7.435841, + 43.74717 + ], + [ + 7.435504, + 43.74695 + ], + [ + 7.434829, + 43.74691 + ], + [ + 7.434293, + 43.746685 + ], + [ + 7.433882, + 43.746166 + ], + [ + 7.433431, + 43.746063 + ], + [ + 7.432831, + 43.745686 + ], + [ + 7.432585, + 43.745182 + ], + [ + 7.432767, + 43.744633 + ], + [ + 7.432552, + 43.744244 + ], + [ + 7.432617, + 43.743763 + ], + [ + 7.432305, + 43.743305 + ], + [ + 7.431682, + 43.742676 + ], + [ + 7.431136, + 43.74201 + ], + [ + 7.430524, + 43.741123 + ], + [ + 7.430432, + 43.740696 + ], + [ + 7.430382, + 43.740437 + ], + [ + 7.430384, + 43.74021 + ], + [ + 7.430288, + 43.739372 + ], + [ + 7.429773, + 43.73849 + ], + [ + 7.429976, + 43.738228 + ], + [ + 7.429654, + 43.73791 + ], + [ + 7.429371, + 43.73765 + ], + [ + 7.430027, + 43.736446 + ] + ] + }, + "eopMode": "REVERSE", + "velocity": 9, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-walk" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A0A0002", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + }, + { + "id": "097f79f4-bf76-4be0-be28-5acc3bdb0dba", + "name": "10.100.0.4", + "type": "UE", + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438357, + 43.74781 + ] + }, + "path": { + "type": "LineString", + "coordinates": [ + [ + 7.438357, + 43.74781 + ], + [ + 7.438296, + 43.747852 + ], + [ + 7.438229, + 43.74791 + ], + [ + 7.43813, + 43.74803 + ], + [ + 7.438074, + 43.748108 + ], + [ + 7.438025, + 43.748264 + ], + [ + 7.437991, + 43.748398 + ], + [ + 7.437937, + 43.748512 + ], + [ + 7.437883, + 43.74859 + ], + [ + 7.437741, + 43.74875 + ], + [ + 7.437593, + 43.748924 + ], + [ + 7.437481, + 43.74905 + ], + [ + 7.437416, + 43.74911 + ], + [ + 7.437419, + 43.749146 + ], + [ + 7.43739, + 43.749184 + ], + [ + 7.437339, + 43.749203 + ], + [ + 7.437285, + 43.74919 + ], + [ + 7.437256, + 43.74917 + ], + [ + 7.43555, + 43.74844 + ], + [ + 7.435097, + 43.748184 + ], + [ + 7.435008, + 43.748077 + ], + [ + 7.434885, + 43.747814 + ], + [ + 7.434788, + 43.747723 + ], + [ + 7.433391, + 43.74693 + ], + [ + 7.433243, + 43.74679 + ], + [ + 7.43301, + 43.746536 + ], + [ + 7.432804, + 43.74642 + ], + [ + 7.432353, + 43.74604 + ], + [ + 7.431985, + 43.74559 + ], + [ + 7.431216, + 43.74428 + ], + [ + 7.430556, + 43.74307 + ], + [ + 7.430336, + 43.741848 + ], + [ + 7.430226, + 43.74178 + ], + [ + 7.430038, + 43.741756 + ], + [ + 7.429864, + 43.741695 + ], + [ + 7.429766, + 43.74158 + ], + [ + 7.429731, + 43.741432 + ], + [ + 7.429797, + 43.741234 + ], + [ + 7.42986, + 43.74115 + ], + [ + 7.42995, + 43.74109 + ], + [ + 7.430094, + 43.74108 + ], + [ + 7.430255, + 43.74114 + ], + [ + 7.430392, + 43.74126 + ], + [ + 7.430475, + 43.7415 + ], + [ + 7.430642, + 43.742832 + ], + [ + 7.430717, + 43.74308 + ], + [ + 7.432086, + 43.745556 + ], + [ + 7.432441, + 43.74601 + ], + [ + 7.433179, + 43.746563 + ], + [ + 7.434716, + 43.747498 + ], + [ + 7.434871, + 43.74766 + ], + [ + 7.435108, + 43.74807 + ], + [ + 7.435305, + 43.74823 + ], + [ + 7.435923, + 43.748547 + ], + [ + 7.436871, + 43.748955 + ], + [ + 7.437138, + 43.749054 + ], + [ + 7.437248, + 43.74907 + ], + [ + 7.437368, + 43.749058 + ], + [ + 7.43747, + 43.74894 + ], + [ + 7.437652, + 43.748714 + ], + [ + 7.437765, + 43.74859 + ], + [ + 7.437835, + 43.748512 + ], + [ + 7.437883, + 43.74838 + ], + [ + 7.437918, + 43.74817 + ], + [ + 7.437931, + 43.748116 + ], + [ + 7.438001, + 43.747997 + ], + [ + 7.438098, + 43.747868 + ], + [ + 7.438138, + 43.747826 + ], + [ + 7.438159, + 43.74777 + ], + [ + 7.438159, + 43.747692 + ], + [ + 7.438173, + 43.747616 + ], + [ + 7.438205, + 43.747566 + ], + [ + 7.438264, + 43.747528 + ], + [ + 7.438347, + 43.747513 + ], + [ + 7.438443, + 43.74752 + ], + [ + 7.438505, + 43.74755 + ], + [ + 7.438548, + 43.7476 + ], + [ + 7.438569, + 43.747654 + ], + [ + 7.438545, + 43.747726 + ], + [ + 7.438494, + 43.747772 + ], + [ + 7.438431, + 43.7478 + ], + [ + 7.438357, + 43.74781 + ] + ] + }, + "eopMode": "LOOP", + "velocity": 20, + "radius": null + }, + "wireless": true, + "wirelessType": "wifi,5g,4g", + "meta": { + "display.map.icon": "ion-android-car" + }, + "netChar": { + "throughputDl": 1000, + "throughputUl": 1000, + "latency": null, + "latencyVariation": null, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "macId": "005C0A640004", + "isExternal": null, + "networkLocationsInRange": null, + "connected": null, + "userMeta": null, + "processes": null, + "linkLatency": null, + "linkLatencyVariation": null, + "linkThroughput": null, + "linkPacketLoss": null + } + ], + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa5GConfig": null, + "poaWifiConfig": null + }, + { + "id": "4a3da8ed-e833-48bf-b833-2c67512e53cf", + "name": "wifi-ap-8", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C08080808" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.431644, + 43.746662 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "d1cc062f-bb7f-40cf-91af-5593376f3b4d", + "name": "wifi-ap-9", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C09090909" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.435867, + 43.748856 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "c4df58ab-17a2-49e0-b5fa-531a6ce15baf", + "name": "wifi-ap-10", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C0A0A0A0A" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438055, + 43.748734 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + }, + { + "id": "3fbf9ec8-3932-455c-8352-0d06b7bb7a15", + "name": "5g-small-cell-13", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "D0D0D0D0D" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.431907, + 43.74543 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "80e3b677-56cb-495c-b798-e19f96d491b9", + "name": "5g-small-cell-14", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "E0E0E0E0E" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.433109, + 43.746513 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "dcb66c87-1854-4c8e-ae88-72b14df9aaff", + "name": "5g-small-cell-15", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "F0F0F0F0F" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.434376, + 43.747337 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "10b048d1-2fba-486d-89a0-d1a3191b90b4", + "name": "5g-small-cell-16", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "010101010" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.435985, + 43.747784 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "35602880-9727-4ed6-8f53-fe0ffab22cb4", + "name": "5g-small-cell-17", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "111111111" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.437487, + 43.7487 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "4aef0f33-51d2-472c-8441-b5c55f0de626", + "name": "5g-small-cell-18", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "212121212" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.438839, + 43.749706 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "3396c6ae-28f8-4c8b-ba12-9991bddeed61", + "name": "5g-small-cell-19", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "313131313" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.4371, + 43.750282 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "246f3830-3b56-4359-9452-b17f34426888", + "name": "5g-small-cell-20", + "type": "POA-5G", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poa5GConfig": { + "cellId": "414141414" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.436006, + 43.749382 + ] + }, + "radius": 100, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poaWifiConfig": null, + "physicalLocations": null + }, + { + "id": "da565fc0-0d1e-47a1-944e-2d77441051de", + "name": "wifi-ap-11", + "type": "POA-WIFI", + "netChar": { + "latency": 1, + "latencyVariation": 1, + "throughputDl": 1000, + "throughputUl": 1000, + "latencyDistribution": null, + "throughput": null, + "packetLoss": null + }, + "poaWifiConfig": { + "macId": "005C0B0B0B0B" + }, + "geoData": { + "location": { + "type": "Point", + "coordinates": [ + 7.43891, + 43.74822 + ] + }, + "radius": 50, + "path": null, + "eopMode": null, + "velocity": null + }, + "terminalLinkLatency": null, + "terminalLinkLatencyVariation": null, + "terminalLinkThroughput": null, + "terminalLinkPacketLoss": null, + "meta": null, + "userMeta": null, + "cellularPoaConfig": null, + "poa4GConfig": null, + "poa5GConfig": null, + "physicalLocations": null + } + ], + "interFogLatency": null, + "interFogLatencyVariation": null, + "interFogThroughput": null, + "interFogPacketLoss": null, + "interEdgeLatency": null, + "interEdgeLatencyVariation": null, + "interEdgeThroughput": null, + "interEdgePacketLoss": null, + "edgeFogLatency": null, + "edgeFogLatencyVariation": null, + "edgeFogThroughput": null, + "edgeFogPacketLoss": null, + "userMeta": null + } + ], + "interZoneLatency": null, + "interZoneLatencyVariation": null, + "interZoneThroughput": null, + "interZonePacketLoss": null, + "meta": null, + "userMeta": null + } + ], + "interDomainLatency": null, + "interDomainLatencyVariation": null, + "interDomainThroughput": null, + "interDomainPacketLoss": null, + "meta": null + }, + "id": null, + "description": null, + "config": null +} -- GitLab From dd19eeffcb3d3a382269a137ced9ffb58b448325 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 11 Dec 2020 16:07:15 -0500 Subject: [PATCH 004/194] merge loc-sev done, systemTest proper cleanup --- test/system/loc-serv_test.go | 922 ++-- test/system/loc-serv_test.go2 | 1455 ------- test/system/system-test.yaml | 594 +++ test/system/systemTest.go | 381 +- test/system/systemTest_test.go2 | 7035 ------------------------------- test/system/test.json | 6910 ------------------------------ 6 files changed, 1307 insertions(+), 15990 deletions(-) delete mode 100644 test/system/loc-serv_test.go2 create mode 100644 test/system/system-test.yaml delete mode 100644 test/system/systemTest_test.go2 delete mode 100644 test/system/test.json diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index 6607a5645..7ab315ddf 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -3,6 +3,7 @@ package main import ( "encoding/json" "fmt" + "strconv" "testing" "context" @@ -17,8 +18,10 @@ var locServServerUrl string func init() { - startSystemTest() - + err := startSystemTest() + if err != nil { + log.Fatal("Cannot start system test") + } //create client locServAppClientCfg := locServClient.NewConfiguration() if hostUrlStr == "" { @@ -39,10 +42,17 @@ func init() { func initialiseTest() { log.Info("activating Scenario") - activateScenario("system-test") + err := activateScenario("system-test") + if err != nil { + log.Fatal("Scenario cannot be activated: ", err) + } time.Sleep(1000 * time.Millisecond) //enable gis engine mobility, poas-in-range and netchar update geAutomationUpdate(true, false, true, true) + if err != nil { + log.Fatal("GIS engine error: ", err) + } + time.Sleep(1000 * time.Millisecond) } @@ -52,7 +62,6 @@ func clearUpTest() { time.Sleep(1000 * time.Millisecond) } -/* func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) @@ -64,7 +73,7 @@ func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -74,16 +83,17 @@ func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g2", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g2", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -99,7 +109,7 @@ func Test_4g_to_4g_diff_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -109,22 +119,23 @@ func Test_4g_to_4g_diff_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 2 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") err = json.Unmarshal([]byte(httpReqBody[1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "", "Entering") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "", "Entering") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -140,7 +151,7 @@ func Test_4g_to_5g_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -150,16 +161,17 @@ func Test_4g_to_5g_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -175,7 +187,7 @@ func Test_4g_to_wifi_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -185,16 +197,17 @@ func Test_4g_to_wifi_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -210,7 +223,7 @@ func Test_4g_to_generic_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -220,16 +233,17 @@ func Test_4g_to_generic_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -245,7 +259,7 @@ func Test_4g_to_none_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -255,16 +269,17 @@ func Test_4g_to_none_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -280,7 +295,7 @@ func Test_5g_to_5g_same_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(1500 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -290,16 +305,17 @@ func Test_5g_to_5g_same_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g3", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g3", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -315,7 +331,7 @@ func Test_5g_to_5g_diff_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -325,22 +341,23 @@ func Test_5g_to_5g_diff_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 2 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") err = json.Unmarshal([]byte(httpReqBody[1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "", "Entering") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "", "Entering") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -356,7 +373,7 @@ func Test_5g_to_4g_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -366,16 +383,17 @@ func Test_5g_to_4g_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -391,7 +409,7 @@ func Test_5g_to_wifi_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -401,16 +419,17 @@ func Test_5g_to_wifi_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-wifi2", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-wifi2", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -426,7 +445,7 @@ func Test_5g_to_generic_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -436,16 +455,17 @@ func Test_5g_to_generic_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa2", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa2", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -461,7 +481,7 @@ func Test_5g_to_none_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -471,16 +491,17 @@ func Test_5g_to_none_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -496,7 +517,7 @@ func Test_wifi_to_wifi_same_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -506,16 +527,17 @@ func Test_wifi_to_wifi_same_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi4", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi4", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -531,7 +553,7 @@ func Test_wifi_to_wifi_diff_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -541,22 +563,23 @@ func Test_wifi_to_wifi_diff_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 2 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") err = json.Unmarshal([]byte(httpReqBody[1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "", "Entering") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "", "Entering") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -572,7 +595,7 @@ func Test_wifi_to_5g_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -582,16 +605,17 @@ func Test_wifi_to_5g_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -607,7 +631,7 @@ func Test_wifi_to_4g_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -617,16 +641,17 @@ func Test_wifi_to_4g_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-4g4", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-4g4", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -642,7 +667,7 @@ func Test_wifi_to_generic_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -652,16 +677,17 @@ func Test_wifi_to_generic_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa3", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa3", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -677,7 +703,7 @@ func Test_wifi_to_none_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -687,16 +713,17 @@ func Test_wifi_to_none_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -712,7 +739,7 @@ func Test_generic_to_generic_same_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -722,16 +749,17 @@ func Test_generic_to_generic_same_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -747,7 +775,7 @@ func Test_generic_to_generic_diff_zone_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -757,22 +785,23 @@ func Test_generic_to_generic_diff_zone_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 2 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") err = json.Unmarshal([]byte(httpReqBody[1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone5", "poa6", "", "Entering") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone5", "poa6", "", "Entering") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -788,7 +817,7 @@ func Test_gereneric_to_wifi_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -798,16 +827,17 @@ func Test_gereneric_to_wifi_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -823,7 +853,7 @@ func Test_generic_to_4g_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -833,16 +863,17 @@ func Test_generic_to_4g_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-4g5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-4g5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -858,7 +889,7 @@ func Test_generic_to_5g_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -868,16 +899,17 @@ func Test_generic_to_5g_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-5g5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-5g5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -893,7 +925,7 @@ func Test_generic_to_none_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -903,16 +935,17 @@ func Test_generic_to_none_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -928,7 +961,7 @@ func Test_none_to_none_userTracking(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -938,7 +971,7 @@ func Test_none_to_none_userTracking(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 1.0, 1.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { t.Fatalf("Notification received") @@ -957,7 +990,7 @@ func Test_4g_to_4g_same_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -967,16 +1000,17 @@ func Test_4g_to_4g_same_zone_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g2", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g2", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -993,7 +1027,7 @@ func Test_4g_to_4g_diff_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1003,16 +1037,17 @@ func Test_4g_to_4g_diff_zone_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1029,7 +1064,7 @@ func Test_4g_to_5g_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1039,16 +1074,17 @@ func Test_4g_to_5g_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g1", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g1", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1065,7 +1101,7 @@ func Test_4g_to_wifi_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1075,16 +1111,17 @@ func Test_4g_to_wifi_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi1", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi1", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1101,7 +1138,7 @@ func Test_4g_to_generic_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1111,16 +1148,17 @@ func Test_4g_to_generic_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa1", "poa-4g1", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa1", "poa-4g1", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1137,7 +1175,7 @@ func Test_4g_to_none_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1147,16 +1185,17 @@ func Test_4g_to_none_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1173,7 +1212,7 @@ func Test_5g_to_5g_same_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1183,16 +1222,17 @@ func Test_5g_to_5g_same_zone_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g3", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g3", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1209,7 +1249,7 @@ func Test_5g_to_5g_diff_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1219,16 +1259,17 @@ func Test_5g_to_5g_diff_zone_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1245,7 +1286,7 @@ func Test_5g_to_4g_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1255,16 +1296,17 @@ func Test_5g_to_4g_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g3", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g3", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1281,7 +1323,7 @@ func Test_5g_to_wifi_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1291,16 +1333,17 @@ func Test_5g_to_wifi_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi2", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi2", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1317,7 +1360,7 @@ func Test_5g_to_generic_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1327,16 +1370,17 @@ func Test_5g_to_generic_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa2", "poa-5g2", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa2", "poa-5g2", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1353,17 +1397,17 @@ func Test_5g_to_none_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification @@ -1373,6 +1417,7 @@ func Test_5g_to_none_zonalTraffic(t *testing.T) { } validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1389,10 +1434,10 @@ func Test_wifi_to_wifi_same_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") @@ -1400,16 +1445,17 @@ func Test_wifi_to_wifi_same_zone_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi4", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi4", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1426,26 +1472,27 @@ func Test_wifi_to_wifi_diff_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1462,26 +1509,27 @@ func Test_wifi_to_5g_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g4", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g4", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1498,26 +1546,27 @@ func Test_wifi_to_4g_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g4", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g4", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1534,26 +1583,27 @@ func Test_wifi_to_generic_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa3", "poa-wifi3", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa3", "poa-wifi3", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1570,26 +1620,27 @@ func Test_wifi_to_none_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1606,26 +1657,27 @@ func Test_generic_to_generic_same_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1642,26 +1694,27 @@ func Test_generic_to_generic_diff_zone_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1678,26 +1731,27 @@ func Test_gereneric_to_wifi_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1714,26 +1768,27 @@ func Test_generic_to_4g_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1750,26 +1805,27 @@ func Test_generic_to_5g_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g5", "poa4", "Transferring") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g5", "poa4", "Transferring") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1786,26 +1842,27 @@ func Test_generic_to_none_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { var body locServClient.InlineZonalPresenceNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } @@ -1822,7 +1879,7 @@ func Test_none_to_none_zonalTraffic(t *testing.T) { //moving to initial position geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) @@ -1832,13 +1889,12 @@ func Test_none_to_none_zonalTraffic(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates(testAddress, 1.0, 1.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { t.Fatalf("Notification received") } } -*/ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) @@ -1854,18 +1910,17 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { geMoveAssetCoordinates("ue2", 0.0, 0.0) geMoveAssetCoordinates("ue3", 0.0, 0.0) geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + err := locServSubscriptionZoneStatus(testZoneId, locServServerUrl, 2, 5) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { t.Fatalf("Notification received") @@ -1873,7 +1928,7 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue2", 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 1 { @@ -1884,12 +1939,13 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { } validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 7.413917, 43.733505) - time.Sleep(60000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being greater than AP threshold if len(httpReqBody) == 2 { @@ -1900,28 +1956,30 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { } validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 3 { var body locServClient.InlineZoneStatusNotification - err = json.Unmarshal([]byte(httpReqBody[4]), &body) + err = json.Unmarshal([]byte(httpReqBody[2]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue4", 7.415917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, no change to poa that has equal value to threshold if len(httpReqBody) != 3 { @@ -1931,7 +1989,7 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, values below AP threshold if len(httpReqBody) != 3 { @@ -1946,25 +2004,24 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { initialiseTest() defer clearUpTest() - testZoneId := "zone1" + testZoneId := "zone2" //moving to initial position geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) geMoveAssetCoordinates("ue3", 0.0, 0.0) geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + err := locServSubscriptionZoneStatus(testZoneId, locServServerUrl, 2, 5) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { t.Fatalf("Notification received") @@ -1972,7 +2029,7 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue2", 7.419917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 1 { @@ -1981,14 +2038,15 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-5g2", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 7.419917, 43.733505) - time.Sleep(60000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being greater than AP threshold if len(httpReqBody) == 2 { @@ -1997,30 +2055,32 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-5g2", 3, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 3 { var body locServClient.InlineZoneStatusNotification - err = json.Unmarshal([]byte(httpReqBody[4]), &body) + err = json.Unmarshal([]byte(httpReqBody[2]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-5g2", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue4", 7.421917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, no change to poa that has equal value to threshold if len(httpReqBody) != 3 { @@ -2030,7 +2090,7 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, values below AP threshold if len(httpReqBody) != 3 { @@ -2045,25 +2105,24 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { initialiseTest() defer clearUpTest() - testZoneId := "zone1" + testZoneId := "zone3" //moving to initial position geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) geMoveAssetCoordinates("ue3", 0.0, 0.0) geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + err := locServSubscriptionZoneStatus(testZoneId, locServServerUrl, 2, 5) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { t.Fatalf("Notification received") @@ -2071,7 +2130,7 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue2", 7.425917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 1 { @@ -2080,14 +2139,15 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-wifi3", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 7.425917, 43.733505) - time.Sleep(60000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being greater than AP threshold if len(httpReqBody) == 2 { @@ -2096,30 +2156,32 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-wifi3", 3, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 3 { var body locServClient.InlineZoneStatusNotification - err = json.Unmarshal([]byte(httpReqBody[4]), &body) + err = json.Unmarshal([]byte(httpReqBody[2]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-wifi3", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue4", 7.427917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, no change to poa that has equal value to threshold if len(httpReqBody) != 3 { @@ -2129,7 +2191,7 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, values below AP threshold if len(httpReqBody) != 3 { @@ -2144,17 +2206,17 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { initialiseTest() defer clearUpTest() - testZoneId := "zone1" + testZoneId := "zone4" //moving to initial position geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) geMoveAssetCoordinates("ue3", 0.0, 0.0) geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 5) + err := locServSubscriptionZoneStatus(testZoneId, locServServerUrl, 2, 5) if err != nil { t.Fatalf("Subscription failed") } @@ -2162,7 +2224,7 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { t.Fatalf("Notification received") @@ -2170,7 +2232,7 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue2", 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 1 { @@ -2179,14 +2241,15 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa4", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 7.431917, 43.733505) - time.Sleep(60000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being greater than AP threshold if len(httpReqBody) == 2 { @@ -2195,30 +2258,32 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa4", 3, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue3", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to AP threshold if len(httpReqBody) == 3 { var body locServClient.InlineZoneStatusNotification - err = json.Unmarshal([]byte(httpReqBody[4]), &body) + err = json.Unmarshal([]byte(httpReqBody[2]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa4", 2, -1) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue4", 7.433917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, no change to poa that has equal value to threshold if len(httpReqBody) != 3 { @@ -2228,7 +2293,7 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { log.Info("moving asset") geMoveAssetCoordinates("ue1", 0.0, 0.0) geMoveAssetCoordinates("ue2", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, values below AP threshold if len(httpReqBody) != 3 { @@ -2250,21 +2315,21 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { geMoveAssetCoordinates("ue2", 0.0, 0.0) geMoveAssetCoordinates("ue3", 0.0, 0.0) geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 3) + err := locServSubscriptionZoneStatus(testZoneId, locServServerUrl, 2, 3) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") //moving to each different type of POA - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + geMoveAssetCoordinates("ue1", 7.415917, 43.733505) geMoveAssetCoordinates("ue2", 7.419917, 43.733505) - geMoveAssetCoordinates("ue3", 7.425917, 43.733505) - geMoveAssetCoordinates("ue4", 7.431917, 43.733505) - time.Sleep(1000 * time.Millisecond) + geMoveAssetCoordinates("ue3", 7.413917, 43.735005) + geMoveAssetCoordinates("ue4", 7.413917, 43.732005) + time.Sleep(2000 * time.Millisecond) //notification received for being greater to zone threshold if len(httpReqBody) == 1 { @@ -2275,12 +2340,13 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { } validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 4) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification received for being equal to zone threshold if len(httpReqBody) == 2 { @@ -2291,12 +2357,13 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { } validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } log.Info("moving asset") geMoveAssetCoordinates("ue1", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //notification not received, values below zone threshold if len(httpReqBody) != 2 { @@ -2318,51 +2385,95 @@ func Test_zoneStatus_zone_AP_threshold(t *testing.T) { geMoveAssetCoordinates("ue2", 0.0, 0.0) geMoveAssetCoordinates("ue3", 0.0, 0.0) geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test - err := locServSubscriptionZoneStatus(testZoneId, "http://10.3.16.150:3000" /*locServServerUrl*/, 2, 3) + err := locServSubscriptionZoneStatus(testZoneId, locServServerUrl, 2, 3) if err != nil { t.Fatalf("Subscription failed") } log.Info("moving asset") - //moving to each different type of POA + //moving to one POA and triggering a AP threshold, so 1 notification for AP threshold geMoveAssetCoordinates("ue1", 7.413917, 43.733505) geMoveAssetCoordinates("ue2", 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + //moving to same POA and triggering a AP and zone thresholds, so 1 notification for AP threshold, and 1 for zone threshold geMoveAssetCoordinates("ue3", 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + //moving to same POA and triggering a AP and zone thresholds, so 1 notification for AP threshold, and 1 for zone threshold geMoveAssetCoordinates("ue4", 7.413917, 43.733505) - time.Sleep(1000 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) + //removing one ue from same POA and triggering a AP and zone thresholds, so 1 notification for AP threshold, and 1 for zone threshold + geMoveAssetCoordinates("ue4", 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + //removing one ue from same POA and triggering a AP threshold only, so 1 notification for AP threshold + geMoveAssetCoordinates("ue3", 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + //removing one ue from same POA and triggering no threshold + geMoveAssetCoordinates("ue2", 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) //notification received for being greater to zone threshold - if len(httpReqBody) == 2 { + if len(httpReqBody) == 8 { var body locServClient.InlineZoneStatusNotification err = json.Unmarshal([]byte(httpReqBody[0]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 4, -1) + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) err = json.Unmarshal([]byte(httpReqBody[1]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + + err = json.Unmarshal([]byte(httpReqBody[2]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) + + err = json.Unmarshal([]byte(httpReqBody[3]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 4, -1) + + err = json.Unmarshal([]byte(httpReqBody[4]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 4) + + err = json.Unmarshal([]byte(httpReqBody[5]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + + err = json.Unmarshal([]byte(httpReqBody[6]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) + + err = json.Unmarshal([]byte(httpReqBody[7]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + } else { + printHttpReqBody() t.Fatalf("Number of expected notifications not received") } +} - log.Info("moving asset") - geMoveAssetCoordinates("ue1", 0.0, 0.0) - geMoveAssetCoordinates("ue2", 0.0, 0.0) - geMoveAssetCoordinates("ue3", 0.0, 0.0) - geMoveAssetCoordinates("ue4", 0.0, 0.0) - time.Sleep(1000 * time.Millisecond) - - //notification not received, values below zone threshold - if len(httpReqBody) != 2 { - t.Fatalf("Notification received") - } +//not a real test, just the last test that stops the system test environment +func Test_stopSystemTest(t *testing.T) { + stopSystemTest() } func locServSubscriptionUserTracking(address string, callbackReference string) error { @@ -2429,24 +2540,21 @@ func validateZonalPresenceNotification(t *testing.T, zonalPresenceNotification * func validateZoneStatusNotification(t *testing.T, zoneStatusNotification *locServClient.ZoneStatusNotification, expectedZoneId string, expectedApId string, expectedNbUsersInAP int32, expectedNbUsersInZone int32) { if zoneStatusNotification.ZoneId != expectedZoneId { - t.Fatalf("ZoneId of notification not as expected") + t.Fatalf("ZoneId of notification not as expected: " + zoneStatusNotification.ZoneId + " instead of " + expectedZoneId) } if expectedNbUsersInZone != -1 { if zoneStatusNotification.NumberOfUsersInZone != expectedNbUsersInZone { - t.Fatalf("NumberOfUsersInZone of notification not as expected") + t.Fatalf("NumberOfUsersInZone of notification not as expected: " + strconv.Itoa(int(zoneStatusNotification.NumberOfUsersInZone)) + " instead of " + strconv.Itoa(int(expectedNbUsersInZone))) } } if expectedNbUsersInAP != -1 { - if zoneStatusNotification.AccessPointId != expectedApId { - t.Fatalf("AccessPointId of notification not as expected") - } if zoneStatusNotification.NumberOfUsersInAP != expectedNbUsersInAP { - t.Fatalf("NumberOfUsersInAP of notification not as expected") + t.Fatalf("NumberOfUsersInAP of notification not as expected: " + strconv.Itoa(int(zoneStatusNotification.NumberOfUsersInAP)) + " instead of " + strconv.Itoa(int(expectedNbUsersInAP))) } - } else { - if zoneStatusNotification.AccessPointId != "" { - t.Fatalf("AccessPointId of notification not as expected") + if zoneStatusNotification.AccessPointId != expectedApId { + t.Fatalf("AccessPointId of notification not as expected: " + zoneStatusNotification.AccessPointId + " instead of " + expectedApId) } + } } diff --git a/test/system/loc-serv_test.go2 b/test/system/loc-serv_test.go2 deleted file mode 100644 index eb838168e..000000000 --- a/test/system/loc-serv_test.go2 +++ /dev/null @@ -1,1455 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "testing" - - "context" - "time" - - locServClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client" - log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" -) - -var locServAppClient *locServClient.APIClient -var locServServerUrl string - -func init() { - - startSystemTest() - - //create client - locServAppClientCfg := locServClient.NewConfiguration() - if hostUrlStr == "" { - locServAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/location/v2" - } else { - locServAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/location/v2" - } - locServAppClient = locServClient.NewAPIClient(locServAppClientCfg) - if locServAppClient == nil { - log.Error("Failed to create Location App REST API client: ", locServAppClientCfg.BasePath) - } - locServServerUrl = hostUrlStr + ":" + httpListenerPort - - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - -} - -func initialiseTest() { - log.Info("activating Scenario") - activateScenario("system-test") - time.Sleep(1000 * time.Millisecond) - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - time.Sleep(1000 * time.Millisecond) -} - -func clearUpTest() { - log.Info("terminating Scenario") - terminateScenario() - time.Sleep(1000 * time.Millisecond) -} - -func Test_4g_to_4g_same_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g2" - expectedPreviousAccessPointId = "poa-4g1" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_4g_to_4g_diff_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 2 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g1" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - err = json.Unmarshal([]byte(httpReqBody[1]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g3" - expectedUserEventType = "Entering" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - } else { - t.Fatalf("Notification not received") - } -} - -func Test_4g_to_5g(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g1" - expectedPreviousAccessPointId = "poa-4g1" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_4g_to_wifi(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi1" - expectedPreviousAccessPointId = "poa-4g1" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_4g_to_generic(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa1" - expectedPreviousAccessPointId = "poa-4g1" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_4g_to_none(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.413917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g1" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_5g_to_5g_same_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g3" - expectedPreviousAccessPointId = "poa-5g2" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_5g_to_5g_diff_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 2 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g2" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - err = json.Unmarshal([]byte(httpReqBody[1]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g4" - expectedUserEventType = "Entering" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - } else { - t.Fatalf("Notification not received") - } -} - -func Test_5g_to_4g(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g3" - expectedPreviousAccessPointId = "poa-5g2" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_5g_to_wifi(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi2" - expectedPreviousAccessPointId = "poa-5g2" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_5g_to_generic(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa2" - expectedPreviousAccessPointId = "poa-5g2" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_5g_to_none(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.419917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g2" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_wifi_to_wifi_same_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi4" - expectedPreviousAccessPointId = "poa-wifi3" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_wifi_to_wifi_diff_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 2 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi3" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - err = json.Unmarshal([]byte(httpReqBody[1]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi5" - expectedUserEventType = "Entering" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - } else { - t.Fatalf("Notification not received") - } -} - -func Test_wifi_to_5g(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g4" - expectedPreviousAccessPointId = "poa-wifi3" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_wifi_to_4g(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g4" - expectedPreviousAccessPointId = "poa-wifi3" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_wifi_to_generic(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa3" - expectedPreviousAccessPointId = "poa-wifi3" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_wifi_to_none(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.425917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi3" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_generic_to_generic_same_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa5" - expectedPreviousAccessPointId = "poa4" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_generic_to_generic_diff_zone(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 2 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa4" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - err = json.Unmarshal([]byte(httpReqBody[1]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa6" - expectedUserEventType = "Entering" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - - } else { - t.Fatalf("Notification not received") - } -} - -func Test_gereneric_to_wifi(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-wifi5" - expectedPreviousAccessPointId = "poa4" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_generic_to_4g(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-4g5" - expectedPreviousAccessPointId = "poa4" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_generic_to_5g(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedPreviousAccessPointId string - - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa-5g5" - expectedPreviousAccessPointId = "poa4" - expectedUserEventType = "Transferring" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if body.ZonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} - -func Test_generic_to_none(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - var expectedAddress string - var expectedCurrentAccessPointId string - var expectedUserEventType locServClient.UserEventType - - //moving to initial position - geMoveAssetCoordinates("ue1", 7.431917, 43.733505) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 0.0, 0.0) - time.Sleep(2 * time.Second) - - if len(httpReqBody) == 1 { - var body locServClient.InlineZonalPresenceNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - - //expectations - expectedAddress = testAddress - expectedCurrentAccessPointId = "poa4" - expectedUserEventType = "Leaving" - - if body.ZonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") - } - if body.ZonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") - } - if *body.ZonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") - } - } else { - t.Fatalf("Notification not received") - } -} -func Test_none_to_none(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initialiseTest() - defer clearUpTest() - - testAddress := "ue1" - - //moving to initial position - geMoveAssetCoordinates("ue1", 0.0, 0.0) - time.Sleep(2 * time.Second) - - //subscription to test - err := locServSubscriptionUserTracking(testAddress, locServServerUrl) - if err != nil { - t.Fatalf("Subscription failed") - } - - log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 1.0, 1.0) - time.Sleep(2 * time.Second) - - if len(httpReqBody) >= 1 { - t.Fatalf("Notification received") - } -} - -func locServSubscriptionUserTracking(address string, callbackReference string) error { - - userTrackingSubscription := locServClient.UserTrackingSubscription{address, &locServClient.CallbackReference{"", nil, callbackReference}, "", "", nil} - inlineUserTrackingSubscription := locServClient.InlineUserTrackingSubscription{&userTrackingSubscription} - - _, _, err := locServAppClient.LocationApi.UserTrackingSubPOST(context.TODO(), inlineUserTrackingSubscription) - if err != nil { - log.Error("Failed to send subscription: ", err) - return err - } - - return nil -} - -func locServSubscriptionZonalTraffic(zoneId string, callbackReference string) error { - - zonalTrafficSubscription := locServClient.ZonalTrafficSubscription{&locServClient.CallbackReference{"", nil, callbackReference}, "", 0, nil, "", nil, zoneId} - inlineZonalTrafficSubscription := locServClient.InlineZonalTrafficSubscription{&zonalTrafficSubscription} - - _, _, err := locServAppClient.LocationApi.ZonalTrafficSubPOST(context.TODO(), inlineZonalTrafficSubscription) - if err != nil { - log.Error("Failed to send subscription: ", err) - return err - } - - return nil -} - -func locServSubscriptionZoneStatus(zoneId string, callbackReference string, nbApThreshold int32, nbZoneThreshold int32) error { - - zoneStatusSubscription := locServClient.ZoneStatusSubscription{&locServClient.CallbackReference{"", nil, callbackReference}, "", nbApThreshold, nbZoneThreshold, nil, "", zoneId} - inlineZoneStatusSubscription := locServClient.InlineZoneStatusSubscription{&zoneStatusSubscription} - - _, _, err := locServAppClient.LocationApi.ZoneStatusSubPOST(context.TODO(), inlineZoneStatusSubscription) - if err != nil { - log.Error("Failed to send subscription: ", err) - return err - } - - return nil -} - diff --git a/test/system/system-test.yaml b/test/system/system-test.yaml new file mode 100644 index 000000000..568707ab5 --- /dev/null +++ b/test/system/system-test.yaml @@ -0,0 +1,594 @@ +version: 1.5.6 +name: system-test +deployment: + netChar: + latency: 50 + latencyVariation: 10 + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + domains: + - + id: PUBLIC + name: PUBLIC + type: PUBLIC + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + zones: + - + id: PUBLIC-COMMON + name: PUBLIC-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + networkLocations: + - + id: PUBLIC-COMMON-DEFAULT + name: PUBLIC-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 13411898-c7e1-472d-bdf7-c4afbefe4613 + name: operator-cell1 + type: OPERATOR-CELLULAR + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + cellularDomainConfig: + mnc: '001' + mcc: '001' + defaultCellId: FFFFFFF + zones: + - + id: operator-cell1-COMMON + name: operator-cell1-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + networkLocations: + - + id: operator-cell1-COMMON-DEFAULT + name: operator-cell1-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: dcf59ab0-cb3d-4dbd-8946-b522eeed685b + name: zone1 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: "" + networkLocations: + - + id: zone1-DEFAULT + name: zone1-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: b412ccca-402a-4d9e-9f68-fca01bfdc2f9 + name: poa-4g1 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '4000001' + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.733505 + radius: 100 + physicalLocations: + - + id: abc18c96-1015-4dee-b32d-cac04ea5db36 + name: ue1 + type: UE + geoData: + eopMode: LOOP + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + macId: '111111111111' + - + id: cb9bc9de-6aef-4b57-a540-e256efb17f04 + name: ue2 + type: UE + geoData: {} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + macId: '222222222222' + - + id: d8107440-c83b-499d-81cc-b6cf68b76e95 + name: ue3 + type: UE + geoData: {} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + macId: '333333333333' + - + id: 10970d7b-8fbd-4d2f-a6de-00b118ad3dc2 + name: ue4 + type: UE + geoData: {} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + macId: '444444444444' + - + id: 223933af-b399-41ca-999a-5e798bf6eb1d + name: poa-4g2 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '4000002' + geoData: + location: + type: Point + coordinates: + - 7.415917 + - 43.733505 + radius: 100 + - + id: 6a0e53da-f162-49cf-8c7b-0f1df0f2ccdf + name: poa1 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.732006 + radius: 100 + - + id: 3bd21819-c104-4401-9ac7-b945461d3f87 + name: poa-5g1 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '500000001' + geoData: + location: + type: Point + coordinates: + - 7.411916 + - 43.733494 + radius: 100 + - + id: 098419d2-e586-49ae-8605-c577616a8b50 + name: poa-wifi1 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poaWifiConfig: + macId: a00000000001 + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.735004 + radius: 100 + - + id: a20bad45-bf09-426f-aed9-e55587c737db + name: zone2 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: "" + networkLocations: + - + id: zone2-DEFAULT + name: zone2-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 5c64c906-a92b-4898-b861-18a13b3fd65c + name: poa-4g3 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '4000003' + geoData: + location: + type: Point + coordinates: + - 7.417917 + - 43.733505 + radius: 100 + - + id: e7b158ee-fbc5-4362-854a-da36c4ca22bc + name: poa-5g2 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '500000002' + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.733505 + radius: 100 + - + id: 5b21944f-ea19-4342-9485-5118a3b18435 + name: poa-5g3 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '500000003' + geoData: + location: + type: Point + coordinates: + - 7.421917 + - 43.733505 + radius: 100 + - + id: d89d4ea2-6dea-40ce-b6ed-9640dcfd9422 + name: poa2 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.732006 + radius: 100 + - + id: df2fcd56-217f-4f61-a199-e3c72395a4e9 + name: poa-wifi2 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poaWifiConfig: + macId: a00000000002 + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.735004 + radius: 100 + - + id: 432c8759-b277-48dd-bc9a-d6d702fa68d6 + name: zone3 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: "" + networkLocations: + - + id: zone3-DEFAULT + name: zone3-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 1c9fc733-3d3e-4d40-8571-bde025e63728 + name: poa-wifi3 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poaWifiConfig: + macId: a00000000003 + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.733505 + radius: 100 + - + id: d626d8dc-21cb-44ed-acbc-e6669fe28245 + name: poa3 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.732006 + radius: 100 + - + id: b1470f5e-2556-432c-b8ca-842037a3ab9d + name: poa-wifi4 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poaWifiConfig: + macId: a00000000004 + geoData: + location: + type: Point + coordinates: + - 7.427917 + - 43.733505 + radius: 100 + - + id: 3a1315a1-26f9-4259-9a4b-cf38f2af0c7f + name: poa-5g4 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '500000004' + geoData: + location: + type: Point + coordinates: + - 7.423917 + - 43.733505 + radius: 100 + - + id: ea326a41-9063-4f28-9d19-96802418bd51 + name: poa-4g4 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '4000004' + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.735004 + radius: 100 + - + id: 143fa19f-52d4-4eec-9edc-098f06b4414d + name: zone4 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: "" + networkLocations: + - + id: zone4-DEFAULT + name: zone4-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 81624ea4-a1d4-42d7-9263-42b93b9391cf + name: poa-wifi5 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poaWifiConfig: + macId: a00000000005 + geoData: + location: + type: Point + coordinates: + - 7.429917 + - 43.733505 + radius: 100 + - + id: 4fe82b81-b9dc-45f5-b816-e5927e82747c + name: poa4 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.733505 + radius: 100 + - + id: 1f9f108b-5cec-47a4-8569-6afd2732ca6e + name: poa5 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + geoData: + location: + type: Point + coordinates: + - 7.433917 + - 43.733505 + radius: 100 + - + id: cef4bf85-164e-4232-94b8-ca5edec1e1d1 + name: poa-4g5 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '4000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.735004 + radius: 100 + - + id: 73fee2c4-284f-47ab-993d-273849dba667 + name: poa-5g5 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '500000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.732006 + radius: 100 + - + id: 48d182c3-3728-46d2-9b0f-22a110183eee + name: zone5 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: "" + networkLocations: + - + id: zone5-DEFAULT + name: zone5-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 5ad4f50a-52f5-4b7f-b7d9-573d58afad3d + name: poa6 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + geoData: + location: + type: Point + coordinates: + - 7.435917 + - 43.733505 + radius: 100 + diff --git a/test/system/systemTest.go b/test/system/systemTest.go index 1b4d8f428..77dc00544 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -1,24 +1,24 @@ package main import ( + "context" + "errors" + "io/ioutil" "net/http" + "net/url" "os" "os/signal" + "strconv" + "strings" "syscall" "time" - "errors" - "context" - "net/url" - "strings" - "io/ioutil" - - log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" - platformCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client" - sandboxCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client" - rnisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client" - waisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client" - gisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client" + gisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client" + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" + platformCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client" + rnisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client" + sandboxCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client" + waisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client" ) var httpReqBody []string @@ -30,199 +30,221 @@ var waisAppClient *waisClient.APIClient var gisAppClient *gisClient.APIClient var sandboxName = "sandbox-system-test" -var scenarioName = "scenario-system-test" var hostUrlStr = "" var httpListenerPort = "3333" var run = false -const PASS = true -const FAIL = false - func resetHttpReqBody() { httpReqBody = []string{} } +func printHttpReqBody() { + for index, body := range httpReqBody { + log.Info("Notification received: (" + strconv.Itoa(index) + "):" + body) + } +} + +func printHttpReqBodyByIndex(index int) { + log.Info("Notification received: (" + strconv.Itoa(index) + "):" + httpReqBody[index]) +} + func initialiseVars() { - hostUrl, _ := url.Parse(strings.TrimSpace(os.Getenv("MEEP_HOST_TEST_URL"))) - hostUrlStr = hostUrl.String() + hostUrl, _ := url.Parse(strings.TrimSpace(os.Getenv("MEEP_HOST_TEST_URL"))) + hostUrlStr = hostUrl.String() } func createClients() error { - // Create & store client for App REST API - platformCtrlAppClientCfg := platformCtrlClient.NewConfiguration() + // Create & store client for App REST API + platformCtrlAppClientCfg := platformCtrlClient.NewConfiguration() if hostUrlStr == "" { platformCtrlAppClientCfg.BasePath = "http://localhost/platform-ctrl/v1" } else { - platformCtrlAppClientCfg.BasePath = hostUrlStr + "/platform-ctrl/v1" + platformCtrlAppClientCfg.BasePath = hostUrlStr + "/platform-ctrl/v1" + } + platformCtrlAppClient = platformCtrlClient.NewAPIClient(platformCtrlAppClientCfg) + if platformCtrlAppClient == nil { + log.Error("Failed to create Platform App REST API client: ", platformCtrlAppClientCfg.BasePath) + err := errors.New("Failed to create Platform App REST API client") + return err } - platformCtrlAppClient = platformCtrlClient.NewAPIClient(platformCtrlAppClientCfg) - if platformCtrlAppClient == nil { - log.Error("Failed to create Platform App REST API client: ", platformCtrlAppClientCfg.BasePath) - err := errors.New("Failed to create Platform App REST API client") - return err - } return nil } func createSandboxClients(sandboxName string) error { - // Create & store client for App REST API - sandboxCtrlAppClientCfg := sandboxCtrlClient.NewConfiguration() - if hostUrlStr == "" { - sandboxCtrlAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/sandbox-ctrl/v1" - } else { - sandboxCtrlAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/sandbox-ctrl/v1" - } - sandboxCtrlAppClient = sandboxCtrlClient.NewAPIClient(sandboxCtrlAppClientCfg) - if sandboxCtrlAppClient == nil { - log.Error("Failed to create Sandbox App REST API client: ", sandboxCtrlAppClientCfg.BasePath) - err := errors.New("Failed to create Sandbox App REST API client") - return err - } - - rnisAppClientCfg := rnisClient.NewConfiguration() - if hostUrlStr == "" { - rnisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/rni/v2" - } else { - rnisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/rni/v2" - } - rnisAppClient = rnisClient.NewAPIClient(rnisAppClientCfg) - if rnisAppClient == nil { - log.Error("Failed to create RNI App REST API client: ", rnisAppClientCfg.BasePath) - err := errors.New("Failed to create RNI App REST API client") - return err - } - - waisAppClientCfg := waisClient.NewConfiguration() - if hostUrlStr == "" { - waisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/wai/v2" - } else { - waisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/wai/v2" - } - waisAppClient = waisClient.NewAPIClient(waisAppClientCfg) - if waisAppClient == nil { - log.Error("Failed to create WAI App REST API client: ", waisAppClientCfg.BasePath) - err := errors.New("Failed to create WAI App REST API client") - return err - } - - gisAppClientCfg := gisClient.NewConfiguration() - if hostUrlStr == "" { - gisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/gis/v1" - } else { - gisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/gis/v1" - } - gisAppClient = gisClient.NewAPIClient(gisAppClientCfg) - if gisAppClient == nil { - log.Error("Failed to create GIS App REST API client: ", gisAppClientCfg.BasePath) - err := errors.New("Failed to create GIS App REST API client") - return err - } - - return nil + // Create & store client for App REST API + sandboxCtrlAppClientCfg := sandboxCtrlClient.NewConfiguration() + if hostUrlStr == "" { + sandboxCtrlAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/sandbox-ctrl/v1" + } else { + sandboxCtrlAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/sandbox-ctrl/v1" + } + sandboxCtrlAppClient = sandboxCtrlClient.NewAPIClient(sandboxCtrlAppClientCfg) + if sandboxCtrlAppClient == nil { + log.Error("Failed to create Sandbox App REST API client: ", sandboxCtrlAppClientCfg.BasePath) + err := errors.New("Failed to create Sandbox App REST API client") + return err + } + + rnisAppClientCfg := rnisClient.NewConfiguration() + if hostUrlStr == "" { + rnisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/rni/v2" + } else { + rnisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/rni/v2" + } + rnisAppClient = rnisClient.NewAPIClient(rnisAppClientCfg) + if rnisAppClient == nil { + log.Error("Failed to create RNI App REST API client: ", rnisAppClientCfg.BasePath) + err := errors.New("Failed to create RNI App REST API client") + return err + } + + waisAppClientCfg := waisClient.NewConfiguration() + if hostUrlStr == "" { + waisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/wai/v2" + } else { + waisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/wai/v2" + } + waisAppClient = waisClient.NewAPIClient(waisAppClientCfg) + if waisAppClient == nil { + log.Error("Failed to create WAI App REST API client: ", waisAppClientCfg.BasePath) + err := errors.New("Failed to create WAI App REST API client") + return err + } + + gisAppClientCfg := gisClient.NewConfiguration() + if hostUrlStr == "" { + gisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/gis/v1" + } else { + gisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/gis/v1" + } + gisAppClient = gisClient.NewAPIClient(gisAppClientCfg) + if gisAppClient == nil { + log.Error("Failed to create GIS App REST API client: ", gisAppClientCfg.BasePath) + err := errors.New("Failed to create GIS App REST API client") + return err + } + + return nil } func createSandbox(name string) error { config := platformCtrlClient.SandboxConfig{""} _, err := platformCtrlAppClient.SandboxControlApi.CreateSandboxWithName(context.TODO(), name, config) - if err != nil { - log.Error("Failed to create sandbox: ", err) - return err - } + if err != nil { + log.Error("Failed to create sandbox: ", err) + return err + } - return nil + return nil } func deleteSandbox(name string) error { - _, err := platformCtrlAppClient.SandboxControlApi.DeleteSandbox(context.TODO(), name) - if err != nil { + _, err := platformCtrlAppClient.SandboxControlApi.DeleteSandbox(context.TODO(), name) + if err != nil { log.Error("Failed to delete sandbox: ", err) return err } - return nil + return nil } func createScenario(name string) error { - var scenario platformCtrlClient.Scenario - _, err := platformCtrlAppClient.ScenarioConfigurationApi.SetScenario(context.TODO(), name, scenario) - if err != nil { - log.Error("Failed to create scenario: ", err) - return err - } + var scenario platformCtrlClient.Scenario + _, err := platformCtrlAppClient.ScenarioConfigurationApi.SetScenario(context.TODO(), name, scenario) + if err != nil { + log.Error("Failed to create scenario: ", err) + return err + } - return nil + return nil } func deleteScenario(name string) error { - _, err := platformCtrlAppClient.ScenarioConfigurationApi.DeleteScenario(context.TODO(), name) - if err != nil { - log.Error("Failed to delete scenario: ", err) - return err - } + _, err := platformCtrlAppClient.ScenarioConfigurationApi.DeleteScenario(context.TODO(), name) + if err != nil { + log.Error("Failed to delete scenario: ", err) + return err + } - return nil + return nil } func activateScenario(name string) error { - _, err := sandboxCtrlAppClient.ActiveScenarioApi.ActivateScenario(context.TODO(), name, nil) - if err != nil { - log.Error("Failed to activate scenario: ", err) - return err - } + _, err := sandboxCtrlAppClient.ActiveScenarioApi.ActivateScenario(context.TODO(), name, nil) + if err != nil { + log.Error("Failed to activate scenario: ", err) + return err + } //reinitialisation of http msg queue resetHttpReqBody() - return nil + return nil } func terminateScenario() error { - _, err := sandboxCtrlAppClient.ActiveScenarioApi.TerminateScenario(context.TODO()) - if err != nil { - log.Error("Failed to terminate scenario: ", err) - return err - } + _, err := sandboxCtrlAppClient.ActiveScenarioApi.TerminateScenario(context.TODO()) + if err != nil { + log.Error("Failed to terminate scenario: ", err) + return err + } - return nil + return nil } -func createBasics() { +func createBasics() error { initialiseVars() - log.Info("creating Clients") - createClients() - log.Info("creating Sandbox") - err := createSandbox(sandboxName) - if err == nil { + log.Info("creating Clients") + err := createClients() + if err != nil { + return err + } + log.Info("creating Sandbox") + err = createSandbox(sandboxName) + if err != nil { + return err + } else { time.Sleep(20000 * time.Millisecond) } - log.Info("creating Sandbox Clients") - createSandboxClients(sandboxName) + log.Info("creating Sandbox Clients") + err = createSandboxClients(sandboxName) + if err != nil { + clearBasics() + return err + } + return nil } func clearBasics() { - log.Info("deleting Sandbox") - deleteSandbox(sandboxName) + log.Info("deleting Sandbox") + deleteSandbox(sandboxName) } -func startSystemTest() { +func startSystemTest() error { if !run { go main() - createBasics() + err := createBasics() + if err != nil { + run = false + return err + } } + return nil } func stopSystemTest() { - if run { - clearBasics() - } + if run { + clearBasics() + run = false + } } func main() { @@ -240,6 +262,10 @@ func main() { log.Info("Starting System Test") run = true + //creating a server for graceful shutdown + listenerPort := ":" + httpListenerPort + server := &http.Server{Addr: listenerPort} + go func() { sigchan := make(chan os.Signal, 10) signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) @@ -247,33 +273,23 @@ func main() { log.Info("Program killed !") // do last actions and wait for all write operations to end run = false + //graceful server shutdown + err := server.Shutdown(context.Background()) + if err != nil { + log.Info("Error shuting down the server: ", err) + } }() go func() { - // Initialize RNIS - /*err := server.Init() - if err != nil { - log.Error("Failed to initialize RNI Service") - run = false - return - } - - // Start RNIS Event Handler thread - err = server.Run() - if err != nil { - log.Error("Failed to start RNI Service") - run = false - return - } - */ - //create default route handler - log.Fatal(http.ListenAndServe(":" + httpListenerPort, nil)) + if err := server.ListenAndServe(); err != http.ErrServerClosed { + // Error starting or closing listener + log.Fatal("HTTP server ListenAndServe: ", err) + } + //log.Fatal(http.ListenAndServe(":" + httpListenerPort, nil)) run = false }() - //createBasics() - count := 0 for { if !run { @@ -290,28 +306,28 @@ func main() { func geAutomationUpdate(mobility bool, movement bool, poasInRange bool, netCharUpd bool) error { _, err := gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "MOBILITY", mobility) - if err != nil { - log.Error("Failed to communicatie with gis engine: ", err) - return err - } - _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "MOVEMENT", movement) - if err != nil { - log.Error("Failed to communicatie with gis engine: ", err) - return err - } - _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "POAS-IN-RANGE", poasInRange) - if err != nil { - log.Error("Failed to communicatie with gis engine: ", err) - return err - } - - _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "NETWORK-CHARACTERISTICS-UPDATE", netCharUpd) - if err != nil { - log.Error("Failed to communicatie with gis engine: ", err) - return err - } - - return nil + if err != nil { + log.Error("Failed to communicate with gis engine: ", err) + return err + } + _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "MOVEMENT", movement) + if err != nil { + log.Error("Failed to communicate with gis engine: ", err) + return err + } + _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "POAS-IN-RANGE", poasInRange) + if err != nil { + log.Error("Failed to communicate with gis engine: ", err) + return err + } + + _, err = gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "NETWORK-CHARACTERISTICS-UPDATE", netCharUpd) + if err != nil { + log.Error("Failed to communicate with gis engine: ", err) + return err + } + + return nil } func geMoveAssetCoordinates(assetName string, long float32, lat float32) error { @@ -323,22 +339,21 @@ func geMoveAssetCoordinates(assetName string, long float32, lat float32) error { geoData.AssetType = "UE" geoData.SubType = "UE" err := geMoveAsset(assetName, geoData) - if err != nil { - log.Error("Failed to move asset: ", err) - return err - } + if err != nil { + log.Error("Failed to move asset: ", err) + return err + } - return nil + return nil } func geMoveAsset(assetName string, geoData gisClient.GeoDataAsset) error { - _, err := gisAppClient.GeospatialDataApi.UpdateGeoDataByName(context.TODO(), assetName, geoData) - if err != nil { - log.Error("Failed to communicatie with gis engine: ", err) - return err - } + _, err := gisAppClient.GeospatialDataApi.UpdateGeoDataByName(context.TODO(), assetName, geoData) + if err != nil { + log.Error("Failed to communicate with gis engine: ", err) + return err + } - return nil + return nil } - diff --git a/test/system/systemTest_test.go2 b/test/system/systemTest_test.go2 deleted file mode 100644 index 402440bd9..000000000 --- a/test/system/systemTest_test.go2 +++ /dev/null @@ -1,7035 +0,0 @@ -package main - -import ( - //"bytes" - //"encoding/json" - //"errors" - "fmt" - //"io" - //"net/http" - //"net/http/httptest" - //"strconv" - "testing" - "time" - - log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" -// ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" - mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" - mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" - - // "github.com/gorilla/mux" -) - -const testScenario string = ` -{ - "version": "1.5.6", - "name": "4g-5g-wifi-macro", - "deployment": { - "netChar": { - "latency": 50, - "latencyVariation": 10, - "latencyDistribution": "Normal", - "throughputDl": 1000, - "throughputUl": 1000, - "throughput": null, - "packetLoss": null - }, - "userMeta": { - "mec-sandbox": "{\"defaultStaticUeCount\": 1, \"defaultLowVelocityUeCount\": 1, \"defaultHighVelocityUeCount\": 1, \"highVelocitySpeedThreshold\": 10}", - "network-info": "{\"type\": \"local\", \"path\":\"4G-Macro-Network-Topology.png\"}" - }, - "domains": [ - { - "id": "PUBLIC", - "name": "PUBLIC", - "type": "PUBLIC", - "netChar": { - "latency": 6, - "latencyVariation": 2, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "zones": [ - { - "id": "PUBLIC-COMMON", - "name": "PUBLIC-COMMON", - "type": "COMMON", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "networkLocations": [ - { - "id": "PUBLIC-COMMON-DEFAULT", - "name": "PUBLIC-COMMON-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "meta": null, - "userMeta": null - } - ], - "interZoneLatency": null, - "interZoneLatencyVariation": null, - "interZoneThroughput": null, - "interZonePacketLoss": null, - "meta": null, - "userMeta": null, - "cellularDomainConfig": null - }, - { - "id": "f1c5f2fe-5fbb-48fa-a0df-6ad00e4eeb4c", - "name": "sandbox-operator", - "type": "OPERATOR-CELLULAR", - "netChar": { - "latency": 6, - "latencyVariation": 2, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "cellularDomainConfig": { - "mnc": "001", - "mcc": "001", - "defaultCellId": "FFFFFFF" - }, - "zones": [ - { - "id": "sandbox-operator-COMMON", - "name": "sandbox-operator-COMMON", - "type": "COMMON", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "networkLocations": [ - { - "id": "sandbox-operator-COMMON-DEFAULT", - "name": "sandbox-operator-COMMON-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "meta": null, - "userMeta": null - }, - { - "id": "6fd7e9d1-3646-474d-880b-d4a21799d280", - "name": "zone01", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "blueviolet" - }, - "networkLocations": [ - { - "id": "zone01-DEFAULT", - "name": "zone01-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "3480e529-3fc1-44b8-a892-42bbbfa4018f", - "name": "4g-macro-cell-1", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "1010101" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.419344, - 43.72764 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "3331ee44-2236-1111-0020-5a3c2bde0eaa", - "name": "10.10.0.4", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.420433, - 43.729942 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.420433, - 43.729942 - ], - [ - 7.420659, - 43.73036 - ], - [ - 7.420621, - 43.731045 - ], - [ - 7.420922, - 43.73129 - ], - [ - 7.421345, - 43.731373 - ], - [ - 7.42135, - 43.73168 - ], - [ - 7.421148, - 43.73173 - ], - [ - 7.420616, - 43.731964 - ], - [ - 7.419779, - 43.732197 - ], - [ - 7.419111, - 43.732353 - ], - [ - 7.418931, - 43.732315 - ], - [ - 7.418345, - 43.731964 - ], - [ - 7.418319, - 43.73186 - ], - [ - 7.418024, - 43.73179 - ], - [ - 7.41796, - 43.731728 - ], - [ - 7.417729, - 43.731743 - ], - [ - 7.417463, - 43.731632 - ], - [ - 7.417507, - 43.73148 - ], - [ - 7.417428, - 43.731407 - ], - [ - 7.417343, - 43.731396 - ], - [ - 7.417334, - 43.731133 - ], - [ - 7.417317, - 43.73053 - ], - [ - 7.417164, - 43.7304 - ], - [ - 7.417164, - 43.72998 - ], - [ - 7.417319, - 43.729916 - ], - [ - 7.419065, - 43.730103 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0004", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "1e2600f4-4861-43d6-abcb-07f4481a124c", - "name": "10.10.0.3", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.423684, - 43.727867 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.423684, - 43.727867 - ], - [ - 7.422571, - 43.727325 - ], - [ - 7.422421, - 43.727333 - ], - [ - 7.42196, - 43.727123 - ], - [ - 7.421828, - 43.72711 - ], - [ - 7.420988, - 43.726707 - ], - [ - 7.420757, - 43.72654 - ], - [ - 7.420393, - 43.72653 - ], - [ - 7.420207, - 43.726746 - ], - [ - 7.419985, - 43.72686 - ], - [ - 7.41988, - 43.72701 - ], - [ - 7.419869, - 43.727287 - ], - [ - 7.419807, - 43.727474 - ], - [ - 7.419671, - 43.727585 - ], - [ - 7.419502, - 43.727608 - ], - [ - 7.419402, - 43.728645 - ], - [ - 7.421238, - 43.72874 - ], - [ - 7.421412, - 43.728493 - ], - [ - 7.421532, - 43.728237 - ], - [ - 7.421697, - 43.72798 - ], - [ - 7.421928, - 43.727783 - ], - [ - 7.422381, - 43.727524 - ], - [ - 7.422507, - 43.72749 - ], - [ - 7.422922, - 43.72768 - ], - [ - 7.422894, - 43.727715 - ], - [ - 7.423666, - 43.72804 - ], - [ - 7.423763, - 43.72794 - ], - [ - 7.4237, - 43.727905 - ], - [ - 7.423684, - 43.727867 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0003", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "8c2599e8-dd88-4ff2-9cf4-6fc54663c152", - "name": "4g-macro-cell-2", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "2020202" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.413819, - 43.729538 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "c52208b3-93bb-4255-9b34-52432acc4398", - "name": "10.100.0.1", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.412295, - 43.728676 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.412295, - 43.728676 - ], - [ - 7.412273, - 43.728664 - ], - [ - 7.412281, - 43.728645 - ], - [ - 7.412294, - 43.72861 - ], - [ - 7.412353, - 43.728577 - ], - [ - 7.412433, - 43.728584 - ], - [ - 7.412494, - 43.72862 - ], - [ - 7.412491, - 43.72867 - ], - [ - 7.412466, - 43.728714 - ], - [ - 7.412627, - 43.728798 - ], - [ - 7.412708, - 43.728863 - ], - [ - 7.412821, - 43.729042 - ], - [ - 7.413009, - 43.729298 - ], - [ - 7.413331, - 43.72953 - ], - [ - 7.414082, - 43.729942 - ], - [ - 7.414709, - 43.730297 - ], - [ - 7.415187, - 43.730553 - ], - [ - 7.415568, - 43.73077 - ], - [ - 7.416118, - 43.73108 - ], - [ - 7.416652, - 43.73135 - ], - [ - 7.416979, - 43.731503 - ], - [ - 7.417131, - 43.73154 - ], - [ - 7.41718, - 43.731457 - ], - [ - 7.417308, - 43.73144 - ], - [ - 7.417392, - 43.731476 - ], - [ - 7.417432, - 43.731533 - ], - [ - 7.417426, - 43.731598 - ], - [ - 7.417365, - 43.73165 - ], - [ - 7.417268, - 43.731663 - ], - [ - 7.417177, - 43.73164 - ], - [ - 7.417037, - 43.731712 - ], - [ - 7.416912, - 43.73183 - ], - [ - 7.416855, - 43.731888 - ], - [ - 7.41681, - 43.731964 - ], - [ - 7.41681, - 43.732018 - ], - [ - 7.416761, - 43.732048 - ], - [ - 7.4167, - 43.732037 - ], - [ - 7.416646, - 43.731995 - ], - [ - 7.416437, - 43.73177 - ], - [ - 7.416278, - 43.731544 - ], - [ - 7.416238, - 43.731464 - ], - [ - 7.416225, - 43.731384 - ], - [ - 7.416228, - 43.73122 - ], - [ - 7.416206, - 43.731102 - ], - [ - 7.416128, - 43.73104 - ], - [ - 7.416005, - 43.73094 - ], - [ - 7.415892, - 43.73085 - ], - [ - 7.415442, - 43.730564 - ], - [ - 7.414985, - 43.73029 - ], - [ - 7.413749, - 43.7296 - ], - [ - 7.413719, - 43.729523 - ], - [ - 7.414267, - 43.72908 - ], - [ - 7.414825, - 43.728683 - ], - [ - 7.414983, - 43.728634 - ], - [ - 7.415184, - 43.728607 - ], - [ - 7.415248, - 43.728603 - ], - [ - 7.41531, - 43.72861 - ], - [ - 7.415366, - 43.72868 - ], - [ - 7.415329, - 43.728752 - ], - [ - 7.415332, - 43.72882 - ], - [ - 7.41538, - 43.728905 - ], - [ - 7.415645, - 43.729088 - ], - [ - 7.416165, - 43.729477 - ], - [ - 7.416268, - 43.729515 - ], - [ - 7.416372, - 43.72958 - ], - [ - 7.416673, - 43.7298 - ], - [ - 7.416808, - 43.729828 - ], - [ - 7.416867, - 43.72982 - ], - [ - 7.417084, - 43.72983 - ], - [ - 7.417418, - 43.72988 - ], - [ - 7.417764, - 43.729916 - ], - [ - 7.418454, - 43.72999 - ], - [ - 7.418545, - 43.729046 - ], - [ - 7.418624, - 43.729004 - ], - [ - 7.419099, - 43.72902 - ], - [ - 7.419173, - 43.728962 - ], - [ - 7.419217, - 43.72858 - ], - [ - 7.420207, - 43.72863 - ], - [ - 7.421203, - 43.728664 - ], - [ - 7.421265, - 43.72848 - ], - [ - 7.421318, - 43.72833 - ], - [ - 7.421387, - 43.72821 - ], - [ - 7.421448, - 43.72811 - ], - [ - 7.421565, - 43.727966 - ], - [ - 7.42162, - 43.7279 - ], - [ - 7.42168, - 43.72785 - ], - [ - 7.421951, - 43.727634 - ], - [ - 7.422287, - 43.72743 - ], - [ - 7.422104, - 43.72733 - ], - [ - 7.421898, - 43.72723 - ], - [ - 7.421297, - 43.726948 - ], - [ - 7.42101, - 43.726795 - ], - [ - 7.42075, - 43.72662 - ], - [ - 7.420669, - 43.726624 - ], - [ - 7.420599, - 43.726635 - ], - [ - 7.420543, - 43.72666 - ], - [ - 7.420205, - 43.726803 - ], - [ - 7.420039, - 43.726883 - ], - [ - 7.41995, - 43.72704 - ], - [ - 7.419926, - 43.727287 - ], - [ - 7.419913, - 43.727413 - ], - [ - 7.419859, - 43.72752 - ], - [ - 7.419728, - 43.727615 - ], - [ - 7.419527, - 43.72767 - ], - [ - 7.419304, - 43.72768 - ], - [ - 7.418912, - 43.727684 - ], - [ - 7.418875, - 43.727726 - ], - [ - 7.418805, - 43.727734 - ], - [ - 7.418751, - 43.727886 - ], - [ - 7.41866, - 43.728058 - ], - [ - 7.418553, - 43.728134 - ], - [ - 7.418459, - 43.72819 - ], - [ - 7.418341, - 43.728245 - ], - [ - 7.418135, - 43.728283 - ], - [ - 7.418035, - 43.72831 - ], - [ - 7.417955, - 43.728355 - ], - [ - 7.417933, - 43.728546 - ], - [ - 7.417923, - 43.72878 - ], - [ - 7.417864, - 43.72901 - ], - [ - 7.41777, - 43.729256 - ], - [ - 7.417654, - 43.729446 - ], - [ - 7.417483, - 43.729645 - ], - [ - 7.417416, - 43.72971 - ], - [ - 7.417233, - 43.72983 - ], - [ - 7.417139, - 43.729893 - ], - [ - 7.417102, - 43.729935 - ], - [ - 7.41707, - 43.72999 - ], - [ - 7.417072, - 43.730053 - ], - [ - 7.417314, - 43.730247 - ], - [ - 7.417579, - 43.730446 - ], - [ - 7.418376, - 43.73103 - ], - [ - 7.41858, - 43.73113 - ], - [ - 7.419038, - 43.73124 - ], - [ - 7.419392, - 43.73131 - ], - [ - 7.419736, - 43.73141 - ], - [ - 7.420988, - 43.73178 - ], - [ - 7.421616, - 43.731987 - ], - [ - 7.421924, - 43.732105 - ], - [ - 7.422169, - 43.73223 - ], - [ - 7.422276, - 43.732334 - ], - [ - 7.422316, - 43.73246 - ], - [ - 7.422297, - 43.732597 - ], - [ - 7.42222, - 43.732723 - ], - [ - 7.422096, - 43.73284 - ], - [ - 7.422002, - 43.732975 - ], - [ - 7.421962, - 43.733047 - ], - [ - 7.421949, - 43.733135 - ], - [ - 7.421696, - 43.733627 - ], - [ - 7.421522, - 43.734016 - ], - [ - 7.421377, - 43.73445 - ], - [ - 7.421289, - 43.73488 - ], - [ - 7.421232, - 43.735355 - ], - [ - 7.421211, - 43.73588 - ], - [ - 7.421291, - 43.73624 - ], - [ - 7.421447, - 43.736584 - ], - [ - 7.421576, - 43.73678 - ], - [ - 7.421629, - 43.73683 - ], - [ - 7.421755, - 43.736908 - ], - [ - 7.422032, - 43.737015 - ], - [ - 7.42237, - 43.737045 - ], - [ - 7.422756, - 43.73709 - ], - [ - 7.423142, - 43.737164 - ], - [ - 7.423915, - 43.737328 - ], - [ - 7.424164, - 43.737377 - ], - [ - 7.424414, - 43.737408 - ], - [ - 7.424918, - 43.73745 - ], - [ - 7.425942, - 43.73778 - ], - [ - 7.426543, - 43.737877 - ], - [ - 7.426795, - 43.737984 - ], - [ - 7.426946, - 43.738132 - ], - [ - 7.426972, - 43.738243 - ], - [ - 7.426924, - 43.738384 - ], - [ - 7.426747, - 43.738514 - ], - [ - 7.426495, - 43.738655 - ], - [ - 7.426119, - 43.738857 - ], - [ - 7.425932, - 43.738956 - ], - [ - 7.42583, - 43.739017 - ], - [ - 7.425776, - 43.739098 - ], - [ - 7.425771, - 43.739197 - ], - [ - 7.425814, - 43.73932 - ], - [ - 7.425771, - 43.73942 - ], - [ - 7.425685, - 43.739525 - ], - [ - 7.425154, - 43.73971 - ], - [ - 7.425562, - 43.740387 - ], - [ - 7.425765, - 43.7407 - ], - [ - 7.425883, - 43.740875 - ], - [ - 7.426023, - 43.741028 - ], - [ - 7.426329, - 43.741234 - ], - [ - 7.426538, - 43.74138 - ], - [ - 7.426736, - 43.741535 - ], - [ - 7.426822, - 43.74154 - ], - [ - 7.426908, - 43.74159 - ], - [ - 7.426895, - 43.741665 - ], - [ - 7.427034, - 43.74174 - ], - [ - 7.427466, - 43.742035 - ], - [ - 7.427699, - 43.742188 - ], - [ - 7.427799, - 43.742268 - ], - [ - 7.427908, - 43.74236 - ], - [ - 7.428187, - 43.7429 - ], - [ - 7.428544, - 43.743557 - ], - [ - 7.42892, - 43.744236 - ], - [ - 7.429225, - 43.74491 - ], - [ - 7.429504, - 43.74551 - ], - [ - 7.429751, - 43.74569 - ], - [ - 7.429939, - 43.745804 - ], - [ - 7.430121, - 43.74594 - ], - [ - 7.430202, - 43.746082 - ], - [ - 7.430239, - 43.746162 - ], - [ - 7.43062, - 43.746452 - ], - [ - 7.431017, - 43.74667 - ], - [ - 7.431371, - 43.746925 - ], - [ - 7.431682, - 43.747177 - ], - [ - 7.431763, - 43.7473 - ], - [ - 7.431763, - 43.747467 - ], - [ - 7.431731, - 43.747578 - ], - [ - 7.431822, - 43.747734 - ], - [ - 7.432031, - 43.747807 - ], - [ - 7.432246, - 43.747856 - ], - [ - 7.432525, - 43.747852 - ], - [ - 7.432809, - 43.747955 - ], - [ - 7.433152, - 43.748158 - ], - [ - 7.43341, - 43.748363 - ], - [ - 7.43401, - 43.748726 - ], - [ - 7.434322, - 43.748905 - ], - [ - 7.434671, - 43.749058 - ], - [ - 7.435019, - 43.74907 - ], - [ - 7.435373, - 43.749073 - ], - [ - 7.435818, - 43.74906 - ], - [ - 7.436028, - 43.749104 - ], - [ - 7.43621, - 43.749184 - ], - [ - 7.436376, - 43.749287 - ], - [ - 7.43651, - 43.749416 - ], - [ - 7.43709, - 43.749954 - ], - [ - 7.437347, - 43.750195 - ], - [ - 7.437589, - 43.75045 - ], - [ - 7.437841, - 43.75071 - ], - [ - 7.43812, - 43.751137 - ], - [ - 7.438431, - 43.751614 - ], - [ - 7.438881, - 43.751606 - ], - [ - 7.439327, - 43.75162 - ], - [ - 7.439826, - 43.751553 - ], - [ - 7.44004, - 43.751488 - ], - [ - 7.440137, - 43.751392 - ], - [ - 7.440062, - 43.751163 - ], - [ - 7.439842, - 43.75103 - ], - [ - 7.43952, - 43.750824 - ], - [ - 7.439203, - 43.750637 - ], - [ - 7.439219, - 43.750423 - ], - [ - 7.439364, - 43.750286 - ], - [ - 7.439616, - 43.75027 - ], - [ - 7.440062, - 43.750523 - ], - [ - 7.440443, - 43.750797 - ], - [ - 7.440115, - 43.750893 - ], - [ - 7.439836, - 43.75065 - ], - [ - 7.439289, - 43.75024 - ], - [ - 7.438694, - 43.749947 - ], - [ - 7.43732, - 43.749363 - ], - [ - 7.435936, - 43.74877 - ], - [ - 7.435287, - 43.74844 - ], - [ - 7.433453, - 43.747387 - ], - [ - 7.432712, - 43.74694 - ], - [ - 7.431956, - 43.746502 - ], - [ - 7.431586, - 43.74628 - ], - [ - 7.431216, - 43.746056 - ], - [ - 7.430974, - 43.745815 - ], - [ - 7.430792, - 43.7456 - ], - [ - 7.430679, - 43.745537 - ], - [ - 7.430668, - 43.74546 - ], - [ - 7.430674, - 43.745377 - ], - [ - 7.43069, - 43.74523 - ], - [ - 7.43062, - 43.745117 - ], - [ - 7.43041, - 43.744785 - ], - [ - 7.430306, - 43.744625 - ], - [ - 7.430225, - 43.74446 - ], - [ - 7.430192, - 43.744396 - ], - [ - 7.430144, - 43.74434 - ], - [ - 7.429972, - 43.744175 - ], - [ - 7.429881, - 43.743988 - ], - [ - 7.429728, - 43.743587 - ], - [ - 7.429689, - 43.743484 - ], - [ - 7.429671, - 43.743435 - ], - [ - 7.429656, - 43.743385 - ], - [ - 7.429612, - 43.743202 - ], - [ - 7.429592, - 43.743034 - ], - [ - 7.429584, - 43.742874 - ], - [ - 7.429596, - 43.742657 - ], - [ - 7.429612, - 43.742485 - ], - [ - 7.429639, - 43.74218 - ], - [ - 7.429783, - 43.741016 - ], - [ - 7.429848, - 43.740414 - ], - [ - 7.429872, - 43.740257 - ], - [ - 7.429858, - 43.740124 - ], - [ - 7.429791, - 43.739834 - ], - [ - 7.42971, - 43.739548 - ], - [ - 7.429573, - 43.73925 - ], - [ - 7.429385, - 43.73896 - ], - [ - 7.42915, - 43.738686 - ], - [ - 7.429027, - 43.738552 - ], - [ - 7.428953, - 43.738483 - ], - [ - 7.428917, - 43.73845 - ], - [ - 7.428875, - 43.738422 - ], - [ - 7.428521, - 43.738182 - ], - [ - 7.428061, - 43.73796 - ], - [ - 7.427626, - 43.737766 - ], - [ - 7.427324, - 43.737656 - ], - [ - 7.427005, - 43.737576 - ], - [ - 7.426667, - 43.737507 - ], - [ - 7.426342, - 43.737473 - ], - [ - 7.42602, - 43.737442 - ], - [ - 7.42571, - 43.737434 - ], - [ - 7.425395, - 43.737434 - ], - [ - 7.42384, - 43.73755 - ], - [ - 7.423571, - 43.73761 - ], - [ - 7.423247, - 43.737644 - ], - [ - 7.42289, - 43.737667 - ], - [ - 7.422737, - 43.737656 - ], - [ - 7.422659, - 43.737644 - ], - [ - 7.42259, - 43.737625 - ], - [ - 7.422582, - 43.7376 - ], - [ - 7.422584, - 43.737576 - ], - [ - 7.422598, - 43.73753 - ], - [ - 7.422646, - 43.7375 - ], - [ - 7.422814, - 43.737434 - ], - [ - 7.423523, - 43.737408 - ], - [ - 7.423972, - 43.737442 - ], - [ - 7.424034, - 43.73743 - ], - [ - 7.424064, - 43.73741 - ], - [ - 7.424055, - 43.737385 - ], - [ - 7.424038, - 43.737366 - ], - [ - 7.423644, - 43.73728 - ], - [ - 7.423225, - 43.73719 - ], - [ - 7.422795, - 43.73711 - ], - [ - 7.422332, - 43.737053 - ], - [ - 7.422099, - 43.73703 - ], - [ - 7.421981, - 43.73701 - ], - [ - 7.421785, - 43.737007 - ], - [ - 7.421583, - 43.736977 - ], - [ - 7.421478, - 43.736946 - ], - [ - 7.421381, - 43.7369 - ], - [ - 7.421202, - 43.7368 - ], - [ - 7.421065, - 43.736702 - ], - [ - 7.421003, - 43.73664 - ], - [ - 7.420967, - 43.736614 - ], - [ - 7.420598, - 43.736317 - ], - [ - 7.420181, - 43.73597 - ], - [ - 7.420098, - 43.7359 - ], - [ - 7.420028, - 43.735836 - ], - [ - 7.419874, - 43.735687 - ], - [ - 7.419729, - 43.73555 - ], - [ - 7.419451, - 43.735283 - ], - [ - 7.419311, - 43.735146 - ], - [ - 7.419177, - 43.735004 - ], - [ - 7.418924, - 43.73472 - ], - [ - 7.418668, - 43.734436 - ], - [ - 7.418515, - 43.73424 - ], - [ - 7.41849, - 43.734142 - ], - [ - 7.41851, - 43.73403 - ], - [ - 7.418537, - 43.733932 - ], - [ - 7.418588, - 43.733727 - ], - [ - 7.418687, - 43.73334 - ], - [ - 7.418813, - 43.732906 - ], - [ - 7.418915, - 43.73265 - ], - [ - 7.418904, - 43.732555 - ], - [ - 7.418859, - 43.732525 - ], - [ - 7.418795, - 43.73252 - ], - [ - 7.418462, - 43.732613 - ], - [ - 7.418294, - 43.73266 - ], - [ - 7.418215, - 43.73269 - ], - [ - 7.41814, - 43.73272 - ], - [ - 7.417854, - 43.732807 - ], - [ - 7.41764, - 43.732853 - ], - [ - 7.417487, - 43.732895 - ], - [ - 7.417425, - 43.732925 - ], - [ - 7.417377, - 43.732986 - ], - [ - 7.417373, - 43.733036 - ], - [ - 7.4174, - 43.7331 - ], - [ - 7.417593, - 43.733456 - ], - [ - 7.417621, - 43.733547 - ], - [ - 7.417609, - 43.733665 - ], - [ - 7.417566, - 43.733784 - ], - [ - 7.417477, - 43.733948 - ], - [ - 7.417422, - 43.73416 - ], - [ - 7.417394, - 43.7342 - ], - [ - 7.417331, - 43.734238 - ], - [ - 7.417137, - 43.73429 - ], - [ - 7.417091, - 43.734406 - ], - [ - 7.417072, - 43.73461 - ], - [ - 7.41707, - 43.734833 - ], - [ - 7.417106, - 43.735027 - ], - [ - 7.417174, - 43.735165 - ], - [ - 7.417213, - 43.735237 - ], - [ - 7.417265, - 43.735313 - ], - [ - 7.417349, - 43.735413 - ], - [ - 7.417468, - 43.735542 - ], - [ - 7.417709, - 43.735783 - ], - [ - 7.417825, - 43.735874 - ], - [ - 7.417894, - 43.735916 - ], - [ - 7.417971, - 43.735947 - ], - [ - 7.418423, - 43.736076 - ], - [ - 7.418604, - 43.736122 - ], - [ - 7.418683, - 43.736156 - ], - [ - 7.418759, - 43.7362 - ], - [ - 7.419186, - 43.736515 - ], - [ - 7.419429, - 43.736725 - ], - [ - 7.419634, - 43.736874 - ], - [ - 7.41982, - 43.737015 - ], - [ - 7.419993, - 43.737167 - ], - [ - 7.420052, - 43.73722 - ], - [ - 7.420099, - 43.737286 - ], - [ - 7.42013, - 43.737335 - ], - [ - 7.420121, - 43.737442 - ], - [ - 7.420076, - 43.73754 - ], - [ - 7.420024, - 43.73758 - ], - [ - 7.419942, - 43.737614 - ], - [ - 7.419759, - 43.737682 - ], - [ - 7.419337, - 43.737827 - ], - [ - 7.419228, - 43.7379 - ], - [ - 7.419127, - 43.737995 - ], - [ - 7.419092, - 43.738087 - ], - [ - 7.419126, - 43.738163 - ], - [ - 7.419173, - 43.738186 - ], - [ - 7.419261, - 43.73819 - ], - [ - 7.419348, - 43.738174 - ], - [ - 7.419405, - 43.73811 - ], - [ - 7.419454, - 43.737915 - ], - [ - 7.419511, - 43.737743 - ], - [ - 7.419544, - 43.737705 - ], - [ - 7.419611, - 43.737644 - ], - [ - 7.419867, - 43.73755 - ], - [ - 7.419964, - 43.737514 - ], - [ - 7.420028, - 43.73747 - ], - [ - 7.420036, - 43.737423 - ], - [ - 7.420034, - 43.73738 - ], - [ - 7.420013, - 43.737335 - ], - [ - 7.41998, - 43.737293 - ], - [ - 7.419899, - 43.73722 - ], - [ - 7.419673, - 43.73708 - ], - [ - 7.419535, - 43.73704 - ], - [ - 7.419489, - 43.737026 - ], - [ - 7.419434, - 43.73703 - ], - [ - 7.419327, - 43.737045 - ], - [ - 7.41915, - 43.73712 - ], - [ - 7.419123, - 43.737137 - ], - [ - 7.41913, - 43.73716 - ], - [ - 7.41912, - 43.73719 - ], - [ - 7.419033, - 43.73725 - ], - [ - 7.41893, - 43.73732 - ], - [ - 7.418659, - 43.73749 - ], - [ - 7.418499, - 43.73756 - ], - [ - 7.418411, - 43.737583 - ], - [ - 7.41831, - 43.7376 - ], - [ - 7.418235, - 43.73759 - ], - [ - 7.418163, - 43.73757 - ], - [ - 7.418037, - 43.737507 - ], - [ - 7.417955, - 43.73744 - ], - [ - 7.417869, - 43.73738 - ], - [ - 7.417664, - 43.737312 - ], - [ - 7.417506, - 43.737274 - ], - [ - 7.417401, - 43.73726 - ], - [ - 7.417366, - 43.737236 - ], - [ - 7.417346, - 43.737206 - ], - [ - 7.417345, - 43.73717 - ], - [ - 7.417311, - 43.737103 - ], - [ - 7.417304, - 43.737064 - ], - [ - 7.417295, - 43.737045 - ], - [ - 7.41729, - 43.737022 - ], - [ - 7.417276, - 43.736973 - ], - [ - 7.417247, - 43.736935 - ], - [ - 7.417186, - 43.736893 - ], - [ - 7.416992, - 43.73685 - ], - [ - 7.416886, - 43.73682 - ], - [ - 7.416842, - 43.736797 - ], - [ - 7.41681, - 43.73677 - ], - [ - 7.416771, - 43.73672 - ], - [ - 7.416749, - 43.736668 - ], - [ - 7.416704, - 43.736313 - ], - [ - 7.416675, - 43.736084 - ], - [ - 7.416665, - 43.735966 - ], - [ - 7.416665, - 43.735855 - ], - [ - 7.416615, - 43.73581 - ], - [ - 7.416623, - 43.73574 - ], - [ - 7.416591, - 43.73564 - ], - [ - 7.416561, - 43.735546 - ], - [ - 7.416504, - 43.735416 - ], - [ - 7.41637, - 43.73514 - ], - [ - 7.41632, - 43.734993 - ], - [ - 7.416289, - 43.73486 - ], - [ - 7.416272, - 43.73474 - ], - [ - 7.416262, - 43.73462 - ], - [ - 7.416245, - 43.734394 - ], - [ - 7.416225, - 43.734295 - ], - [ - 7.416201, - 43.734203 - ], - [ - 7.416174, - 43.734142 - ], - [ - 7.416138, - 43.73409 - ], - [ - 7.416054, - 43.733955 - ], - [ - 7.41599, - 43.733894 - ], - [ - 7.415801, - 43.733715 - ], - [ - 7.415393, - 43.733383 - ], - [ - 7.415356, - 43.733337 - ], - [ - 7.415299, - 43.73332 - ], - [ - 7.415204, - 43.733276 - ], - [ - 7.41514, - 43.73322 - ], - [ - 7.415098, - 43.733154 - ], - [ - 7.415077, - 43.733097 - ], - [ - 7.414878, - 43.732937 - ], - [ - 7.414619, - 43.73273 - ], - [ - 7.414414, - 43.73253 - ], - [ - 7.414343, - 43.73237 - ], - [ - 7.4143, - 43.73213 - ], - [ - 7.414363, - 43.731937 - ], - [ - 7.414526, - 43.731796 - ], - [ - 7.414589, - 43.73177 - ], - [ - 7.414902, - 43.73153 - ], - [ - 7.415022, - 43.73144 - ], - [ - 7.415058, - 43.73137 - ], - [ - 7.415065, - 43.731266 - ], - [ - 7.415031, - 43.731213 - ], - [ - 7.414972, - 43.73117 - ], - [ - 7.414802, - 43.731125 - ], - [ - 7.414583, - 43.7311 - ], - [ - 7.414045, - 43.731014 - ], - [ - 7.413182, - 43.730873 - ], - [ - 7.413132, - 43.730865 - ], - [ - 7.413081, - 43.730846 - ], - [ - 7.412977, - 43.73082 - ], - [ - 7.412864, - 43.73075 - ], - [ - 7.412629, - 43.730595 - ], - [ - 7.41271, - 43.730377 - ], - [ - 7.412778, - 43.72999 - ], - [ - 7.412793, - 43.729607 - ], - [ - 7.412826, - 43.72954 - ], - [ - 7.412839, - 43.72948 - ], - [ - 7.412739, - 43.729347 - ], - [ - 7.412632, - 43.729225 - ], - [ - 7.412401, - 43.728916 - ], - [ - 7.412397, - 43.72874 - ], - [ - 7.412365, - 43.728737 - ], - [ - 7.412332, - 43.72873 - ], - [ - 7.412307, - 43.72871 - ], - [ - 7.412295, - 43.728676 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640001", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "f32f0c05-4491-4a93-be0c-19420d4407f0", - "name": "4g-macro-cell-3", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "3030303" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.416715, - 43.733616 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "0ca4bfcc-7346-4f57-9c85-bb92642ec37e", - "name": "10.1.0.2", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.4187, - 43.732403 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010002", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "1835f9ea-1f72-47e8-98b7-f0a5e4ff44e4", - "name": "wifi-ap-1", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C01010101" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.419891, - 43.727787 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "fb7ff207-f67d-4a1d-a353-038e96085d06", - "name": "wifi-ap-2", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C02020202" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.42179, - 43.727474 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "37be6821-a5f3-4af9-af0a-ceff4c0f66be", - "name": "5g-small-cell-1", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "101010101" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.415385, - 43.730846 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "ab60918a-acd8-4f4e-9693-d2fbffae9b72", - "name": "5g-small-cell-2", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "202020202" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.416962, - 43.731453 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "de2d952d-11b1-4294-8a67-6d994f1a5f37", - "name": "5g-small-cell-3", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "303030303" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.418507, - 43.731865 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - }, - { - "id": "4c3c9568-6408-4900-9d97-4556f6d805db", - "name": "zone02", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "darkred" - }, - "networkLocations": [ - { - "id": "zone02-DEFAULT", - "name": "zone02-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "78327873-c828-47da-8a5b-3c74d251dbbc", - "name": "4g-macro-cell-4", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "4040404" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.423547, - 43.731724 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "67a40b8b-5777-4e96-a896-8622af4a741f", - "name": "10.100.0.3", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427423, - 43.731323 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.427423, - 43.731323 - ], - [ - 7.427463, - 43.73143 - ], - [ - 7.427455, - 43.731537 - ], - [ - 7.427423, - 43.731598 - ], - [ - 7.427439, - 43.731667 - ], - [ - 7.427479, - 43.731766 - ], - [ - 7.427951, - 43.73259 - ], - [ - 7.427989, - 43.732677 - ], - [ - 7.427962, - 43.73281 - ], - [ - 7.427852, - 43.732925 - ], - [ - 7.427655, - 43.732994 - ], - [ - 7.427556, - 43.733 - ], - [ - 7.425453, - 43.73256 - ], - [ - 7.42436, - 43.7323 - ], - [ - 7.424033, - 43.732254 - ], - [ - 7.423397, - 43.73226 - ], - [ - 7.422675, - 43.73218 - ], - [ - 7.422588, - 43.7322 - ], - [ - 7.42249, - 43.732243 - ], - [ - 7.422382, - 43.732323 - ], - [ - 7.422415, - 43.73246 - ], - [ - 7.422351, - 43.73269 - ], - [ - 7.422257, - 43.73279 - ], - [ - 7.4221, - 43.73293 - ], - [ - 7.421912, - 43.733208 - ], - [ - 7.421604, - 43.733833 - ], - [ - 7.421522, - 43.734016 - ], - [ - 7.421377, - 43.73445 - ], - [ - 7.421289, - 43.73488 - ], - [ - 7.421232, - 43.735355 - ], - [ - 7.421211, - 43.73588 - ], - [ - 7.421291, - 43.73624 - ], - [ - 7.421447, - 43.736584 - ], - [ - 7.421576, - 43.73678 - ], - [ - 7.4216, - 43.7368 - ], - [ - 7.421723, - 43.73684 - ], - [ - 7.424054, - 43.73709 - ], - [ - 7.424611, - 43.737144 - ], - [ - 7.424942, - 43.73719 - ], - [ - 7.425462, - 43.737217 - ], - [ - 7.426063, - 43.737286 - ], - [ - 7.426653, - 43.737366 - ], - [ - 7.427215, - 43.73749 - ], - [ - 7.427498, - 43.737583 - ], - [ - 7.427762, - 43.73765 - ], - [ - 7.42799, - 43.737732 - ], - [ - 7.428867, - 43.738125 - ], - [ - 7.429136, - 43.73831 - ], - [ - 7.429626, - 43.738724 - ], - [ - 7.429853, - 43.73897 - ], - [ - 7.430023, - 43.739243 - ], - [ - 7.430125, - 43.7395 - ], - [ - 7.430301, - 43.740196 - ], - [ - 7.430422, - 43.741196 - ], - [ - 7.430411, - 43.741318 - ], - [ - 7.430493, - 43.741344 - ], - [ - 7.430568, - 43.741417 - ], - [ - 7.430773, - 43.74177 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640003", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "ca3b5b42-0e99-4553-9d19-4696cd8fe469", - "name": "4g-macro-cell-5", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "5050505" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.429257, - 43.73411 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "c18e3f93-79c4-427d-af91-81996adab3e7", - "name": "10.1.0.3", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.426565, - 43.73298 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010003", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "1d2683f4-086e-47d6-abbb-07fa481a25fb", - "name": "10.10.0.1", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.43166, - 43.736156 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.43166, - 43.736156 - ], - [ - 7.431723, - 43.736115 - ], - [ - 7.431162, - 43.735607 - ], - [ - 7.430685, - 43.73518 - ], - [ - 7.43043, - 43.73532 - ], - [ - 7.429067, - 43.734108 - ], - [ - 7.428863, - 43.734184 - ], - [ - 7.428388, - 43.734116 - ], - [ - 7.427817, - 43.73446 - ], - [ - 7.427689, - 43.734917 - ], - [ - 7.427581, - 43.73499 - ], - [ - 7.427308, - 43.734955 - ], - [ - 7.42723, - 43.734844 - ], - [ - 7.427281, - 43.734646 - ], - [ - 7.427411, - 43.734657 - ], - [ - 7.427709, - 43.73362 - ], - [ - 7.424581, - 43.732964 - ], - [ - 7.424312, - 43.73363 - ], - [ - 7.424512, - 43.73368 - ], - [ - 7.424534, - 43.733707 - ], - [ - 7.424534, - 43.73373 - ], - [ - 7.424477, - 43.733753 - ], - [ - 7.42423, - 43.73371 - ], - [ - 7.424029, - 43.733665 - ], - [ - 7.423999, - 43.733624 - ], - [ - 7.424058, - 43.73358 - ], - [ - 7.424246, - 43.733624 - ], - [ - 7.424522, - 43.732952 - ], - [ - 7.423748, - 43.73279 - ], - [ - 7.423545, - 43.733307 - ], - [ - 7.423508, - 43.7333 - ], - [ - 7.423535, - 43.73324 - ], - [ - 7.423668, - 43.732857 - ], - [ - 7.423455, - 43.73282 - ], - [ - 7.423356, - 43.73307 - ], - [ - 7.423199, - 43.733135 - ], - [ - 7.423043, - 43.73321 - ], - [ - 7.422855, - 43.73337 - ], - [ - 7.422744, - 43.733517 - ], - [ - 7.422694, - 43.733624 - ], - [ - 7.422659, - 43.73374 - ], - [ - 7.422578, - 43.734074 - ], - [ - 7.422604, - 43.734188 - ], - [ - 7.422541, - 43.734425 - ], - [ - 7.422509, - 43.73456 - ], - [ - 7.422697, - 43.73458 - ], - [ - 7.422847, - 43.734077 - ], - [ - 7.422881, - 43.73408 - ], - [ - 7.422756, - 43.73459 - ], - [ - 7.423254, - 43.73466 - ], - [ - 7.423413, - 43.73412 - ], - [ - 7.423512, - 43.73413 - ], - [ - 7.423351, - 43.734753 - ], - [ - 7.42326, - 43.73506 - ], - [ - 7.423223, - 43.73522 - ], - [ - 7.423173, - 43.735416 - ], - [ - 7.423072, - 43.7354 - ], - [ - 7.4232, - 43.734898 - ], - [ - 7.423191, - 43.734848 - ], - [ - 7.422693, - 43.734776 - ], - [ - 7.42256, - 43.7353 - ], - [ - 7.422513, - 43.73529 - ], - [ - 7.422655, - 43.734776 - ], - [ - 7.422423, - 43.734737 - ], - [ - 7.422299, - 43.735203 - ], - [ - 7.422233, - 43.735435 - ], - [ - 7.42215, - 43.735508 - ], - [ - 7.422032, - 43.735546 - ], - [ - 7.421888, - 43.735535 - ], - [ - 7.421866, - 43.735683 - ], - [ - 7.421872, - 43.735928 - ], - [ - 7.421975, - 43.736275 - ], - [ - 7.422107, - 43.73651 - ], - [ - 7.422269, - 43.73673 - ], - [ - 7.42493, - 43.737007 - ], - [ - 7.425109, - 43.73692 - ], - [ - 7.425631, - 43.736973 - ], - [ - 7.425674, - 43.736706 - ], - [ - 7.425721, - 43.736477 - ], - [ - 7.425736, - 43.736366 - ], - [ - 7.425787, - 43.736378 - ], - [ - 7.425655, - 43.737087 - ], - [ - 7.426748, - 43.73719 - ], - [ - 7.426931, - 43.736523 - ], - [ - 7.427054, - 43.736073 - ], - [ - 7.427052, - 43.73606 - ], - [ - 7.427027, - 43.736053 - ], - [ - 7.426908, - 43.73604 - ], - [ - 7.426963, - 43.73584 - ], - [ - 7.427089, - 43.73575 - ], - [ - 7.427368, - 43.735783 - ], - [ - 7.427427, - 43.735886 - ], - [ - 7.427096, - 43.737133 - ], - [ - 7.429107, - 43.73754 - ], - [ - 7.429795, - 43.736343 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0001", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "ec32caa6-ddc6-4f5e-a815-654782b31abb", - "name": "10.100.0.2", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427394, - 43.73243 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.427394, - 43.73243 - ], - [ - 7.427393, - 43.732353 - ], - [ - 7.427373, - 43.732296 - ], - [ - 7.427259, - 43.73213 - ], - [ - 7.427153, - 43.73204 - ], - [ - 7.42705, - 43.73197 - ], - [ - 7.426688, - 43.73188 - ], - [ - 7.426318, - 43.731792 - ], - [ - 7.425634, - 43.731598 - ], - [ - 7.425535, - 43.731598 - ], - [ - 7.425433, - 43.73161 - ], - [ - 7.425336, - 43.73161 - ], - [ - 7.425151, - 43.731556 - ], - [ - 7.424628, - 43.73141 - ], - [ - 7.424135, - 43.731285 - ], - [ - 7.423933, - 43.73179 - ], - [ - 7.423861, - 43.731827 - ], - [ - 7.423566, - 43.73177 - ], - [ - 7.423389, - 43.731663 - ], - [ - 7.423225, - 43.73154 - ], - [ - 7.422997, - 43.731396 - ], - [ - 7.422858, - 43.731335 - ], - [ - 7.422794, - 43.731304 - ], - [ - 7.422718, - 43.731285 - ], - [ - 7.422579, - 43.731262 - ], - [ - 7.422418, - 43.731255 - ], - [ - 7.422195, - 43.731262 - ], - [ - 7.421973, - 43.731285 - ], - [ - 7.421833, - 43.731297 - ], - [ - 7.421705, - 43.73133 - ], - [ - 7.421624, - 43.731327 - ], - [ - 7.421565, - 43.731323 - ], - [ - 7.421501, - 43.731297 - ], - [ - 7.421483, - 43.731228 - ], - [ - 7.421468, - 43.73116 - ], - [ - 7.421443, - 43.73103 - ], - [ - 7.421409, - 43.73089 - ], - [ - 7.421372, - 43.73075 - ], - [ - 7.421435, - 43.730694 - ], - [ - 7.421506, - 43.730682 - ], - [ - 7.421731, - 43.73061 - ], - [ - 7.421821, - 43.73055 - ], - [ - 7.421992, - 43.730377 - ], - [ - 7.42217, - 43.730206 - ], - [ - 7.422477, - 43.729942 - ], - [ - 7.422555, - 43.729897 - ], - [ - 7.422657, - 43.729866 - ], - [ - 7.422801, - 43.729847 - ], - [ - 7.422969, - 43.729862 - ], - [ - 7.423137, - 43.72991 - ], - [ - 7.423295, - 43.72997 - ], - [ - 7.423507, - 43.73005 - ], - [ - 7.423712, - 43.730137 - ], - [ - 7.42411, - 43.73032 - ], - [ - 7.424566, - 43.730526 - ], - [ - 7.424802, - 43.730633 - ], - [ - 7.42501, - 43.730743 - ], - [ - 7.425791, - 43.731174 - ], - [ - 7.426482, - 43.73159 - ], - [ - 7.426963, - 43.731895 - ], - [ - 7.427077, - 43.731968 - ], - [ - 7.427186, - 43.732048 - ], - [ - 7.42729, - 43.73213 - ], - [ - 7.427362, - 43.732227 - ], - [ - 7.427418, - 43.732353 - ], - [ - 7.427415, - 43.732384 - ], - [ - 7.427411, - 43.732407 - ], - [ - 7.427394, - 43.73243 - ], - [ - 7.427383, - 43.732483 - ], - [ - 7.427288, - 43.732548 - ], - [ - 7.427203, - 43.73256 - ], - [ - 7.427085, - 43.732555 - ], - [ - 7.426884, - 43.732517 - ], - [ - 7.425842, - 43.73234 - ], - [ - 7.424798, - 43.732162 - ], - [ - 7.424667, - 43.73214 - ], - [ - 7.42444, - 43.7321 - ], - [ - 7.424072, - 43.732044 - ], - [ - 7.423361, - 43.731934 - ], - [ - 7.423054, - 43.7319 - ], - [ - 7.42274, - 43.731876 - ], - [ - 7.422414, - 43.73187 - ], - [ - 7.422089, - 43.731876 - ], - [ - 7.421887, - 43.731884 - ], - [ - 7.421699, - 43.731895 - ], - [ - 7.421429, - 43.731926 - ], - [ - 7.421102, - 43.73198 - ], - [ - 7.420582, - 43.732067 - ], - [ - 7.420058, - 43.732174 - ], - [ - 7.419941, - 43.7322 - ], - [ - 7.419804, - 43.732254 - ], - [ - 7.419237, - 43.732403 - ], - [ - 7.419181, - 43.732418 - ], - [ - 7.419127, - 43.73245 - ], - [ - 7.419071, - 43.73248 - ], - [ - 7.419063, - 43.732513 - ], - [ - 7.419017, - 43.732548 - ], - [ - 7.418957, - 43.73256 - ], - [ - 7.418904, - 43.732555 - ], - [ - 7.418859, - 43.732525 - ], - [ - 7.418795, - 43.73252 - ], - [ - 7.418733, - 43.732536 - ], - [ - 7.418541, - 43.73259 - ], - [ - 7.418358, - 43.732643 - ], - [ - 7.418179, - 43.732704 - ], - [ - 7.417854, - 43.732807 - ], - [ - 7.417669, - 43.732845 - ], - [ - 7.417487, - 43.732895 - ], - [ - 7.417425, - 43.732925 - ], - [ - 7.417405, - 43.73295 - ], - [ - 7.417605, - 43.73323 - ], - [ - 7.417778, - 43.733547 - ], - [ - 7.417915, - 43.733955 - ], - [ - 7.41809, - 43.734455 - ], - [ - 7.418133, - 43.734684 - ], - [ - 7.418188, - 43.7349 - ], - [ - 7.418289, - 43.735046 - ], - [ - 7.4184, - 43.735184 - ], - [ - 7.418585, - 43.735382 - ], - [ - 7.418671, - 43.735455 - ], - [ - 7.418768, - 43.73552 - ], - [ - 7.419179, - 43.735825 - ], - [ - 7.419366, - 43.73598 - ], - [ - 7.419533, - 43.73615 - ], - [ - 7.419881, - 43.736473 - ], - [ - 7.420241, - 43.736786 - ], - [ - 7.420468, - 43.73692 - ], - [ - 7.420685, - 43.73703 - ], - [ - 7.420944, - 43.73716 - ], - [ - 7.421228, - 43.737274 - ], - [ - 7.421522, - 43.737373 - ], - [ - 7.421826, - 43.73747 - ], - [ - 7.422055, - 43.73752 - ], - [ - 7.422283, - 43.73756 - ], - [ - 7.422403, - 43.73758 - ], - [ - 7.422472, - 43.737526 - ], - [ - 7.422561, - 43.737473 - ], - [ - 7.422688, - 43.737442 - ], - [ - 7.422814, - 43.737434 - ], - [ - 7.423132, - 43.737423 - ], - [ - 7.423523, - 43.737408 - ], - [ - 7.423972, - 43.737442 - ], - [ - 7.424034, - 43.73743 - ], - [ - 7.424064, - 43.73741 - ], - [ - 7.424055, - 43.737385 - ], - [ - 7.424028, - 43.73735 - ], - [ - 7.423706, - 43.737286 - ], - [ - 7.423228, - 43.737183 - ], - [ - 7.422826, - 43.737103 - ], - [ - 7.42263, - 43.737076 - ], - [ - 7.422426, - 43.737053 - ], - [ - 7.42209, - 43.73702 - ], - [ - 7.421949, - 43.73701 - ], - [ - 7.421754, - 43.737003 - ], - [ - 7.421639, - 43.736984 - ], - [ - 7.421527, - 43.73696 - ], - [ - 7.421421, - 43.73692 - ], - [ - 7.421323, - 43.73687 - ], - [ - 7.421228, - 43.736813 - ], - [ - 7.421133, - 43.73675 - ], - [ - 7.421065, - 43.736702 - ], - [ - 7.421003, - 43.73664 - ], - [ - 7.420847, - 43.73652 - ], - [ - 7.420513, - 43.736244 - ], - [ - 7.420098, - 43.7359 - ], - [ - 7.419858, - 43.735672 - ], - [ - 7.41939, - 43.73522 - ], - [ - 7.41916, - 43.734985 - ], - [ - 7.418728, - 43.734505 - ], - [ - 7.418581, - 43.734325 - ], - [ - 7.418515, - 43.73424 - ], - [ - 7.41849, - 43.734142 - ], - [ - 7.418601, - 43.733677 - ], - [ - 7.418681, - 43.73336 - ], - [ - 7.418772, - 43.733047 - ], - [ - 7.418813, - 43.732906 - ], - [ - 7.418878, - 43.732742 - ], - [ - 7.418915, - 43.73265 - ], - [ - 7.41891, - 43.732605 - ], - [ - 7.418904, - 43.732555 - ], - [ - 7.418859, - 43.732525 - ], - [ - 7.418849, - 43.73247 - ], - [ - 7.418872, - 43.732426 - ], - [ - 7.418902, - 43.73241 - ], - [ - 7.418951, - 43.732403 - ], - [ - 7.419008, - 43.732403 - ], - [ - 7.419118, - 43.73241 - ], - [ - 7.419225, - 43.73239 - ], - [ - 7.4198, - 43.73224 - ], - [ - 7.419934, - 43.732185 - ], - [ - 7.420066, - 43.73216 - ], - [ - 7.420587, - 43.73205 - ], - [ - 7.421116, - 43.73196 - ], - [ - 7.421403, - 43.73192 - ], - [ - 7.421688, - 43.731884 - ], - [ - 7.422084, - 43.73186 - ], - [ - 7.422473, - 43.731853 - ], - [ - 7.422827, - 43.73187 - ], - [ - 7.42319, - 43.731903 - ], - [ - 7.423363, - 43.731922 - ], - [ - 7.423535, - 43.73195 - ], - [ - 7.423881, - 43.732002 - ], - [ - 7.425014, - 43.73219 - ], - [ - 7.425588, - 43.73229 - ], - [ - 7.426168, - 43.732388 - ], - [ - 7.426901, - 43.732506 - ], - [ - 7.427068, - 43.732536 - ], - [ - 7.427147, - 43.732548 - ], - [ - 7.427227, - 43.732548 - ], - [ - 7.427279, - 43.732533 - ], - [ - 7.427352, - 43.73249 - ], - [ - 7.427394, - 43.73243 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640002", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "bc76299f-1394-46d7-ab61-1791c883718d", - "name": "wifi-ap-4", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C04040404" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427702, - 43.733475 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "4a0a69b3-7c5a-475e-a34d-a0c9177e972e", - "name": "wifi-ap-3", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C03030303" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.422327, - 43.73342 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "66938f56-4e52-47e2-baa2-501f026e4eb3", - "name": "wifi-ap-5", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C05050505" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421984, - 43.735027 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "b50df04b-c3bd-46c4-a7d4-5de55e74b444", - "name": "5g-small-cell-4", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "404040404" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.419741, - 43.732998 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "bddd61c9-6ddd-4f7e-9082-0d004fced7ab", - "name": "5g-small-cell-5", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "505050505" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421158, - 43.732063 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "8e0dad0d-72c9-4b6d-850b-06b02243b1d3", - "name": "5g-small-cell-6", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "606060606" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421865, - 43.733368 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "318f3796-4091-409e-8767-44ba36600a34", - "name": "5g-small-cell-7", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "707070707" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.420943, - 43.734097 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "7d3688cc-0dda-48b1-a171-b817c176e053", - "name": "5g-small-cell-8", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "808080808" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.425063, - 43.732555 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "91691048-64bb-4d2f-917f-4219a95881c0", - "name": "5g-small-cell-9", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "909090909" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427027, - 43.73308 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - }, - { - "id": "472c9927-800a-46e9-9d62-d08b09080dd5", - "name": "zone03", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "darkorange" - }, - "networkLocations": [ - { - "id": "zone03-DEFAULT", - "name": "zone03-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "e4ce8267-5433-4b2b-aa5a-9a40de76b685", - "name": "4g-macro-cell-6", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "6060606" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421007, - 43.737087 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "c3bc8d8d-170b-45bb-93a9-8ce658571321", - "name": "10.1.0.1", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421802, - 43.736515 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010001", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "663df9f0-57af-43aa-ba2e-e45a4b2f3c28", - "name": "4g-macro-cell-7", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "7070707" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.426414, - 43.739445 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "190a7ff6-7b77-479a-8f23-1f5c7f935914", - "name": "wifi-ap-6", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C06060606" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.425288, - 43.73727 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "99e67725-25b1-4274-8b05-fe253b0e5ee6", - "name": "wifi-ap-7", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C07070707" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.429639, - 43.739006 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "a3067167-cdaf-4264-9e32-abfc0ede0564", - "name": "5g-small-cell-10", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "A0A0A0A0A" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.426736, - 43.73771 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "2c2ba76c-8880-4c5b-a949-a161713910f4", - "name": "5g-small-cell-11", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "B0B0B0B0B" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.42856, - 43.738018 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "d9ca5e58-15fe-4161-840f-f3155db3729b", - "name": "5g-small-cell-12", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "C0C0C0C0C" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.42738, - 43.739075 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - }, - { - "id": "d56c4e67-0e0f-4456-9431-290de7b674c8", - "name": "zone04", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "limegreen" - }, - "networkLocations": [ - { - "id": "zone04-DEFAULT", - "name": "zone04-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "fc4d9ec8-ebb6-4b5d-a281-bb74af729b4a", - "name": "4g-macro-cell-8", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "8080808" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.429504, - 43.74301 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "b73b3ef5-dba0-44af-a648-bbda7191c249", - "name": "4g-macro-cell-9", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "9090909" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.432551, - 43.746544 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "e1d47a4b-0664-4915-81ea-eb0d70af15a7", - "name": "4g-macro-cell-10", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "A0A0A0A" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.437573, - 43.748993 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "4e423f57-daef-4c1c-b30e-45e88e3c9366", - "name": "10.1.0.4", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438248, - 43.74835 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010004", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "824cf1bf-f91d-44c2-906d-e939fa3339cd", - "name": "10.10.0.2", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438755, - 43.748512 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.438755, - 43.748512 - ], - [ - 7.438267, - 43.748566 - ], - [ - 7.437795, - 43.7484 - ], - [ - 7.437684, - 43.748253 - ], - [ - 7.437555, - 43.748203 - ], - [ - 7.437341, - 43.748203 - ], - [ - 7.43673, - 43.747974 - ], - [ - 7.436623, - 43.747704 - ], - [ - 7.436237, - 43.747643 - ], - [ - 7.435969, - 43.74743 - ], - [ - 7.435841, - 43.74717 - ], - [ - 7.435504, - 43.74695 - ], - [ - 7.434829, - 43.74691 - ], - [ - 7.434293, - 43.746685 - ], - [ - 7.433882, - 43.746166 - ], - [ - 7.433431, - 43.746063 - ], - [ - 7.432831, - 43.745686 - ], - [ - 7.432585, - 43.745182 - ], - [ - 7.432767, - 43.744633 - ], - [ - 7.432552, - 43.744244 - ], - [ - 7.432617, - 43.743763 - ], - [ - 7.432305, - 43.743305 - ], - [ - 7.431682, - 43.742676 - ], - [ - 7.431136, - 43.74201 - ], - [ - 7.430524, - 43.741123 - ], - [ - 7.430432, - 43.740696 - ], - [ - 7.430382, - 43.740437 - ], - [ - 7.430384, - 43.74021 - ], - [ - 7.430288, - 43.739372 - ], - [ - 7.429773, - 43.73849 - ], - [ - 7.429976, - 43.738228 - ], - [ - 7.429654, - 43.73791 - ], - [ - 7.429371, - 43.73765 - ], - [ - 7.430027, - 43.736446 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0002", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "097f79f4-bf76-4be0-be28-5acc3bdb0dba", - "name": "10.100.0.4", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438357, - 43.74781 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.438357, - 43.74781 - ], - [ - 7.438296, - 43.747852 - ], - [ - 7.438229, - 43.74791 - ], - [ - 7.43813, - 43.74803 - ], - [ - 7.438074, - 43.748108 - ], - [ - 7.438025, - 43.748264 - ], - [ - 7.437991, - 43.748398 - ], - [ - 7.437937, - 43.748512 - ], - [ - 7.437883, - 43.74859 - ], - [ - 7.437741, - 43.74875 - ], - [ - 7.437593, - 43.748924 - ], - [ - 7.437481, - 43.74905 - ], - [ - 7.437416, - 43.74911 - ], - [ - 7.437419, - 43.749146 - ], - [ - 7.43739, - 43.749184 - ], - [ - 7.437339, - 43.749203 - ], - [ - 7.437285, - 43.74919 - ], - [ - 7.437256, - 43.74917 - ], - [ - 7.43555, - 43.74844 - ], - [ - 7.435097, - 43.748184 - ], - [ - 7.435008, - 43.748077 - ], - [ - 7.434885, - 43.747814 - ], - [ - 7.434788, - 43.747723 - ], - [ - 7.433391, - 43.74693 - ], - [ - 7.433243, - 43.74679 - ], - [ - 7.43301, - 43.746536 - ], - [ - 7.432804, - 43.74642 - ], - [ - 7.432353, - 43.74604 - ], - [ - 7.431985, - 43.74559 - ], - [ - 7.431216, - 43.74428 - ], - [ - 7.430556, - 43.74307 - ], - [ - 7.430336, - 43.741848 - ], - [ - 7.430226, - 43.74178 - ], - [ - 7.430038, - 43.741756 - ], - [ - 7.429864, - 43.741695 - ], - [ - 7.429766, - 43.74158 - ], - [ - 7.429731, - 43.741432 - ], - [ - 7.429797, - 43.741234 - ], - [ - 7.42986, - 43.74115 - ], - [ - 7.42995, - 43.74109 - ], - [ - 7.430094, - 43.74108 - ], - [ - 7.430255, - 43.74114 - ], - [ - 7.430392, - 43.74126 - ], - [ - 7.430475, - 43.7415 - ], - [ - 7.430642, - 43.742832 - ], - [ - 7.430717, - 43.74308 - ], - [ - 7.432086, - 43.745556 - ], - [ - 7.432441, - 43.74601 - ], - [ - 7.433179, - 43.746563 - ], - [ - 7.434716, - 43.747498 - ], - [ - 7.434871, - 43.74766 - ], - [ - 7.435108, - 43.74807 - ], - [ - 7.435305, - 43.74823 - ], - [ - 7.435923, - 43.748547 - ], - [ - 7.436871, - 43.748955 - ], - [ - 7.437138, - 43.749054 - ], - [ - 7.437248, - 43.74907 - ], - [ - 7.437368, - 43.749058 - ], - [ - 7.43747, - 43.74894 - ], - [ - 7.437652, - 43.748714 - ], - [ - 7.437765, - 43.74859 - ], - [ - 7.437835, - 43.748512 - ], - [ - 7.437883, - 43.74838 - ], - [ - 7.437918, - 43.74817 - ], - [ - 7.437931, - 43.748116 - ], - [ - 7.438001, - 43.747997 - ], - [ - 7.438098, - 43.747868 - ], - [ - 7.438138, - 43.747826 - ], - [ - 7.438159, - 43.74777 - ], - [ - 7.438159, - 43.747692 - ], - [ - 7.438173, - 43.747616 - ], - [ - 7.438205, - 43.747566 - ], - [ - 7.438264, - 43.747528 - ], - [ - 7.438347, - 43.747513 - ], - [ - 7.438443, - 43.74752 - ], - [ - 7.438505, - 43.74755 - ], - [ - 7.438548, - 43.7476 - ], - [ - 7.438569, - 43.747654 - ], - [ - 7.438545, - 43.747726 - ], - [ - 7.438494, - 43.747772 - ], - [ - 7.438431, - 43.7478 - ], - [ - 7.438357, - 43.74781 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640004", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "4a3da8ed-e833-48bf-b833-2c67512e53cf", - "name": "wifi-ap-8", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C08080808" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.431644, - 43.746662 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "d1cc062f-bb7f-40cf-91af-5593376f3b4d", - "name": "wifi-ap-9", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C09090909" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.435867, - 43.748856 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "c4df58ab-17a2-49e0-b5fa-531a6ce15baf", - "name": "wifi-ap-10", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C0A0A0A0A" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438055, - 43.748734 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "3fbf9ec8-3932-455c-8352-0d06b7bb7a15", - "name": "5g-small-cell-13", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "D0D0D0D0D" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.431907, - 43.74543 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "80e3b677-56cb-495c-b798-e19f96d491b9", - "name": "5g-small-cell-14", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "E0E0E0E0E" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.433109, - 43.746513 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "dcb66c87-1854-4c8e-ae88-72b14df9aaff", - "name": "5g-small-cell-15", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "F0F0F0F0F" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.434376, - 43.747337 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "10b048d1-2fba-486d-89a0-d1a3191b90b4", - "name": "5g-small-cell-16", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "010101010" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.435985, - 43.747784 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "35602880-9727-4ed6-8f53-fe0ffab22cb4", - "name": "5g-small-cell-17", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "111111111" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.437487, - 43.7487 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "4aef0f33-51d2-472c-8441-b5c55f0de626", - "name": "5g-small-cell-18", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "212121212" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438839, - 43.749706 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "3396c6ae-28f8-4c8b-ba12-9991bddeed61", - "name": "5g-small-cell-19", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "313131313" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.4371, - 43.750282 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "246f3830-3b56-4359-9452-b17f34426888", - "name": "5g-small-cell-20", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "414141414" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.436006, - 43.749382 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "da565fc0-0d1e-47a1-944e-2d77441051de", - "name": "wifi-ap-11", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C0B0B0B0B" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.43891, - 43.74822 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - } - ], - "interZoneLatency": null, - "interZoneLatencyVariation": null, - "interZoneThroughput": null, - "interZonePacketLoss": null, - "meta": null, - "userMeta": null - } - ], - "interDomainLatency": null, - "interDomainLatencyVariation": null, - "interDomainThroughput": null, - "interDomainPacketLoss": null, - "meta": null - }, - "id": null, - "description": null, - "config": null -} -` - -var sandboxName string - -const redisTestAddr = "localhost:30380" -const influxTestAddr = "http://localhost:30986" -const testScenarioName = "testScenario" - -var m *mod.Model -var mqLocal *mq.MsgQueue - - -func TestSuccessSubscriptionCellChange(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) - - initializeVars() - reInitHttpReq() -/* - err := Init() - if err != nil { - t.Fatalf("Error initializing test basic procedure") - } - err = Run() - if err != nil { - t.Fatalf("Error running test basic procedure") - } -*/ - fmt.Println("Set a scenario") - initialiseScenario(testScenario) - -// fmt.Println("Terminate a scenario") -// terminateScenario() -} - -func terminateScenario() { - if mqLocal != nil { - msg := mqLocal.CreateMsg(mq.MsgScenarioTerminate, mq.TargetAll, testScenarioName) - err := mqLocal.SendMsg(msg) - if err != nil { - log.Error("Failed to send message: ", err) - } - time.Sleep(100 * time.Millisecond) - } -} - -func initializeVars() { - - mod.DbAddress = redisTestAddr - sandboxName = testScenarioName - Initialise() - -} - -func initialiseScenario(testScenario string) { - - cfg := mod.ModelCfg{ - Name: testScenarioName, - Namespace: sandboxName, - Module: "test-mod", - UpdateCb: nil, - DbAddr: redisTestAddr, - } - - var err error - m, err = mod.NewModel(cfg) - if err != nil { - log.Error("Failed to create model: ", err) - return - } - - // Create message queue - mqLocal, err = mq.NewMsgQueue(mq.GetLocalName(testScenarioName), "test-mod", testScenarioName, redisTestAddr) - if err != nil { - log.Error("Failed to create Message Queue with error: ", err) - return - } - log.Info("Message Queue created") - - fmt.Println("Set Model") - err = m.SetScenario([]byte(testScenario)) - if err != nil { - log.Error("Failed to set model: ", err) - return - } - - err = m.Activate() - if err != nil { - log.Error("Failed to activate scenario with err: ", err.Error()) - return - } - - msg := mqLocal.CreateMsg(mq.MsgScenarioActivate, mq.TargetAll, testScenarioName) - err = mqLocal.SendMsg(msg) - if err != nil { - log.Error("Failed to send message: ", err) - return - } - - time.Sleep(100 * time.Millisecond) -} - diff --git a/test/system/test.json b/test/system/test.json deleted file mode 100644 index 5690091b9..000000000 --- a/test/system/test.json +++ /dev/null @@ -1,6910 +0,0 @@ -{ - "version": "1.5.6", - "name": "4g-5g-wifi-macro", - "deployment": { - "netChar": { - "latency": 50, - "latencyVariation": 10, - "latencyDistribution": "Normal", - "throughputDl": 1000, - "throughputUl": 1000, - "throughput": null, - "packetLoss": null - }, - "userMeta": { - "mec-sandbox": "{\"defaultStaticUeCount\": 1, \"defaultLowVelocityUeCount\": 1, \"defaultHighVelocityUeCount\": 1, \"highVelocitySpeedThreshold\": 10}", - "network-info": "{\"type\": \"local\", \"path\":\"4G-Macro-Network-Topology.png\"}" - }, - "domains": [ - { - "id": "PUBLIC", - "name": "PUBLIC", - "type": "PUBLIC", - "netChar": { - "latency": 6, - "latencyVariation": 2, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "zones": [ - { - "id": "PUBLIC-COMMON", - "name": "PUBLIC-COMMON", - "type": "COMMON", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "networkLocations": [ - { - "id": "PUBLIC-COMMON-DEFAULT", - "name": "PUBLIC-COMMON-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "meta": null, - "userMeta": null - } - ], - "interZoneLatency": null, - "interZoneLatencyVariation": null, - "interZoneThroughput": null, - "interZonePacketLoss": null, - "meta": null, - "userMeta": null, - "cellularDomainConfig": null - }, - { - "id": "f1c5f2fe-5fbb-48fa-a0df-6ad00e4eeb4c", - "name": "sandbox-operator", - "type": "OPERATOR-CELLULAR", - "netChar": { - "latency": 6, - "latencyVariation": 2, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "cellularDomainConfig": { - "mnc": "001", - "mcc": "001", - "defaultCellId": "FFFFFFF" - }, - "zones": [ - { - "id": "sandbox-operator-COMMON", - "name": "sandbox-operator-COMMON", - "type": "COMMON", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "networkLocations": [ - { - "id": "sandbox-operator-COMMON-DEFAULT", - "name": "sandbox-operator-COMMON-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "meta": null, - "userMeta": null - }, - { - "id": "6fd7e9d1-3646-474d-880b-d4a21799d280", - "name": "zone01", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "blueviolet" - }, - "networkLocations": [ - { - "id": "zone01-DEFAULT", - "name": "zone01-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "3480e529-3fc1-44b8-a892-42bbbfa4018f", - "name": "4g-macro-cell-1", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "1010101" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.419344, - 43.72764 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "3331ee44-2236-1111-0020-5a3c2bde0eaa", - "name": "10.10.0.4", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.420433, - 43.729942 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.420433, - 43.729942 - ], - [ - 7.420659, - 43.73036 - ], - [ - 7.420621, - 43.731045 - ], - [ - 7.420922, - 43.73129 - ], - [ - 7.421345, - 43.731373 - ], - [ - 7.42135, - 43.73168 - ], - [ - 7.421148, - 43.73173 - ], - [ - 7.420616, - 43.731964 - ], - [ - 7.419779, - 43.732197 - ], - [ - 7.419111, - 43.732353 - ], - [ - 7.418931, - 43.732315 - ], - [ - 7.418345, - 43.731964 - ], - [ - 7.418319, - 43.73186 - ], - [ - 7.418024, - 43.73179 - ], - [ - 7.41796, - 43.731728 - ], - [ - 7.417729, - 43.731743 - ], - [ - 7.417463, - 43.731632 - ], - [ - 7.417507, - 43.73148 - ], - [ - 7.417428, - 43.731407 - ], - [ - 7.417343, - 43.731396 - ], - [ - 7.417334, - 43.731133 - ], - [ - 7.417317, - 43.73053 - ], - [ - 7.417164, - 43.7304 - ], - [ - 7.417164, - 43.72998 - ], - [ - 7.417319, - 43.729916 - ], - [ - 7.419065, - 43.730103 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0004", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "1e2600f4-4861-43d6-abcb-07f4481a124c", - "name": "10.10.0.3", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.423684, - 43.727867 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.423684, - 43.727867 - ], - [ - 7.422571, - 43.727325 - ], - [ - 7.422421, - 43.727333 - ], - [ - 7.42196, - 43.727123 - ], - [ - 7.421828, - 43.72711 - ], - [ - 7.420988, - 43.726707 - ], - [ - 7.420757, - 43.72654 - ], - [ - 7.420393, - 43.72653 - ], - [ - 7.420207, - 43.726746 - ], - [ - 7.419985, - 43.72686 - ], - [ - 7.41988, - 43.72701 - ], - [ - 7.419869, - 43.727287 - ], - [ - 7.419807, - 43.727474 - ], - [ - 7.419671, - 43.727585 - ], - [ - 7.419502, - 43.727608 - ], - [ - 7.419402, - 43.728645 - ], - [ - 7.421238, - 43.72874 - ], - [ - 7.421412, - 43.728493 - ], - [ - 7.421532, - 43.728237 - ], - [ - 7.421697, - 43.72798 - ], - [ - 7.421928, - 43.727783 - ], - [ - 7.422381, - 43.727524 - ], - [ - 7.422507, - 43.72749 - ], - [ - 7.422922, - 43.72768 - ], - [ - 7.422894, - 43.727715 - ], - [ - 7.423666, - 43.72804 - ], - [ - 7.423763, - 43.72794 - ], - [ - 7.4237, - 43.727905 - ], - [ - 7.423684, - 43.727867 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0003", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "8c2599e8-dd88-4ff2-9cf4-6fc54663c152", - "name": "4g-macro-cell-2", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "2020202" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.413819, - 43.729538 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "c52208b3-93bb-4255-9b34-52432acc4398", - "name": "10.100.0.1", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.412295, - 43.728676 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.412295, - 43.728676 - ], - [ - 7.412273, - 43.728664 - ], - [ - 7.412281, - 43.728645 - ], - [ - 7.412294, - 43.72861 - ], - [ - 7.412353, - 43.728577 - ], - [ - 7.412433, - 43.728584 - ], - [ - 7.412494, - 43.72862 - ], - [ - 7.412491, - 43.72867 - ], - [ - 7.412466, - 43.728714 - ], - [ - 7.412627, - 43.728798 - ], - [ - 7.412708, - 43.728863 - ], - [ - 7.412821, - 43.729042 - ], - [ - 7.413009, - 43.729298 - ], - [ - 7.413331, - 43.72953 - ], - [ - 7.414082, - 43.729942 - ], - [ - 7.414709, - 43.730297 - ], - [ - 7.415187, - 43.730553 - ], - [ - 7.415568, - 43.73077 - ], - [ - 7.416118, - 43.73108 - ], - [ - 7.416652, - 43.73135 - ], - [ - 7.416979, - 43.731503 - ], - [ - 7.417131, - 43.73154 - ], - [ - 7.41718, - 43.731457 - ], - [ - 7.417308, - 43.73144 - ], - [ - 7.417392, - 43.731476 - ], - [ - 7.417432, - 43.731533 - ], - [ - 7.417426, - 43.731598 - ], - [ - 7.417365, - 43.73165 - ], - [ - 7.417268, - 43.731663 - ], - [ - 7.417177, - 43.73164 - ], - [ - 7.417037, - 43.731712 - ], - [ - 7.416912, - 43.73183 - ], - [ - 7.416855, - 43.731888 - ], - [ - 7.41681, - 43.731964 - ], - [ - 7.41681, - 43.732018 - ], - [ - 7.416761, - 43.732048 - ], - [ - 7.4167, - 43.732037 - ], - [ - 7.416646, - 43.731995 - ], - [ - 7.416437, - 43.73177 - ], - [ - 7.416278, - 43.731544 - ], - [ - 7.416238, - 43.731464 - ], - [ - 7.416225, - 43.731384 - ], - [ - 7.416228, - 43.73122 - ], - [ - 7.416206, - 43.731102 - ], - [ - 7.416128, - 43.73104 - ], - [ - 7.416005, - 43.73094 - ], - [ - 7.415892, - 43.73085 - ], - [ - 7.415442, - 43.730564 - ], - [ - 7.414985, - 43.73029 - ], - [ - 7.413749, - 43.7296 - ], - [ - 7.413719, - 43.729523 - ], - [ - 7.414267, - 43.72908 - ], - [ - 7.414825, - 43.728683 - ], - [ - 7.414983, - 43.728634 - ], - [ - 7.415184, - 43.728607 - ], - [ - 7.415248, - 43.728603 - ], - [ - 7.41531, - 43.72861 - ], - [ - 7.415366, - 43.72868 - ], - [ - 7.415329, - 43.728752 - ], - [ - 7.415332, - 43.72882 - ], - [ - 7.41538, - 43.728905 - ], - [ - 7.415645, - 43.729088 - ], - [ - 7.416165, - 43.729477 - ], - [ - 7.416268, - 43.729515 - ], - [ - 7.416372, - 43.72958 - ], - [ - 7.416673, - 43.7298 - ], - [ - 7.416808, - 43.729828 - ], - [ - 7.416867, - 43.72982 - ], - [ - 7.417084, - 43.72983 - ], - [ - 7.417418, - 43.72988 - ], - [ - 7.417764, - 43.729916 - ], - [ - 7.418454, - 43.72999 - ], - [ - 7.418545, - 43.729046 - ], - [ - 7.418624, - 43.729004 - ], - [ - 7.419099, - 43.72902 - ], - [ - 7.419173, - 43.728962 - ], - [ - 7.419217, - 43.72858 - ], - [ - 7.420207, - 43.72863 - ], - [ - 7.421203, - 43.728664 - ], - [ - 7.421265, - 43.72848 - ], - [ - 7.421318, - 43.72833 - ], - [ - 7.421387, - 43.72821 - ], - [ - 7.421448, - 43.72811 - ], - [ - 7.421565, - 43.727966 - ], - [ - 7.42162, - 43.7279 - ], - [ - 7.42168, - 43.72785 - ], - [ - 7.421951, - 43.727634 - ], - [ - 7.422287, - 43.72743 - ], - [ - 7.422104, - 43.72733 - ], - [ - 7.421898, - 43.72723 - ], - [ - 7.421297, - 43.726948 - ], - [ - 7.42101, - 43.726795 - ], - [ - 7.42075, - 43.72662 - ], - [ - 7.420669, - 43.726624 - ], - [ - 7.420599, - 43.726635 - ], - [ - 7.420543, - 43.72666 - ], - [ - 7.420205, - 43.726803 - ], - [ - 7.420039, - 43.726883 - ], - [ - 7.41995, - 43.72704 - ], - [ - 7.419926, - 43.727287 - ], - [ - 7.419913, - 43.727413 - ], - [ - 7.419859, - 43.72752 - ], - [ - 7.419728, - 43.727615 - ], - [ - 7.419527, - 43.72767 - ], - [ - 7.419304, - 43.72768 - ], - [ - 7.418912, - 43.727684 - ], - [ - 7.418875, - 43.727726 - ], - [ - 7.418805, - 43.727734 - ], - [ - 7.418751, - 43.727886 - ], - [ - 7.41866, - 43.728058 - ], - [ - 7.418553, - 43.728134 - ], - [ - 7.418459, - 43.72819 - ], - [ - 7.418341, - 43.728245 - ], - [ - 7.418135, - 43.728283 - ], - [ - 7.418035, - 43.72831 - ], - [ - 7.417955, - 43.728355 - ], - [ - 7.417933, - 43.728546 - ], - [ - 7.417923, - 43.72878 - ], - [ - 7.417864, - 43.72901 - ], - [ - 7.41777, - 43.729256 - ], - [ - 7.417654, - 43.729446 - ], - [ - 7.417483, - 43.729645 - ], - [ - 7.417416, - 43.72971 - ], - [ - 7.417233, - 43.72983 - ], - [ - 7.417139, - 43.729893 - ], - [ - 7.417102, - 43.729935 - ], - [ - 7.41707, - 43.72999 - ], - [ - 7.417072, - 43.730053 - ], - [ - 7.417314, - 43.730247 - ], - [ - 7.417579, - 43.730446 - ], - [ - 7.418376, - 43.73103 - ], - [ - 7.41858, - 43.73113 - ], - [ - 7.419038, - 43.73124 - ], - [ - 7.419392, - 43.73131 - ], - [ - 7.419736, - 43.73141 - ], - [ - 7.420988, - 43.73178 - ], - [ - 7.421616, - 43.731987 - ], - [ - 7.421924, - 43.732105 - ], - [ - 7.422169, - 43.73223 - ], - [ - 7.422276, - 43.732334 - ], - [ - 7.422316, - 43.73246 - ], - [ - 7.422297, - 43.732597 - ], - [ - 7.42222, - 43.732723 - ], - [ - 7.422096, - 43.73284 - ], - [ - 7.422002, - 43.732975 - ], - [ - 7.421962, - 43.733047 - ], - [ - 7.421949, - 43.733135 - ], - [ - 7.421696, - 43.733627 - ], - [ - 7.421522, - 43.734016 - ], - [ - 7.421377, - 43.73445 - ], - [ - 7.421289, - 43.73488 - ], - [ - 7.421232, - 43.735355 - ], - [ - 7.421211, - 43.73588 - ], - [ - 7.421291, - 43.73624 - ], - [ - 7.421447, - 43.736584 - ], - [ - 7.421576, - 43.73678 - ], - [ - 7.421629, - 43.73683 - ], - [ - 7.421755, - 43.736908 - ], - [ - 7.422032, - 43.737015 - ], - [ - 7.42237, - 43.737045 - ], - [ - 7.422756, - 43.73709 - ], - [ - 7.423142, - 43.737164 - ], - [ - 7.423915, - 43.737328 - ], - [ - 7.424164, - 43.737377 - ], - [ - 7.424414, - 43.737408 - ], - [ - 7.424918, - 43.73745 - ], - [ - 7.425942, - 43.73778 - ], - [ - 7.426543, - 43.737877 - ], - [ - 7.426795, - 43.737984 - ], - [ - 7.426946, - 43.738132 - ], - [ - 7.426972, - 43.738243 - ], - [ - 7.426924, - 43.738384 - ], - [ - 7.426747, - 43.738514 - ], - [ - 7.426495, - 43.738655 - ], - [ - 7.426119, - 43.738857 - ], - [ - 7.425932, - 43.738956 - ], - [ - 7.42583, - 43.739017 - ], - [ - 7.425776, - 43.739098 - ], - [ - 7.425771, - 43.739197 - ], - [ - 7.425814, - 43.73932 - ], - [ - 7.425771, - 43.73942 - ], - [ - 7.425685, - 43.739525 - ], - [ - 7.425154, - 43.73971 - ], - [ - 7.425562, - 43.740387 - ], - [ - 7.425765, - 43.7407 - ], - [ - 7.425883, - 43.740875 - ], - [ - 7.426023, - 43.741028 - ], - [ - 7.426329, - 43.741234 - ], - [ - 7.426538, - 43.74138 - ], - [ - 7.426736, - 43.741535 - ], - [ - 7.426822, - 43.74154 - ], - [ - 7.426908, - 43.74159 - ], - [ - 7.426895, - 43.741665 - ], - [ - 7.427034, - 43.74174 - ], - [ - 7.427466, - 43.742035 - ], - [ - 7.427699, - 43.742188 - ], - [ - 7.427799, - 43.742268 - ], - [ - 7.427908, - 43.74236 - ], - [ - 7.428187, - 43.7429 - ], - [ - 7.428544, - 43.743557 - ], - [ - 7.42892, - 43.744236 - ], - [ - 7.429225, - 43.74491 - ], - [ - 7.429504, - 43.74551 - ], - [ - 7.429751, - 43.74569 - ], - [ - 7.429939, - 43.745804 - ], - [ - 7.430121, - 43.74594 - ], - [ - 7.430202, - 43.746082 - ], - [ - 7.430239, - 43.746162 - ], - [ - 7.43062, - 43.746452 - ], - [ - 7.431017, - 43.74667 - ], - [ - 7.431371, - 43.746925 - ], - [ - 7.431682, - 43.747177 - ], - [ - 7.431763, - 43.7473 - ], - [ - 7.431763, - 43.747467 - ], - [ - 7.431731, - 43.747578 - ], - [ - 7.431822, - 43.747734 - ], - [ - 7.432031, - 43.747807 - ], - [ - 7.432246, - 43.747856 - ], - [ - 7.432525, - 43.747852 - ], - [ - 7.432809, - 43.747955 - ], - [ - 7.433152, - 43.748158 - ], - [ - 7.43341, - 43.748363 - ], - [ - 7.43401, - 43.748726 - ], - [ - 7.434322, - 43.748905 - ], - [ - 7.434671, - 43.749058 - ], - [ - 7.435019, - 43.74907 - ], - [ - 7.435373, - 43.749073 - ], - [ - 7.435818, - 43.74906 - ], - [ - 7.436028, - 43.749104 - ], - [ - 7.43621, - 43.749184 - ], - [ - 7.436376, - 43.749287 - ], - [ - 7.43651, - 43.749416 - ], - [ - 7.43709, - 43.749954 - ], - [ - 7.437347, - 43.750195 - ], - [ - 7.437589, - 43.75045 - ], - [ - 7.437841, - 43.75071 - ], - [ - 7.43812, - 43.751137 - ], - [ - 7.438431, - 43.751614 - ], - [ - 7.438881, - 43.751606 - ], - [ - 7.439327, - 43.75162 - ], - [ - 7.439826, - 43.751553 - ], - [ - 7.44004, - 43.751488 - ], - [ - 7.440137, - 43.751392 - ], - [ - 7.440062, - 43.751163 - ], - [ - 7.439842, - 43.75103 - ], - [ - 7.43952, - 43.750824 - ], - [ - 7.439203, - 43.750637 - ], - [ - 7.439219, - 43.750423 - ], - [ - 7.439364, - 43.750286 - ], - [ - 7.439616, - 43.75027 - ], - [ - 7.440062, - 43.750523 - ], - [ - 7.440443, - 43.750797 - ], - [ - 7.440115, - 43.750893 - ], - [ - 7.439836, - 43.75065 - ], - [ - 7.439289, - 43.75024 - ], - [ - 7.438694, - 43.749947 - ], - [ - 7.43732, - 43.749363 - ], - [ - 7.435936, - 43.74877 - ], - [ - 7.435287, - 43.74844 - ], - [ - 7.433453, - 43.747387 - ], - [ - 7.432712, - 43.74694 - ], - [ - 7.431956, - 43.746502 - ], - [ - 7.431586, - 43.74628 - ], - [ - 7.431216, - 43.746056 - ], - [ - 7.430974, - 43.745815 - ], - [ - 7.430792, - 43.7456 - ], - [ - 7.430679, - 43.745537 - ], - [ - 7.430668, - 43.74546 - ], - [ - 7.430674, - 43.745377 - ], - [ - 7.43069, - 43.74523 - ], - [ - 7.43062, - 43.745117 - ], - [ - 7.43041, - 43.744785 - ], - [ - 7.430306, - 43.744625 - ], - [ - 7.430225, - 43.74446 - ], - [ - 7.430192, - 43.744396 - ], - [ - 7.430144, - 43.74434 - ], - [ - 7.429972, - 43.744175 - ], - [ - 7.429881, - 43.743988 - ], - [ - 7.429728, - 43.743587 - ], - [ - 7.429689, - 43.743484 - ], - [ - 7.429671, - 43.743435 - ], - [ - 7.429656, - 43.743385 - ], - [ - 7.429612, - 43.743202 - ], - [ - 7.429592, - 43.743034 - ], - [ - 7.429584, - 43.742874 - ], - [ - 7.429596, - 43.742657 - ], - [ - 7.429612, - 43.742485 - ], - [ - 7.429639, - 43.74218 - ], - [ - 7.429783, - 43.741016 - ], - [ - 7.429848, - 43.740414 - ], - [ - 7.429872, - 43.740257 - ], - [ - 7.429858, - 43.740124 - ], - [ - 7.429791, - 43.739834 - ], - [ - 7.42971, - 43.739548 - ], - [ - 7.429573, - 43.73925 - ], - [ - 7.429385, - 43.73896 - ], - [ - 7.42915, - 43.738686 - ], - [ - 7.429027, - 43.738552 - ], - [ - 7.428953, - 43.738483 - ], - [ - 7.428917, - 43.73845 - ], - [ - 7.428875, - 43.738422 - ], - [ - 7.428521, - 43.738182 - ], - [ - 7.428061, - 43.73796 - ], - [ - 7.427626, - 43.737766 - ], - [ - 7.427324, - 43.737656 - ], - [ - 7.427005, - 43.737576 - ], - [ - 7.426667, - 43.737507 - ], - [ - 7.426342, - 43.737473 - ], - [ - 7.42602, - 43.737442 - ], - [ - 7.42571, - 43.737434 - ], - [ - 7.425395, - 43.737434 - ], - [ - 7.42384, - 43.73755 - ], - [ - 7.423571, - 43.73761 - ], - [ - 7.423247, - 43.737644 - ], - [ - 7.42289, - 43.737667 - ], - [ - 7.422737, - 43.737656 - ], - [ - 7.422659, - 43.737644 - ], - [ - 7.42259, - 43.737625 - ], - [ - 7.422582, - 43.7376 - ], - [ - 7.422584, - 43.737576 - ], - [ - 7.422598, - 43.73753 - ], - [ - 7.422646, - 43.7375 - ], - [ - 7.422814, - 43.737434 - ], - [ - 7.423523, - 43.737408 - ], - [ - 7.423972, - 43.737442 - ], - [ - 7.424034, - 43.73743 - ], - [ - 7.424064, - 43.73741 - ], - [ - 7.424055, - 43.737385 - ], - [ - 7.424038, - 43.737366 - ], - [ - 7.423644, - 43.73728 - ], - [ - 7.423225, - 43.73719 - ], - [ - 7.422795, - 43.73711 - ], - [ - 7.422332, - 43.737053 - ], - [ - 7.422099, - 43.73703 - ], - [ - 7.421981, - 43.73701 - ], - [ - 7.421785, - 43.737007 - ], - [ - 7.421583, - 43.736977 - ], - [ - 7.421478, - 43.736946 - ], - [ - 7.421381, - 43.7369 - ], - [ - 7.421202, - 43.7368 - ], - [ - 7.421065, - 43.736702 - ], - [ - 7.421003, - 43.73664 - ], - [ - 7.420967, - 43.736614 - ], - [ - 7.420598, - 43.736317 - ], - [ - 7.420181, - 43.73597 - ], - [ - 7.420098, - 43.7359 - ], - [ - 7.420028, - 43.735836 - ], - [ - 7.419874, - 43.735687 - ], - [ - 7.419729, - 43.73555 - ], - [ - 7.419451, - 43.735283 - ], - [ - 7.419311, - 43.735146 - ], - [ - 7.419177, - 43.735004 - ], - [ - 7.418924, - 43.73472 - ], - [ - 7.418668, - 43.734436 - ], - [ - 7.418515, - 43.73424 - ], - [ - 7.41849, - 43.734142 - ], - [ - 7.41851, - 43.73403 - ], - [ - 7.418537, - 43.733932 - ], - [ - 7.418588, - 43.733727 - ], - [ - 7.418687, - 43.73334 - ], - [ - 7.418813, - 43.732906 - ], - [ - 7.418915, - 43.73265 - ], - [ - 7.418904, - 43.732555 - ], - [ - 7.418859, - 43.732525 - ], - [ - 7.418795, - 43.73252 - ], - [ - 7.418462, - 43.732613 - ], - [ - 7.418294, - 43.73266 - ], - [ - 7.418215, - 43.73269 - ], - [ - 7.41814, - 43.73272 - ], - [ - 7.417854, - 43.732807 - ], - [ - 7.41764, - 43.732853 - ], - [ - 7.417487, - 43.732895 - ], - [ - 7.417425, - 43.732925 - ], - [ - 7.417377, - 43.732986 - ], - [ - 7.417373, - 43.733036 - ], - [ - 7.4174, - 43.7331 - ], - [ - 7.417593, - 43.733456 - ], - [ - 7.417621, - 43.733547 - ], - [ - 7.417609, - 43.733665 - ], - [ - 7.417566, - 43.733784 - ], - [ - 7.417477, - 43.733948 - ], - [ - 7.417422, - 43.73416 - ], - [ - 7.417394, - 43.7342 - ], - [ - 7.417331, - 43.734238 - ], - [ - 7.417137, - 43.73429 - ], - [ - 7.417091, - 43.734406 - ], - [ - 7.417072, - 43.73461 - ], - [ - 7.41707, - 43.734833 - ], - [ - 7.417106, - 43.735027 - ], - [ - 7.417174, - 43.735165 - ], - [ - 7.417213, - 43.735237 - ], - [ - 7.417265, - 43.735313 - ], - [ - 7.417349, - 43.735413 - ], - [ - 7.417468, - 43.735542 - ], - [ - 7.417709, - 43.735783 - ], - [ - 7.417825, - 43.735874 - ], - [ - 7.417894, - 43.735916 - ], - [ - 7.417971, - 43.735947 - ], - [ - 7.418423, - 43.736076 - ], - [ - 7.418604, - 43.736122 - ], - [ - 7.418683, - 43.736156 - ], - [ - 7.418759, - 43.7362 - ], - [ - 7.419186, - 43.736515 - ], - [ - 7.419429, - 43.736725 - ], - [ - 7.419634, - 43.736874 - ], - [ - 7.41982, - 43.737015 - ], - [ - 7.419993, - 43.737167 - ], - [ - 7.420052, - 43.73722 - ], - [ - 7.420099, - 43.737286 - ], - [ - 7.42013, - 43.737335 - ], - [ - 7.420121, - 43.737442 - ], - [ - 7.420076, - 43.73754 - ], - [ - 7.420024, - 43.73758 - ], - [ - 7.419942, - 43.737614 - ], - [ - 7.419759, - 43.737682 - ], - [ - 7.419337, - 43.737827 - ], - [ - 7.419228, - 43.7379 - ], - [ - 7.419127, - 43.737995 - ], - [ - 7.419092, - 43.738087 - ], - [ - 7.419126, - 43.738163 - ], - [ - 7.419173, - 43.738186 - ], - [ - 7.419261, - 43.73819 - ], - [ - 7.419348, - 43.738174 - ], - [ - 7.419405, - 43.73811 - ], - [ - 7.419454, - 43.737915 - ], - [ - 7.419511, - 43.737743 - ], - [ - 7.419544, - 43.737705 - ], - [ - 7.419611, - 43.737644 - ], - [ - 7.419867, - 43.73755 - ], - [ - 7.419964, - 43.737514 - ], - [ - 7.420028, - 43.73747 - ], - [ - 7.420036, - 43.737423 - ], - [ - 7.420034, - 43.73738 - ], - [ - 7.420013, - 43.737335 - ], - [ - 7.41998, - 43.737293 - ], - [ - 7.419899, - 43.73722 - ], - [ - 7.419673, - 43.73708 - ], - [ - 7.419535, - 43.73704 - ], - [ - 7.419489, - 43.737026 - ], - [ - 7.419434, - 43.73703 - ], - [ - 7.419327, - 43.737045 - ], - [ - 7.41915, - 43.73712 - ], - [ - 7.419123, - 43.737137 - ], - [ - 7.41913, - 43.73716 - ], - [ - 7.41912, - 43.73719 - ], - [ - 7.419033, - 43.73725 - ], - [ - 7.41893, - 43.73732 - ], - [ - 7.418659, - 43.73749 - ], - [ - 7.418499, - 43.73756 - ], - [ - 7.418411, - 43.737583 - ], - [ - 7.41831, - 43.7376 - ], - [ - 7.418235, - 43.73759 - ], - [ - 7.418163, - 43.73757 - ], - [ - 7.418037, - 43.737507 - ], - [ - 7.417955, - 43.73744 - ], - [ - 7.417869, - 43.73738 - ], - [ - 7.417664, - 43.737312 - ], - [ - 7.417506, - 43.737274 - ], - [ - 7.417401, - 43.73726 - ], - [ - 7.417366, - 43.737236 - ], - [ - 7.417346, - 43.737206 - ], - [ - 7.417345, - 43.73717 - ], - [ - 7.417311, - 43.737103 - ], - [ - 7.417304, - 43.737064 - ], - [ - 7.417295, - 43.737045 - ], - [ - 7.41729, - 43.737022 - ], - [ - 7.417276, - 43.736973 - ], - [ - 7.417247, - 43.736935 - ], - [ - 7.417186, - 43.736893 - ], - [ - 7.416992, - 43.73685 - ], - [ - 7.416886, - 43.73682 - ], - [ - 7.416842, - 43.736797 - ], - [ - 7.41681, - 43.73677 - ], - [ - 7.416771, - 43.73672 - ], - [ - 7.416749, - 43.736668 - ], - [ - 7.416704, - 43.736313 - ], - [ - 7.416675, - 43.736084 - ], - [ - 7.416665, - 43.735966 - ], - [ - 7.416665, - 43.735855 - ], - [ - 7.416615, - 43.73581 - ], - [ - 7.416623, - 43.73574 - ], - [ - 7.416591, - 43.73564 - ], - [ - 7.416561, - 43.735546 - ], - [ - 7.416504, - 43.735416 - ], - [ - 7.41637, - 43.73514 - ], - [ - 7.41632, - 43.734993 - ], - [ - 7.416289, - 43.73486 - ], - [ - 7.416272, - 43.73474 - ], - [ - 7.416262, - 43.73462 - ], - [ - 7.416245, - 43.734394 - ], - [ - 7.416225, - 43.734295 - ], - [ - 7.416201, - 43.734203 - ], - [ - 7.416174, - 43.734142 - ], - [ - 7.416138, - 43.73409 - ], - [ - 7.416054, - 43.733955 - ], - [ - 7.41599, - 43.733894 - ], - [ - 7.415801, - 43.733715 - ], - [ - 7.415393, - 43.733383 - ], - [ - 7.415356, - 43.733337 - ], - [ - 7.415299, - 43.73332 - ], - [ - 7.415204, - 43.733276 - ], - [ - 7.41514, - 43.73322 - ], - [ - 7.415098, - 43.733154 - ], - [ - 7.415077, - 43.733097 - ], - [ - 7.414878, - 43.732937 - ], - [ - 7.414619, - 43.73273 - ], - [ - 7.414414, - 43.73253 - ], - [ - 7.414343, - 43.73237 - ], - [ - 7.4143, - 43.73213 - ], - [ - 7.414363, - 43.731937 - ], - [ - 7.414526, - 43.731796 - ], - [ - 7.414589, - 43.73177 - ], - [ - 7.414902, - 43.73153 - ], - [ - 7.415022, - 43.73144 - ], - [ - 7.415058, - 43.73137 - ], - [ - 7.415065, - 43.731266 - ], - [ - 7.415031, - 43.731213 - ], - [ - 7.414972, - 43.73117 - ], - [ - 7.414802, - 43.731125 - ], - [ - 7.414583, - 43.7311 - ], - [ - 7.414045, - 43.731014 - ], - [ - 7.413182, - 43.730873 - ], - [ - 7.413132, - 43.730865 - ], - [ - 7.413081, - 43.730846 - ], - [ - 7.412977, - 43.73082 - ], - [ - 7.412864, - 43.73075 - ], - [ - 7.412629, - 43.730595 - ], - [ - 7.41271, - 43.730377 - ], - [ - 7.412778, - 43.72999 - ], - [ - 7.412793, - 43.729607 - ], - [ - 7.412826, - 43.72954 - ], - [ - 7.412839, - 43.72948 - ], - [ - 7.412739, - 43.729347 - ], - [ - 7.412632, - 43.729225 - ], - [ - 7.412401, - 43.728916 - ], - [ - 7.412397, - 43.72874 - ], - [ - 7.412365, - 43.728737 - ], - [ - 7.412332, - 43.72873 - ], - [ - 7.412307, - 43.72871 - ], - [ - 7.412295, - 43.728676 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640001", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "f32f0c05-4491-4a93-be0c-19420d4407f0", - "name": "4g-macro-cell-3", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "3030303" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.416715, - 43.733616 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "0ca4bfcc-7346-4f57-9c85-bb92642ec37e", - "name": "10.1.0.2", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.4187, - 43.732403 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010002", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "1835f9ea-1f72-47e8-98b7-f0a5e4ff44e4", - "name": "wifi-ap-1", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C01010101" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.419891, - 43.727787 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "fb7ff207-f67d-4a1d-a353-038e96085d06", - "name": "wifi-ap-2", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C02020202" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.42179, - 43.727474 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "37be6821-a5f3-4af9-af0a-ceff4c0f66be", - "name": "5g-small-cell-1", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "101010101" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.415385, - 43.730846 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "ab60918a-acd8-4f4e-9693-d2fbffae9b72", - "name": "5g-small-cell-2", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "202020202" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.416962, - 43.731453 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "de2d952d-11b1-4294-8a67-6d994f1a5f37", - "name": "5g-small-cell-3", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "303030303" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.418507, - 43.731865 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - }, - { - "id": "4c3c9568-6408-4900-9d97-4556f6d805db", - "name": "zone02", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "darkred" - }, - "networkLocations": [ - { - "id": "zone02-DEFAULT", - "name": "zone02-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "78327873-c828-47da-8a5b-3c74d251dbbc", - "name": "4g-macro-cell-4", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "4040404" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.423547, - 43.731724 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "67a40b8b-5777-4e96-a896-8622af4a741f", - "name": "10.100.0.3", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427423, - 43.731323 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.427423, - 43.731323 - ], - [ - 7.427463, - 43.73143 - ], - [ - 7.427455, - 43.731537 - ], - [ - 7.427423, - 43.731598 - ], - [ - 7.427439, - 43.731667 - ], - [ - 7.427479, - 43.731766 - ], - [ - 7.427951, - 43.73259 - ], - [ - 7.427989, - 43.732677 - ], - [ - 7.427962, - 43.73281 - ], - [ - 7.427852, - 43.732925 - ], - [ - 7.427655, - 43.732994 - ], - [ - 7.427556, - 43.733 - ], - [ - 7.425453, - 43.73256 - ], - [ - 7.42436, - 43.7323 - ], - [ - 7.424033, - 43.732254 - ], - [ - 7.423397, - 43.73226 - ], - [ - 7.422675, - 43.73218 - ], - [ - 7.422588, - 43.7322 - ], - [ - 7.42249, - 43.732243 - ], - [ - 7.422382, - 43.732323 - ], - [ - 7.422415, - 43.73246 - ], - [ - 7.422351, - 43.73269 - ], - [ - 7.422257, - 43.73279 - ], - [ - 7.4221, - 43.73293 - ], - [ - 7.421912, - 43.733208 - ], - [ - 7.421604, - 43.733833 - ], - [ - 7.421522, - 43.734016 - ], - [ - 7.421377, - 43.73445 - ], - [ - 7.421289, - 43.73488 - ], - [ - 7.421232, - 43.735355 - ], - [ - 7.421211, - 43.73588 - ], - [ - 7.421291, - 43.73624 - ], - [ - 7.421447, - 43.736584 - ], - [ - 7.421576, - 43.73678 - ], - [ - 7.4216, - 43.7368 - ], - [ - 7.421723, - 43.73684 - ], - [ - 7.424054, - 43.73709 - ], - [ - 7.424611, - 43.737144 - ], - [ - 7.424942, - 43.73719 - ], - [ - 7.425462, - 43.737217 - ], - [ - 7.426063, - 43.737286 - ], - [ - 7.426653, - 43.737366 - ], - [ - 7.427215, - 43.73749 - ], - [ - 7.427498, - 43.737583 - ], - [ - 7.427762, - 43.73765 - ], - [ - 7.42799, - 43.737732 - ], - [ - 7.428867, - 43.738125 - ], - [ - 7.429136, - 43.73831 - ], - [ - 7.429626, - 43.738724 - ], - [ - 7.429853, - 43.73897 - ], - [ - 7.430023, - 43.739243 - ], - [ - 7.430125, - 43.7395 - ], - [ - 7.430301, - 43.740196 - ], - [ - 7.430422, - 43.741196 - ], - [ - 7.430411, - 43.741318 - ], - [ - 7.430493, - 43.741344 - ], - [ - 7.430568, - 43.741417 - ], - [ - 7.430773, - 43.74177 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640003", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "ca3b5b42-0e99-4553-9d19-4696cd8fe469", - "name": "4g-macro-cell-5", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "5050505" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.429257, - 43.73411 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "c18e3f93-79c4-427d-af91-81996adab3e7", - "name": "10.1.0.3", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.426565, - 43.73298 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010003", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "1d2683f4-086e-47d6-abbb-07fa481a25fb", - "name": "10.10.0.1", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.43166, - 43.736156 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.43166, - 43.736156 - ], - [ - 7.431723, - 43.736115 - ], - [ - 7.431162, - 43.735607 - ], - [ - 7.430685, - 43.73518 - ], - [ - 7.43043, - 43.73532 - ], - [ - 7.429067, - 43.734108 - ], - [ - 7.428863, - 43.734184 - ], - [ - 7.428388, - 43.734116 - ], - [ - 7.427817, - 43.73446 - ], - [ - 7.427689, - 43.734917 - ], - [ - 7.427581, - 43.73499 - ], - [ - 7.427308, - 43.734955 - ], - [ - 7.42723, - 43.734844 - ], - [ - 7.427281, - 43.734646 - ], - [ - 7.427411, - 43.734657 - ], - [ - 7.427709, - 43.73362 - ], - [ - 7.424581, - 43.732964 - ], - [ - 7.424312, - 43.73363 - ], - [ - 7.424512, - 43.73368 - ], - [ - 7.424534, - 43.733707 - ], - [ - 7.424534, - 43.73373 - ], - [ - 7.424477, - 43.733753 - ], - [ - 7.42423, - 43.73371 - ], - [ - 7.424029, - 43.733665 - ], - [ - 7.423999, - 43.733624 - ], - [ - 7.424058, - 43.73358 - ], - [ - 7.424246, - 43.733624 - ], - [ - 7.424522, - 43.732952 - ], - [ - 7.423748, - 43.73279 - ], - [ - 7.423545, - 43.733307 - ], - [ - 7.423508, - 43.7333 - ], - [ - 7.423535, - 43.73324 - ], - [ - 7.423668, - 43.732857 - ], - [ - 7.423455, - 43.73282 - ], - [ - 7.423356, - 43.73307 - ], - [ - 7.423199, - 43.733135 - ], - [ - 7.423043, - 43.73321 - ], - [ - 7.422855, - 43.73337 - ], - [ - 7.422744, - 43.733517 - ], - [ - 7.422694, - 43.733624 - ], - [ - 7.422659, - 43.73374 - ], - [ - 7.422578, - 43.734074 - ], - [ - 7.422604, - 43.734188 - ], - [ - 7.422541, - 43.734425 - ], - [ - 7.422509, - 43.73456 - ], - [ - 7.422697, - 43.73458 - ], - [ - 7.422847, - 43.734077 - ], - [ - 7.422881, - 43.73408 - ], - [ - 7.422756, - 43.73459 - ], - [ - 7.423254, - 43.73466 - ], - [ - 7.423413, - 43.73412 - ], - [ - 7.423512, - 43.73413 - ], - [ - 7.423351, - 43.734753 - ], - [ - 7.42326, - 43.73506 - ], - [ - 7.423223, - 43.73522 - ], - [ - 7.423173, - 43.735416 - ], - [ - 7.423072, - 43.7354 - ], - [ - 7.4232, - 43.734898 - ], - [ - 7.423191, - 43.734848 - ], - [ - 7.422693, - 43.734776 - ], - [ - 7.42256, - 43.7353 - ], - [ - 7.422513, - 43.73529 - ], - [ - 7.422655, - 43.734776 - ], - [ - 7.422423, - 43.734737 - ], - [ - 7.422299, - 43.735203 - ], - [ - 7.422233, - 43.735435 - ], - [ - 7.42215, - 43.735508 - ], - [ - 7.422032, - 43.735546 - ], - [ - 7.421888, - 43.735535 - ], - [ - 7.421866, - 43.735683 - ], - [ - 7.421872, - 43.735928 - ], - [ - 7.421975, - 43.736275 - ], - [ - 7.422107, - 43.73651 - ], - [ - 7.422269, - 43.73673 - ], - [ - 7.42493, - 43.737007 - ], - [ - 7.425109, - 43.73692 - ], - [ - 7.425631, - 43.736973 - ], - [ - 7.425674, - 43.736706 - ], - [ - 7.425721, - 43.736477 - ], - [ - 7.425736, - 43.736366 - ], - [ - 7.425787, - 43.736378 - ], - [ - 7.425655, - 43.737087 - ], - [ - 7.426748, - 43.73719 - ], - [ - 7.426931, - 43.736523 - ], - [ - 7.427054, - 43.736073 - ], - [ - 7.427052, - 43.73606 - ], - [ - 7.427027, - 43.736053 - ], - [ - 7.426908, - 43.73604 - ], - [ - 7.426963, - 43.73584 - ], - [ - 7.427089, - 43.73575 - ], - [ - 7.427368, - 43.735783 - ], - [ - 7.427427, - 43.735886 - ], - [ - 7.427096, - 43.737133 - ], - [ - 7.429107, - 43.73754 - ], - [ - 7.429795, - 43.736343 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0001", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "ec32caa6-ddc6-4f5e-a815-654782b31abb", - "name": "10.100.0.2", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427394, - 43.73243 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.427394, - 43.73243 - ], - [ - 7.427393, - 43.732353 - ], - [ - 7.427373, - 43.732296 - ], - [ - 7.427259, - 43.73213 - ], - [ - 7.427153, - 43.73204 - ], - [ - 7.42705, - 43.73197 - ], - [ - 7.426688, - 43.73188 - ], - [ - 7.426318, - 43.731792 - ], - [ - 7.425634, - 43.731598 - ], - [ - 7.425535, - 43.731598 - ], - [ - 7.425433, - 43.73161 - ], - [ - 7.425336, - 43.73161 - ], - [ - 7.425151, - 43.731556 - ], - [ - 7.424628, - 43.73141 - ], - [ - 7.424135, - 43.731285 - ], - [ - 7.423933, - 43.73179 - ], - [ - 7.423861, - 43.731827 - ], - [ - 7.423566, - 43.73177 - ], - [ - 7.423389, - 43.731663 - ], - [ - 7.423225, - 43.73154 - ], - [ - 7.422997, - 43.731396 - ], - [ - 7.422858, - 43.731335 - ], - [ - 7.422794, - 43.731304 - ], - [ - 7.422718, - 43.731285 - ], - [ - 7.422579, - 43.731262 - ], - [ - 7.422418, - 43.731255 - ], - [ - 7.422195, - 43.731262 - ], - [ - 7.421973, - 43.731285 - ], - [ - 7.421833, - 43.731297 - ], - [ - 7.421705, - 43.73133 - ], - [ - 7.421624, - 43.731327 - ], - [ - 7.421565, - 43.731323 - ], - [ - 7.421501, - 43.731297 - ], - [ - 7.421483, - 43.731228 - ], - [ - 7.421468, - 43.73116 - ], - [ - 7.421443, - 43.73103 - ], - [ - 7.421409, - 43.73089 - ], - [ - 7.421372, - 43.73075 - ], - [ - 7.421435, - 43.730694 - ], - [ - 7.421506, - 43.730682 - ], - [ - 7.421731, - 43.73061 - ], - [ - 7.421821, - 43.73055 - ], - [ - 7.421992, - 43.730377 - ], - [ - 7.42217, - 43.730206 - ], - [ - 7.422477, - 43.729942 - ], - [ - 7.422555, - 43.729897 - ], - [ - 7.422657, - 43.729866 - ], - [ - 7.422801, - 43.729847 - ], - [ - 7.422969, - 43.729862 - ], - [ - 7.423137, - 43.72991 - ], - [ - 7.423295, - 43.72997 - ], - [ - 7.423507, - 43.73005 - ], - [ - 7.423712, - 43.730137 - ], - [ - 7.42411, - 43.73032 - ], - [ - 7.424566, - 43.730526 - ], - [ - 7.424802, - 43.730633 - ], - [ - 7.42501, - 43.730743 - ], - [ - 7.425791, - 43.731174 - ], - [ - 7.426482, - 43.73159 - ], - [ - 7.426963, - 43.731895 - ], - [ - 7.427077, - 43.731968 - ], - [ - 7.427186, - 43.732048 - ], - [ - 7.42729, - 43.73213 - ], - [ - 7.427362, - 43.732227 - ], - [ - 7.427418, - 43.732353 - ], - [ - 7.427415, - 43.732384 - ], - [ - 7.427411, - 43.732407 - ], - [ - 7.427394, - 43.73243 - ], - [ - 7.427383, - 43.732483 - ], - [ - 7.427288, - 43.732548 - ], - [ - 7.427203, - 43.73256 - ], - [ - 7.427085, - 43.732555 - ], - [ - 7.426884, - 43.732517 - ], - [ - 7.425842, - 43.73234 - ], - [ - 7.424798, - 43.732162 - ], - [ - 7.424667, - 43.73214 - ], - [ - 7.42444, - 43.7321 - ], - [ - 7.424072, - 43.732044 - ], - [ - 7.423361, - 43.731934 - ], - [ - 7.423054, - 43.7319 - ], - [ - 7.42274, - 43.731876 - ], - [ - 7.422414, - 43.73187 - ], - [ - 7.422089, - 43.731876 - ], - [ - 7.421887, - 43.731884 - ], - [ - 7.421699, - 43.731895 - ], - [ - 7.421429, - 43.731926 - ], - [ - 7.421102, - 43.73198 - ], - [ - 7.420582, - 43.732067 - ], - [ - 7.420058, - 43.732174 - ], - [ - 7.419941, - 43.7322 - ], - [ - 7.419804, - 43.732254 - ], - [ - 7.419237, - 43.732403 - ], - [ - 7.419181, - 43.732418 - ], - [ - 7.419127, - 43.73245 - ], - [ - 7.419071, - 43.73248 - ], - [ - 7.419063, - 43.732513 - ], - [ - 7.419017, - 43.732548 - ], - [ - 7.418957, - 43.73256 - ], - [ - 7.418904, - 43.732555 - ], - [ - 7.418859, - 43.732525 - ], - [ - 7.418795, - 43.73252 - ], - [ - 7.418733, - 43.732536 - ], - [ - 7.418541, - 43.73259 - ], - [ - 7.418358, - 43.732643 - ], - [ - 7.418179, - 43.732704 - ], - [ - 7.417854, - 43.732807 - ], - [ - 7.417669, - 43.732845 - ], - [ - 7.417487, - 43.732895 - ], - [ - 7.417425, - 43.732925 - ], - [ - 7.417405, - 43.73295 - ], - [ - 7.417605, - 43.73323 - ], - [ - 7.417778, - 43.733547 - ], - [ - 7.417915, - 43.733955 - ], - [ - 7.41809, - 43.734455 - ], - [ - 7.418133, - 43.734684 - ], - [ - 7.418188, - 43.7349 - ], - [ - 7.418289, - 43.735046 - ], - [ - 7.4184, - 43.735184 - ], - [ - 7.418585, - 43.735382 - ], - [ - 7.418671, - 43.735455 - ], - [ - 7.418768, - 43.73552 - ], - [ - 7.419179, - 43.735825 - ], - [ - 7.419366, - 43.73598 - ], - [ - 7.419533, - 43.73615 - ], - [ - 7.419881, - 43.736473 - ], - [ - 7.420241, - 43.736786 - ], - [ - 7.420468, - 43.73692 - ], - [ - 7.420685, - 43.73703 - ], - [ - 7.420944, - 43.73716 - ], - [ - 7.421228, - 43.737274 - ], - [ - 7.421522, - 43.737373 - ], - [ - 7.421826, - 43.73747 - ], - [ - 7.422055, - 43.73752 - ], - [ - 7.422283, - 43.73756 - ], - [ - 7.422403, - 43.73758 - ], - [ - 7.422472, - 43.737526 - ], - [ - 7.422561, - 43.737473 - ], - [ - 7.422688, - 43.737442 - ], - [ - 7.422814, - 43.737434 - ], - [ - 7.423132, - 43.737423 - ], - [ - 7.423523, - 43.737408 - ], - [ - 7.423972, - 43.737442 - ], - [ - 7.424034, - 43.73743 - ], - [ - 7.424064, - 43.73741 - ], - [ - 7.424055, - 43.737385 - ], - [ - 7.424028, - 43.73735 - ], - [ - 7.423706, - 43.737286 - ], - [ - 7.423228, - 43.737183 - ], - [ - 7.422826, - 43.737103 - ], - [ - 7.42263, - 43.737076 - ], - [ - 7.422426, - 43.737053 - ], - [ - 7.42209, - 43.73702 - ], - [ - 7.421949, - 43.73701 - ], - [ - 7.421754, - 43.737003 - ], - [ - 7.421639, - 43.736984 - ], - [ - 7.421527, - 43.73696 - ], - [ - 7.421421, - 43.73692 - ], - [ - 7.421323, - 43.73687 - ], - [ - 7.421228, - 43.736813 - ], - [ - 7.421133, - 43.73675 - ], - [ - 7.421065, - 43.736702 - ], - [ - 7.421003, - 43.73664 - ], - [ - 7.420847, - 43.73652 - ], - [ - 7.420513, - 43.736244 - ], - [ - 7.420098, - 43.7359 - ], - [ - 7.419858, - 43.735672 - ], - [ - 7.41939, - 43.73522 - ], - [ - 7.41916, - 43.734985 - ], - [ - 7.418728, - 43.734505 - ], - [ - 7.418581, - 43.734325 - ], - [ - 7.418515, - 43.73424 - ], - [ - 7.41849, - 43.734142 - ], - [ - 7.418601, - 43.733677 - ], - [ - 7.418681, - 43.73336 - ], - [ - 7.418772, - 43.733047 - ], - [ - 7.418813, - 43.732906 - ], - [ - 7.418878, - 43.732742 - ], - [ - 7.418915, - 43.73265 - ], - [ - 7.41891, - 43.732605 - ], - [ - 7.418904, - 43.732555 - ], - [ - 7.418859, - 43.732525 - ], - [ - 7.418849, - 43.73247 - ], - [ - 7.418872, - 43.732426 - ], - [ - 7.418902, - 43.73241 - ], - [ - 7.418951, - 43.732403 - ], - [ - 7.419008, - 43.732403 - ], - [ - 7.419118, - 43.73241 - ], - [ - 7.419225, - 43.73239 - ], - [ - 7.4198, - 43.73224 - ], - [ - 7.419934, - 43.732185 - ], - [ - 7.420066, - 43.73216 - ], - [ - 7.420587, - 43.73205 - ], - [ - 7.421116, - 43.73196 - ], - [ - 7.421403, - 43.73192 - ], - [ - 7.421688, - 43.731884 - ], - [ - 7.422084, - 43.73186 - ], - [ - 7.422473, - 43.731853 - ], - [ - 7.422827, - 43.73187 - ], - [ - 7.42319, - 43.731903 - ], - [ - 7.423363, - 43.731922 - ], - [ - 7.423535, - 43.73195 - ], - [ - 7.423881, - 43.732002 - ], - [ - 7.425014, - 43.73219 - ], - [ - 7.425588, - 43.73229 - ], - [ - 7.426168, - 43.732388 - ], - [ - 7.426901, - 43.732506 - ], - [ - 7.427068, - 43.732536 - ], - [ - 7.427147, - 43.732548 - ], - [ - 7.427227, - 43.732548 - ], - [ - 7.427279, - 43.732533 - ], - [ - 7.427352, - 43.73249 - ], - [ - 7.427394, - 43.73243 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640002", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "bc76299f-1394-46d7-ab61-1791c883718d", - "name": "wifi-ap-4", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C04040404" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427702, - 43.733475 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "4a0a69b3-7c5a-475e-a34d-a0c9177e972e", - "name": "wifi-ap-3", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C03030303" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.422327, - 43.73342 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "66938f56-4e52-47e2-baa2-501f026e4eb3", - "name": "wifi-ap-5", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C05050505" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421984, - 43.735027 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "b50df04b-c3bd-46c4-a7d4-5de55e74b444", - "name": "5g-small-cell-4", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "404040404" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.419741, - 43.732998 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "bddd61c9-6ddd-4f7e-9082-0d004fced7ab", - "name": "5g-small-cell-5", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "505050505" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421158, - 43.732063 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "8e0dad0d-72c9-4b6d-850b-06b02243b1d3", - "name": "5g-small-cell-6", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "606060606" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421865, - 43.733368 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "318f3796-4091-409e-8767-44ba36600a34", - "name": "5g-small-cell-7", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "707070707" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.420943, - 43.734097 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "7d3688cc-0dda-48b1-a171-b817c176e053", - "name": "5g-small-cell-8", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "808080808" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.425063, - 43.732555 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "91691048-64bb-4d2f-917f-4219a95881c0", - "name": "5g-small-cell-9", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "909090909" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.427027, - 43.73308 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - }, - { - "id": "472c9927-800a-46e9-9d62-d08b09080dd5", - "name": "zone03", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "darkorange" - }, - "networkLocations": [ - { - "id": "zone03-DEFAULT", - "name": "zone03-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "e4ce8267-5433-4b2b-aa5a-9a40de76b685", - "name": "4g-macro-cell-6", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "6060606" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421007, - 43.737087 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "c3bc8d8d-170b-45bb-93a9-8ce658571321", - "name": "10.1.0.1", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.421802, - 43.736515 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010001", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "663df9f0-57af-43aa-ba2e-e45a4b2f3c28", - "name": "4g-macro-cell-7", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "7070707" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.426414, - 43.739445 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "190a7ff6-7b77-479a-8f23-1f5c7f935914", - "name": "wifi-ap-6", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C06060606" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.425288, - 43.73727 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "99e67725-25b1-4274-8b05-fe253b0e5ee6", - "name": "wifi-ap-7", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C07070707" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.429639, - 43.739006 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "a3067167-cdaf-4264-9e32-abfc0ede0564", - "name": "5g-small-cell-10", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "A0A0A0A0A" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.426736, - 43.73771 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "2c2ba76c-8880-4c5b-a949-a161713910f4", - "name": "5g-small-cell-11", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "B0B0B0B0B" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.42856, - 43.738018 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "d9ca5e58-15fe-4161-840f-f3155db3729b", - "name": "5g-small-cell-12", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "C0C0C0C0C" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.42738, - 43.739075 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - }, - { - "id": "d56c4e67-0e0f-4456-9431-290de7b674c8", - "name": "zone04", - "type": "ZONE", - "netChar": { - "latency": 5, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "meta": { - "display.map.color": "limegreen" - }, - "networkLocations": [ - { - "id": "zone04-DEFAULT", - "name": "zone04-DEFAULT", - "type": "DEFAULT", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "geoData": null, - "physicalLocations": null - }, - { - "id": "fc4d9ec8-ebb6-4b5d-a281-bb74af729b4a", - "name": "4g-macro-cell-8", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "8080808" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.429504, - 43.74301 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "b73b3ef5-dba0-44af-a648-bbda7191c249", - "name": "4g-macro-cell-9", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "9090909" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.432551, - 43.746544 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "e1d47a4b-0664-4915-81ea-eb0d70af15a7", - "name": "4g-macro-cell-10", - "type": "POA-4G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa4GConfig": { - "cellId": "A0A0A0A" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.437573, - 43.748993 - ] - }, - "radius": 400, - "path": null, - "eopMode": null, - "velocity": null - }, - "physicalLocations": [ - { - "id": "4e423f57-daef-4c1c-b30e-45e88e3c9366", - "name": "10.1.0.4", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438248, - 43.74835 - ] - }, - "radius": null, - "path": null, - "eopMode": null, - "velocity": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-ios-videocam" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A010004", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "824cf1bf-f91d-44c2-906d-e939fa3339cd", - "name": "10.10.0.2", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438755, - 43.748512 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.438755, - 43.748512 - ], - [ - 7.438267, - 43.748566 - ], - [ - 7.437795, - 43.7484 - ], - [ - 7.437684, - 43.748253 - ], - [ - 7.437555, - 43.748203 - ], - [ - 7.437341, - 43.748203 - ], - [ - 7.43673, - 43.747974 - ], - [ - 7.436623, - 43.747704 - ], - [ - 7.436237, - 43.747643 - ], - [ - 7.435969, - 43.74743 - ], - [ - 7.435841, - 43.74717 - ], - [ - 7.435504, - 43.74695 - ], - [ - 7.434829, - 43.74691 - ], - [ - 7.434293, - 43.746685 - ], - [ - 7.433882, - 43.746166 - ], - [ - 7.433431, - 43.746063 - ], - [ - 7.432831, - 43.745686 - ], - [ - 7.432585, - 43.745182 - ], - [ - 7.432767, - 43.744633 - ], - [ - 7.432552, - 43.744244 - ], - [ - 7.432617, - 43.743763 - ], - [ - 7.432305, - 43.743305 - ], - [ - 7.431682, - 43.742676 - ], - [ - 7.431136, - 43.74201 - ], - [ - 7.430524, - 43.741123 - ], - [ - 7.430432, - 43.740696 - ], - [ - 7.430382, - 43.740437 - ], - [ - 7.430384, - 43.74021 - ], - [ - 7.430288, - 43.739372 - ], - [ - 7.429773, - 43.73849 - ], - [ - 7.429976, - 43.738228 - ], - [ - 7.429654, - 43.73791 - ], - [ - 7.429371, - 43.73765 - ], - [ - 7.430027, - 43.736446 - ] - ] - }, - "eopMode": "REVERSE", - "velocity": 9, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-walk" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A0A0002", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - }, - { - "id": "097f79f4-bf76-4be0-be28-5acc3bdb0dba", - "name": "10.100.0.4", - "type": "UE", - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438357, - 43.74781 - ] - }, - "path": { - "type": "LineString", - "coordinates": [ - [ - 7.438357, - 43.74781 - ], - [ - 7.438296, - 43.747852 - ], - [ - 7.438229, - 43.74791 - ], - [ - 7.43813, - 43.74803 - ], - [ - 7.438074, - 43.748108 - ], - [ - 7.438025, - 43.748264 - ], - [ - 7.437991, - 43.748398 - ], - [ - 7.437937, - 43.748512 - ], - [ - 7.437883, - 43.74859 - ], - [ - 7.437741, - 43.74875 - ], - [ - 7.437593, - 43.748924 - ], - [ - 7.437481, - 43.74905 - ], - [ - 7.437416, - 43.74911 - ], - [ - 7.437419, - 43.749146 - ], - [ - 7.43739, - 43.749184 - ], - [ - 7.437339, - 43.749203 - ], - [ - 7.437285, - 43.74919 - ], - [ - 7.437256, - 43.74917 - ], - [ - 7.43555, - 43.74844 - ], - [ - 7.435097, - 43.748184 - ], - [ - 7.435008, - 43.748077 - ], - [ - 7.434885, - 43.747814 - ], - [ - 7.434788, - 43.747723 - ], - [ - 7.433391, - 43.74693 - ], - [ - 7.433243, - 43.74679 - ], - [ - 7.43301, - 43.746536 - ], - [ - 7.432804, - 43.74642 - ], - [ - 7.432353, - 43.74604 - ], - [ - 7.431985, - 43.74559 - ], - [ - 7.431216, - 43.74428 - ], - [ - 7.430556, - 43.74307 - ], - [ - 7.430336, - 43.741848 - ], - [ - 7.430226, - 43.74178 - ], - [ - 7.430038, - 43.741756 - ], - [ - 7.429864, - 43.741695 - ], - [ - 7.429766, - 43.74158 - ], - [ - 7.429731, - 43.741432 - ], - [ - 7.429797, - 43.741234 - ], - [ - 7.42986, - 43.74115 - ], - [ - 7.42995, - 43.74109 - ], - [ - 7.430094, - 43.74108 - ], - [ - 7.430255, - 43.74114 - ], - [ - 7.430392, - 43.74126 - ], - [ - 7.430475, - 43.7415 - ], - [ - 7.430642, - 43.742832 - ], - [ - 7.430717, - 43.74308 - ], - [ - 7.432086, - 43.745556 - ], - [ - 7.432441, - 43.74601 - ], - [ - 7.433179, - 43.746563 - ], - [ - 7.434716, - 43.747498 - ], - [ - 7.434871, - 43.74766 - ], - [ - 7.435108, - 43.74807 - ], - [ - 7.435305, - 43.74823 - ], - [ - 7.435923, - 43.748547 - ], - [ - 7.436871, - 43.748955 - ], - [ - 7.437138, - 43.749054 - ], - [ - 7.437248, - 43.74907 - ], - [ - 7.437368, - 43.749058 - ], - [ - 7.43747, - 43.74894 - ], - [ - 7.437652, - 43.748714 - ], - [ - 7.437765, - 43.74859 - ], - [ - 7.437835, - 43.748512 - ], - [ - 7.437883, - 43.74838 - ], - [ - 7.437918, - 43.74817 - ], - [ - 7.437931, - 43.748116 - ], - [ - 7.438001, - 43.747997 - ], - [ - 7.438098, - 43.747868 - ], - [ - 7.438138, - 43.747826 - ], - [ - 7.438159, - 43.74777 - ], - [ - 7.438159, - 43.747692 - ], - [ - 7.438173, - 43.747616 - ], - [ - 7.438205, - 43.747566 - ], - [ - 7.438264, - 43.747528 - ], - [ - 7.438347, - 43.747513 - ], - [ - 7.438443, - 43.74752 - ], - [ - 7.438505, - 43.74755 - ], - [ - 7.438548, - 43.7476 - ], - [ - 7.438569, - 43.747654 - ], - [ - 7.438545, - 43.747726 - ], - [ - 7.438494, - 43.747772 - ], - [ - 7.438431, - 43.7478 - ], - [ - 7.438357, - 43.74781 - ] - ] - }, - "eopMode": "LOOP", - "velocity": 20, - "radius": null - }, - "wireless": true, - "wirelessType": "wifi,5g,4g", - "meta": { - "display.map.icon": "ion-android-car" - }, - "netChar": { - "throughputDl": 1000, - "throughputUl": 1000, - "latency": null, - "latencyVariation": null, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "macId": "005C0A640004", - "isExternal": null, - "networkLocationsInRange": null, - "connected": null, - "userMeta": null, - "processes": null, - "linkLatency": null, - "linkLatencyVariation": null, - "linkThroughput": null, - "linkPacketLoss": null - } - ], - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa5GConfig": null, - "poaWifiConfig": null - }, - { - "id": "4a3da8ed-e833-48bf-b833-2c67512e53cf", - "name": "wifi-ap-8", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C08080808" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.431644, - 43.746662 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "d1cc062f-bb7f-40cf-91af-5593376f3b4d", - "name": "wifi-ap-9", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C09090909" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.435867, - 43.748856 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "c4df58ab-17a2-49e0-b5fa-531a6ce15baf", - "name": "wifi-ap-10", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C0A0A0A0A" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438055, - 43.748734 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - }, - { - "id": "3fbf9ec8-3932-455c-8352-0d06b7bb7a15", - "name": "5g-small-cell-13", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "D0D0D0D0D" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.431907, - 43.74543 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "80e3b677-56cb-495c-b798-e19f96d491b9", - "name": "5g-small-cell-14", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "E0E0E0E0E" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.433109, - 43.746513 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "dcb66c87-1854-4c8e-ae88-72b14df9aaff", - "name": "5g-small-cell-15", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "F0F0F0F0F" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.434376, - 43.747337 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "10b048d1-2fba-486d-89a0-d1a3191b90b4", - "name": "5g-small-cell-16", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "010101010" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.435985, - 43.747784 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "35602880-9727-4ed6-8f53-fe0ffab22cb4", - "name": "5g-small-cell-17", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "111111111" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.437487, - 43.7487 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "4aef0f33-51d2-472c-8441-b5c55f0de626", - "name": "5g-small-cell-18", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "212121212" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.438839, - 43.749706 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "3396c6ae-28f8-4c8b-ba12-9991bddeed61", - "name": "5g-small-cell-19", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "313131313" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.4371, - 43.750282 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "246f3830-3b56-4359-9452-b17f34426888", - "name": "5g-small-cell-20", - "type": "POA-5G", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poa5GConfig": { - "cellId": "414141414" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.436006, - 43.749382 - ] - }, - "radius": 100, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poaWifiConfig": null, - "physicalLocations": null - }, - { - "id": "da565fc0-0d1e-47a1-944e-2d77441051de", - "name": "wifi-ap-11", - "type": "POA-WIFI", - "netChar": { - "latency": 1, - "latencyVariation": 1, - "throughputDl": 1000, - "throughputUl": 1000, - "latencyDistribution": null, - "throughput": null, - "packetLoss": null - }, - "poaWifiConfig": { - "macId": "005C0B0B0B0B" - }, - "geoData": { - "location": { - "type": "Point", - "coordinates": [ - 7.43891, - 43.74822 - ] - }, - "radius": 50, - "path": null, - "eopMode": null, - "velocity": null - }, - "terminalLinkLatency": null, - "terminalLinkLatencyVariation": null, - "terminalLinkThroughput": null, - "terminalLinkPacketLoss": null, - "meta": null, - "userMeta": null, - "cellularPoaConfig": null, - "poa4GConfig": null, - "poa5GConfig": null, - "physicalLocations": null - } - ], - "interFogLatency": null, - "interFogLatencyVariation": null, - "interFogThroughput": null, - "interFogPacketLoss": null, - "interEdgeLatency": null, - "interEdgeLatencyVariation": null, - "interEdgeThroughput": null, - "interEdgePacketLoss": null, - "edgeFogLatency": null, - "edgeFogLatencyVariation": null, - "edgeFogThroughput": null, - "edgeFogPacketLoss": null, - "userMeta": null - } - ], - "interZoneLatency": null, - "interZoneLatencyVariation": null, - "interZoneThroughput": null, - "interZonePacketLoss": null, - "meta": null, - "userMeta": null - } - ], - "interDomainLatency": null, - "interDomainLatencyVariation": null, - "interDomainThroughput": null, - "interDomainPacketLoss": null, - "meta": null - }, - "id": null, - "description": null, - "config": null -} -- GitLab From f62b957083bb1ab1a0c5b1d3b0a24f2d59067be8 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 11 Dec 2020 17:38:49 -0500 Subject: [PATCH 005/194] added possibility to add yaml to meep and delete when done, so no trace of systemTest --- test/system/go.mod | 3 +- test/system/go.sum | 3 + test/system/loc-serv-system-test.yaml | 1244 +++++++++++++++++++++++++ test/system/loc-serv_test.go | 22 +- test/system/system-test.yaml | 594 ------------ test/system/systemTest.go | 21 +- 6 files changed, 1287 insertions(+), 600 deletions(-) create mode 100644 test/system/loc-serv-system-test.yaml delete mode 100644 test/system/system-test.yaml diff --git a/test/system/go.mod b/test/system/go.mod index 70dabcfe6..594efc1ee 100644 --- a/test/system/go.mod +++ b/test/system/go.mod @@ -19,10 +19,11 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client v0.0.0 + github.com/ghodss/yaml v1.0.0 github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.4 golang.org/x/sys v0.0.0-20190412213103-97732733099d // indirect - gopkg.in/yaml.v2 v2.2.2 // indirect + gopkg.in/yaml.v2 v2.2.2 ) replace ( diff --git a/test/system/go.sum b/test/system/go.sum index dc3346709..b70b90922 100644 --- a/test/system/go.sum +++ b/test/system/go.sum @@ -15,6 +15,8 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -65,4 +67,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/test/system/loc-serv-system-test.yaml b/test/system/loc-serv-system-test.yaml new file mode 100644 index 000000000..ab45fb677 --- /dev/null +++ b/test/system/loc-serv-system-test.yaml @@ -0,0 +1,1244 @@ +version: 1.5.6 +name: loc-serv-system-test +deployment: + netChar: + latency: 50 + latencyVariation: 10 + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + throughput: null + packetLoss: null + domains: + - + id: PUBLIC + name: PUBLIC + type: PUBLIC + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + zones: + - + id: PUBLIC-COMMON + name: PUBLIC-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + networkLocations: + - + id: PUBLIC-COMMON-DEFAULT + name: PUBLIC-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + cellularDomainConfig: null + - + id: 13411898-c7e1-472d-bdf7-c4afbefe4613 + name: operator-cell1 + type: OPERATOR-CELLULAR + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + cellularDomainConfig: + mnc: '001' + mcc: '001' + defaultCellId: FFFFFFF + zones: + - + id: operator-cell1-COMMON + name: operator-cell1-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + networkLocations: + - + id: operator-cell1-COMMON-DEFAULT + name: operator-cell1-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + - + id: dcf59ab0-cb3d-4dbd-8946-b522eeed685b + name: zone1 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone1-DEFAULT + name: zone1-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: b412ccca-402a-4d9e-9f68-fca01bfdc2f9 + name: poa-4g1 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000001' + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + physicalLocations: + - + id: abc18c96-1015-4dee-b32d-cac04ea5db36 + name: ue1 + type: UE + geoData: + eopMode: LOOP + location: null + radius: null + path: null + velocity: null + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '111111111111' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + - + id: cb9bc9de-6aef-4b57-a540-e256efb17f04 + name: ue2 + type: UE + geoData: {location: null, radius: null, path: null, eopMode: null, velocity: null} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '222222222222' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + - + id: d8107440-c83b-499d-81cc-b6cf68b76e95 + name: ue3 + type: UE + geoData: {location: null, radius: null, path: null, eopMode: null, velocity: null} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '333333333333' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + - + id: 10970d7b-8fbd-4d2f-a6de-00b118ad3dc2 + name: ue4 + type: UE + geoData: {location: null, radius: null, path: null, eopMode: null, velocity: null} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '444444444444' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + - + id: 223933af-b399-41ca-999a-5e798bf6eb1d + name: poa-4g2 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000002' + geoData: + location: + type: Point + coordinates: + - 7.415917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 6a0e53da-f162-49cf-8c7b-0f1df0f2ccdf + name: poa1 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 3bd21819-c104-4401-9ac7-b945461d3f87 + name: poa-5g1 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000001' + geoData: + location: + type: Point + coordinates: + - 7.411916 + - 43.733494 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 098419d2-e586-49ae-8605-c577616a8b50 + name: poa-wifi1 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000001 + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: a20bad45-bf09-426f-aed9-e55587c737db + name: zone2 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone2-DEFAULT + name: zone2-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 5c64c906-a92b-4898-b861-18a13b3fd65c + name: poa-4g3 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000003' + geoData: + location: + type: Point + coordinates: + - 7.417917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: e7b158ee-fbc5-4362-854a-da36c4ca22bc + name: poa-5g2 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000002' + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 5b21944f-ea19-4342-9485-5118a3b18435 + name: poa-5g3 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000003' + geoData: + location: + type: Point + coordinates: + - 7.421917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: d89d4ea2-6dea-40ce-b6ed-9640dcfd9422 + name: poa2 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: df2fcd56-217f-4f61-a199-e3c72395a4e9 + name: poa-wifi2 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000002 + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 432c8759-b277-48dd-bc9a-d6d702fa68d6 + name: zone3 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone3-DEFAULT + name: zone3-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 1c9fc733-3d3e-4d40-8571-bde025e63728 + name: poa-wifi3 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000003 + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: d626d8dc-21cb-44ed-acbc-e6669fe28245 + name: poa3 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: b1470f5e-2556-432c-b8ca-842037a3ab9d + name: poa-wifi4 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000004 + geoData: + location: + type: Point + coordinates: + - 7.427917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: 3a1315a1-26f9-4259-9a4b-cf38f2af0c7f + name: poa-5g4 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000004' + geoData: + location: + type: Point + coordinates: + - 7.423917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: ea326a41-9063-4f28-9d19-96802418bd51 + name: poa-4g4 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000004' + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 143fa19f-52d4-4eec-9edc-098f06b4414d + name: zone4 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone4-DEFAULT + name: zone4-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 81624ea4-a1d4-42d7-9263-42b93b9391cf + name: poa-wifi5 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000005 + geoData: + location: + type: Point + coordinates: + - 7.429917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: 4fe82b81-b9dc-45f5-b816-e5927e82747c + name: poa4 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 1f9f108b-5cec-47a4-8569-6afd2732ca6e + name: poa5 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.433917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: cef4bf85-164e-4232-94b8-ca5edec1e1d1 + name: poa-4g5 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 73fee2c4-284f-47ab-993d-273849dba667 + name: poa-5g5 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 48d182c3-3728-46d2-9b0f-22a110183eee + name: zone5 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone5-DEFAULT + name: zone5-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 5ad4f50a-52f5-4b7f-b7d9-573d58afad3d + name: poa6 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.435917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + interDomainLatency: null + interDomainLatencyVariation: null + interDomainThroughput: null + interDomainPacketLoss: null + meta: null + userMeta: null +id: null +description: null +config: null + diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index 7ab315ddf..5d08c5c07 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -42,7 +42,7 @@ func init() { func initialiseTest() { log.Info("activating Scenario") - err := activateScenario("system-test") + err := activateScenario("loc-serv-system-test") if err != nil { log.Fatal("Scenario cannot be activated: ", err) } @@ -62,6 +62,17 @@ func clearUpTest() { time.Sleep(1000 * time.Millisecond) } +//no really a test, but loading the scenarios needed that will be used in the following tests +//deletion of those scenarios at the end +func Test_loc_serv_load_scenarios(t *testing.T) { + + // no override if the name is already in the DB.. security not to override something important + err := createScenario("loc-serv-system-test", "loc-serv-system-test.yaml") + if err != nil { + t.Fatal("cannot create scenario :", err) + } +} + func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) @@ -78,7 +89,7 @@ func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) if err != nil { - t.Fatalf("Subscription failed") + t.Fatal("Subscription failed: ", err) } log.Info("moving asset") @@ -2472,7 +2483,12 @@ func Test_zoneStatus_zone_AP_threshold(t *testing.T) { } //not a real test, just the last test that stops the system test environment -func Test_stopSystemTest(t *testing.T) { +func Test_loc_serv_stopSystemTest(t *testing.T) { + err := deleteScenario("loc-serv-system-test") + if err != nil { + log.Error("cannot delete scenario :", err) + } + stopSystemTest() } diff --git a/test/system/system-test.yaml b/test/system/system-test.yaml deleted file mode 100644 index 568707ab5..000000000 --- a/test/system/system-test.yaml +++ /dev/null @@ -1,594 +0,0 @@ -version: 1.5.6 -name: system-test -deployment: - netChar: - latency: 50 - latencyVariation: 10 - latencyDistribution: Normal - throughputDl: 1000 - throughputUl: 1000 - domains: - - - id: PUBLIC - name: PUBLIC - type: PUBLIC - netChar: - latency: 6 - latencyVariation: 2 - throughputDl: 1000 - throughputUl: 1000 - zones: - - - id: PUBLIC-COMMON - name: PUBLIC-COMMON - type: COMMON - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - networkLocations: - - - id: PUBLIC-COMMON-DEFAULT - name: PUBLIC-COMMON-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: 13411898-c7e1-472d-bdf7-c4afbefe4613 - name: operator-cell1 - type: OPERATOR-CELLULAR - netChar: - latency: 6 - latencyVariation: 2 - throughputDl: 1000 - throughputUl: 1000 - cellularDomainConfig: - mnc: '001' - mcc: '001' - defaultCellId: FFFFFFF - zones: - - - id: operator-cell1-COMMON - name: operator-cell1-COMMON - type: COMMON - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - networkLocations: - - - id: operator-cell1-COMMON-DEFAULT - name: operator-cell1-COMMON-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: dcf59ab0-cb3d-4dbd-8946-b522eeed685b - name: zone1 - type: ZONE - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - meta: - display.map.color: "" - networkLocations: - - - id: zone1-DEFAULT - name: zone1-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: b412ccca-402a-4d9e-9f68-fca01bfdc2f9 - name: poa-4g1 - type: POA-4G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa4GConfig: - cellId: '4000001' - geoData: - location: - type: Point - coordinates: - - 7.413917 - - 43.733505 - radius: 100 - physicalLocations: - - - id: abc18c96-1015-4dee-b32d-cac04ea5db36 - name: ue1 - type: UE - geoData: - eopMode: LOOP - connected: true - wireless: true - wirelessType: 'wifi,5g,4g,other' - netChar: - throughputDl: 1000 - throughputUl: 1000 - macId: '111111111111' - - - id: cb9bc9de-6aef-4b57-a540-e256efb17f04 - name: ue2 - type: UE - geoData: {} - connected: true - wireless: true - wirelessType: 'wifi,5g,4g,other' - netChar: - throughputDl: 1000 - throughputUl: 1000 - macId: '222222222222' - - - id: d8107440-c83b-499d-81cc-b6cf68b76e95 - name: ue3 - type: UE - geoData: {} - connected: true - wireless: true - wirelessType: 'wifi,5g,4g,other' - netChar: - throughputDl: 1000 - throughputUl: 1000 - macId: '333333333333' - - - id: 10970d7b-8fbd-4d2f-a6de-00b118ad3dc2 - name: ue4 - type: UE - geoData: {} - connected: true - wireless: true - wirelessType: 'wifi,5g,4g,other' - netChar: - throughputDl: 1000 - throughputUl: 1000 - macId: '444444444444' - - - id: 223933af-b399-41ca-999a-5e798bf6eb1d - name: poa-4g2 - type: POA-4G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa4GConfig: - cellId: '4000002' - geoData: - location: - type: Point - coordinates: - - 7.415917 - - 43.733505 - radius: 100 - - - id: 6a0e53da-f162-49cf-8c7b-0f1df0f2ccdf - name: poa1 - type: POA - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - geoData: - location: - type: Point - coordinates: - - 7.413917 - - 43.732006 - radius: 100 - - - id: 3bd21819-c104-4401-9ac7-b945461d3f87 - name: poa-5g1 - type: POA-5G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa5GConfig: - cellId: '500000001' - geoData: - location: - type: Point - coordinates: - - 7.411916 - - 43.733494 - radius: 100 - - - id: 098419d2-e586-49ae-8605-c577616a8b50 - name: poa-wifi1 - type: POA-WIFI - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poaWifiConfig: - macId: a00000000001 - geoData: - location: - type: Point - coordinates: - - 7.413917 - - 43.735004 - radius: 100 - - - id: a20bad45-bf09-426f-aed9-e55587c737db - name: zone2 - type: ZONE - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - meta: - display.map.color: "" - networkLocations: - - - id: zone2-DEFAULT - name: zone2-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: 5c64c906-a92b-4898-b861-18a13b3fd65c - name: poa-4g3 - type: POA-4G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa4GConfig: - cellId: '4000003' - geoData: - location: - type: Point - coordinates: - - 7.417917 - - 43.733505 - radius: 100 - - - id: e7b158ee-fbc5-4362-854a-da36c4ca22bc - name: poa-5g2 - type: POA-5G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa5GConfig: - cellId: '500000002' - geoData: - location: - type: Point - coordinates: - - 7.419917 - - 43.733505 - radius: 100 - - - id: 5b21944f-ea19-4342-9485-5118a3b18435 - name: poa-5g3 - type: POA-5G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa5GConfig: - cellId: '500000003' - geoData: - location: - type: Point - coordinates: - - 7.421917 - - 43.733505 - radius: 100 - - - id: d89d4ea2-6dea-40ce-b6ed-9640dcfd9422 - name: poa2 - type: POA - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - geoData: - location: - type: Point - coordinates: - - 7.419917 - - 43.732006 - radius: 100 - - - id: df2fcd56-217f-4f61-a199-e3c72395a4e9 - name: poa-wifi2 - type: POA-WIFI - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poaWifiConfig: - macId: a00000000002 - geoData: - location: - type: Point - coordinates: - - 7.419917 - - 43.735004 - radius: 100 - - - id: 432c8759-b277-48dd-bc9a-d6d702fa68d6 - name: zone3 - type: ZONE - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - meta: - display.map.color: "" - networkLocations: - - - id: zone3-DEFAULT - name: zone3-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: 1c9fc733-3d3e-4d40-8571-bde025e63728 - name: poa-wifi3 - type: POA-WIFI - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poaWifiConfig: - macId: a00000000003 - geoData: - location: - type: Point - coordinates: - - 7.425917 - - 43.733505 - radius: 100 - - - id: d626d8dc-21cb-44ed-acbc-e6669fe28245 - name: poa3 - type: POA - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - geoData: - location: - type: Point - coordinates: - - 7.425917 - - 43.732006 - radius: 100 - - - id: b1470f5e-2556-432c-b8ca-842037a3ab9d - name: poa-wifi4 - type: POA-WIFI - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poaWifiConfig: - macId: a00000000004 - geoData: - location: - type: Point - coordinates: - - 7.427917 - - 43.733505 - radius: 100 - - - id: 3a1315a1-26f9-4259-9a4b-cf38f2af0c7f - name: poa-5g4 - type: POA-5G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa5GConfig: - cellId: '500000004' - geoData: - location: - type: Point - coordinates: - - 7.423917 - - 43.733505 - radius: 100 - - - id: ea326a41-9063-4f28-9d19-96802418bd51 - name: poa-4g4 - type: POA-4G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa4GConfig: - cellId: '4000004' - geoData: - location: - type: Point - coordinates: - - 7.425917 - - 43.735004 - radius: 100 - - - id: 143fa19f-52d4-4eec-9edc-098f06b4414d - name: zone4 - type: ZONE - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - meta: - display.map.color: "" - networkLocations: - - - id: zone4-DEFAULT - name: zone4-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: 81624ea4-a1d4-42d7-9263-42b93b9391cf - name: poa-wifi5 - type: POA-WIFI - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poaWifiConfig: - macId: a00000000005 - geoData: - location: - type: Point - coordinates: - - 7.429917 - - 43.733505 - radius: 100 - - - id: 4fe82b81-b9dc-45f5-b816-e5927e82747c - name: poa4 - type: POA - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - geoData: - location: - type: Point - coordinates: - - 7.431917 - - 43.733505 - radius: 100 - - - id: 1f9f108b-5cec-47a4-8569-6afd2732ca6e - name: poa5 - type: POA - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - geoData: - location: - type: Point - coordinates: - - 7.433917 - - 43.733505 - radius: 100 - - - id: cef4bf85-164e-4232-94b8-ca5edec1e1d1 - name: poa-4g5 - type: POA-4G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa4GConfig: - cellId: '4000005' - geoData: - location: - type: Point - coordinates: - - 7.431917 - - 43.735004 - radius: 100 - - - id: 73fee2c4-284f-47ab-993d-273849dba667 - name: poa-5g5 - type: POA-5G - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - poa5GConfig: - cellId: '500000005' - geoData: - location: - type: Point - coordinates: - - 7.431917 - - 43.732006 - radius: 100 - - - id: 48d182c3-3728-46d2-9b0f-22a110183eee - name: zone5 - type: ZONE - netChar: - latency: 5 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - meta: - display.map.color: "" - networkLocations: - - - id: zone5-DEFAULT - name: zone5-DEFAULT - type: DEFAULT - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - - - id: 5ad4f50a-52f5-4b7f-b7d9-573d58afad3d - name: poa6 - type: POA - netChar: - latency: 1 - latencyVariation: 1 - throughputDl: 1000 - throughputUl: 1000 - geoData: - location: - type: Point - coordinates: - - 7.435917 - - 43.733505 - radius: 100 - diff --git a/test/system/systemTest.go b/test/system/systemTest.go index 77dc00544..e21605c92 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -2,6 +2,7 @@ package main import ( "context" + "encoding/json" "errors" "io/ioutil" "net/http" @@ -13,6 +14,8 @@ import ( "syscall" "time" + "github.com/ghodss/yaml" + gisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" platformCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client" @@ -152,10 +155,24 @@ func deleteSandbox(name string) error { return nil } -func createScenario(name string) error { +func createScenario(name string, filepath string) error { + + //get the content of the file + content, err := ioutil.ReadFile(filepath) + if err != nil { + log.Error("couldn't read file: ", err) + return err + } + + jsonContent, err := yaml.YAMLToJSON(content) var scenario platformCtrlClient.Scenario - _, err := platformCtrlAppClient.ScenarioConfigurationApi.SetScenario(context.TODO(), name, scenario) + err = json.Unmarshal([]byte(jsonContent), &scenario) + if err != nil { + log.Error("Failed to unmarshal: ", err) + return err + } + _, err = platformCtrlAppClient.ScenarioConfigurationApi.CreateScenario(context.TODO(), name, scenario) if err != nil { log.Error("Failed to create scenario: ", err) return err -- GitLab From f733adb309138116d76ae795e35fd437a537d309 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 11 Dec 2020 17:44:46 -0500 Subject: [PATCH 006/194] updated some error logs --- test/system/loc-serv_test.go | 2 +- test/system/systemTest.go | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index 5d08c5c07..608e7c6ae 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -69,7 +69,7 @@ func Test_loc_serv_load_scenarios(t *testing.T) { // no override if the name is already in the DB.. security not to override something important err := createScenario("loc-serv-system-test", "loc-serv-system-test.yaml") if err != nil { - t.Fatal("cannot create scenario :", err) + t.Fatal("Cannot create scenario, keeping the one already there and continuing testing with it :", err) } } diff --git a/test/system/systemTest.go b/test/system/systemTest.go index e21605c92..5c5bfa7c4 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -157,14 +157,19 @@ func deleteSandbox(name string) error { func createScenario(name string, filepath string) error { - //get the content of the file - content, err := ioutil.ReadFile(filepath) + //get the content of the file, assuming yaml content + yamlContent, err := ioutil.ReadFile(filepath) if err != nil { - log.Error("couldn't read file: ", err) + log.Error("Couldn't read file: ", err) return err } - jsonContent, err := yaml.YAMLToJSON(content) + //converting to json since unmarshal with yaml directly not working well, while json does + jsonContent, err := yaml.YAMLToJSON(yamlContent) + if err != nil { + log.Error("Failed converting yaml to json: ", err) + return err + } var scenario platformCtrlClient.Scenario err = json.Unmarshal([]byte(jsonContent), &scenario) -- GitLab From 57740ec2b82c2e56e1a059d86e10abab651f5aff Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Mon, 14 Dec 2020 09:38:34 -0500 Subject: [PATCH 007/194] copyright headers added --- test/system/loc-serv_test.go | 16 ++++++++++++++++ test/system/systemTest.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index 608e7c6ae..cef419ff9 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package main import ( diff --git a/test/system/systemTest.go b/test/system/systemTest.go index 5c5bfa7c4..306a1f26c 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package main import ( -- GitLab From 11db29be077f71cd655c2a42a70316987b78b1cc Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Mon, 14 Dec 2020 09:45:54 -0500 Subject: [PATCH 008/194] removed unused mec service code that was left in the main code --- test/system/systemTest.go | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/test/system/systemTest.go b/test/system/systemTest.go index 306a1f26c..f427acb8c 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -35,17 +35,13 @@ import ( gisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" platformCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client" - rnisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client" sandboxCtrlClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client" - waisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client" ) var httpReqBody []string var platformCtrlAppClient *platformCtrlClient.APIClient var sandboxCtrlAppClient *sandboxCtrlClient.APIClient -var rnisAppClient *rnisClient.APIClient -var waisAppClient *waisClient.APIClient var gisAppClient *gisClient.APIClient var sandboxName = "sandbox-system-test" @@ -107,32 +103,6 @@ func createSandboxClients(sandboxName string) error { return err } - rnisAppClientCfg := rnisClient.NewConfiguration() - if hostUrlStr == "" { - rnisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/rni/v2" - } else { - rnisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/rni/v2" - } - rnisAppClient = rnisClient.NewAPIClient(rnisAppClientCfg) - if rnisAppClient == nil { - log.Error("Failed to create RNI App REST API client: ", rnisAppClientCfg.BasePath) - err := errors.New("Failed to create RNI App REST API client") - return err - } - - waisAppClientCfg := waisClient.NewConfiguration() - if hostUrlStr == "" { - waisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/wai/v2" - } else { - waisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/wai/v2" - } - waisAppClient = waisClient.NewAPIClient(waisAppClientCfg) - if waisAppClient == nil { - log.Error("Failed to create WAI App REST API client: ", waisAppClientCfg.BasePath) - err := errors.New("Failed to create WAI App REST API client") - return err - } - gisAppClientCfg := gisClient.NewConfiguration() if hostUrlStr == "" { gisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/gis/v1" -- GitLab From f818cb64e876cde74567fffc6718dbacaae266da Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Mon, 14 Dec 2020 09:50:41 -0500 Subject: [PATCH 009/194] cleaning of files for PR review --- .meepctl-repocfg.yaml | 3 +-- .../.api_sandbox_control.go.swo | Bin 16384 -> 0 bytes .../.api_sandbox_control.go.swp | Bin 20480 -> 0 bytes test/system/.systemTest.go.swo | Bin 16384 -> 0 bytes test/system/.systemTest.go.swp | Bin 24576 -> 0 bytes 5 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swo delete mode 100644 go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swp delete mode 100644 test/system/.systemTest.go.swo delete mode 100644 test/system/.systemTest.go.swp diff --git a/.meepctl-repocfg.yaml b/.meepctl-repocfg.yaml index 9d78a1c90..711ff1180 100644 --- a/.meepctl-repocfg.yaml +++ b/.meepctl-repocfg.yaml @@ -31,8 +31,7 @@ repo: # platform ingress configuration ingress: # host name - #host: my-platform-fqdn - host: 10.3.16.150 + host: my-platform-fqdn # enable https only (redirect http requests to https port) https-only: false # bind to host ports (true) or node ports (false) diff --git a/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swo b/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swo deleted file mode 100644 index 26136d21ae55274d8c01f541d13a05e36c5e55cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI2Ym6IL6~~7_0Yd_PKtTeb8wY}I*5l0vDbbRYcpphzvJcj~3DqWDuE*EjX~#2@ zJ9pMuB@Gf!fhy7#kobTQ0)axMDyUxys*n(<5+8tqgm{#P3W)c&RqbF-K?11@p1AjLfM)<_{SKey
    soOI}G8r9p0dV zYyZuhI=Jt^{%hBv(u;9}m1=X1yJ~vs*mR}sm3?mA&D$cVbcFEBzQa|^lby1qq*JyW zTezyieS0O~ZnNQ?Td_P>NzXCc-aqd!tC1;?DG)0Vs#f{nuBH8B`$p-)p8Rfh%gsxf zI++5Q0+|At0+|At0+|At0+|At0{=$}DE|iIeVFeKJ?FOme9_S7-}T>FeSLMP{Q05s zpAMB@)#V+1{dV0!($9TXEm_XupmB|0nzZ=U#0X-vZwN=fMH66Xd|pUS$|R0r!L3!SlNe;}P&F z@BnCoCb;}c!}ub&1lr&xunX)2S6^Wme*;g0KY(9>AA)a#uY-rdSHKnUS@3D_A@Bk4 zesCHrgZF?E_-oEE8lVD9@FwsE@R^rmTtI+HuovXOpI?T4!SBIi;1c*aI0FuX*MM8V zpI(Y_fGgk=U>fWOPu^e{zW_f6UjrAxJ)jNV2%de3VLS@H3NC|t!FQ14cocjR+z;*p zcLEbUg9Oae;3@DhxCAbOqhJzDfLj6C>G33KvccZDT&2QlE!Gt*2rWy9<_MEQh0Ntfhn<>7KnP>h93yU;_lgMq#|5#s{sb&)5~W9C2hBTKF@vMu`RA_&#l}Qcy1mchZdu_RYG=b zS406m+&o2QuZxuBmh+Q1MunqQ<;8VhY>-M9QrQNjQe~S9m98+PQ>th{tkm_CR{Cl* z#LX2;-?u%%uH8r9gQ@jUI%c$@1?Qn_B5TU^x2_a>LmUiLtHbXWg%0Dri69^Of+Yo4w4~!c9F;>CK3n6`<_$*#Xc#`&Ydp0& zvwD24E>+r#NXFoT4aDY9Aq6nXSUmVtVJ~h`Xv4o`i(7)k>h;`TWEjFTZXhrhy(Qll zvXG|+@)#)w&I(2=bS+lktfa?C#=_CRs&ChYT(d1vWRuaXbvdnW%p%7=r_9K*=hO&Y zzygxY6PNL;$O`(N5ms8o;(!N7{Dg~EP)`;S{-ug>L_gLNkqlO1N1_#Is9F6plu?Xg z@^pqV`kuaJb-)PP27^r*m6Bm7tRE@ehi;=@U_--zy;pjpq~>8hBlZBSaVIcK zA(`(8IDb?*uiXZIpLd0-ATE=yGcHJLmxe5@nhJ4 zsVZcyW4(zt*2h`B%iA;pdg*~AtU#RvbG~HzOB0!kNPtD$WWVl&;{5T%blu+Du zf_N~bYBRpT_!_R$%F4K6E9+h;%YCbsZNJQ$O(}vPI=QUP*RQat(H5rbi)1-n+p#-v z3JUvxA!K1yGWiJv484YvJJdz|%-7cg-}|y3Xbn*yP;oRBf>~H;Z3KS#|af_O9CO6c$JLJjNo< z;k}af4w507a7eou4XJ5UXf{GxGd2vG!EMtOu&4g|UWm9_XI=xA#{l6=K7O^*>ci$VN?1Lr>UxSC5;ZWv7T#u| z4!wZVxDe7%ht}|TZ5_6uwq07SYBbKo(j)9-yc95ukrn9v(|LW@>3s1WdY+RQrL^0t zSk`h0pr=|V>jNViJ0Q>wa-~kYV zI+zD@pbVbHzW*8U82B8x0M3I2@Otn%@Emdg4}p(@<6s(0f!*MDI}PKv;BoLlumbh~ z2HuPOz#J%mw}3Z;r?AKWCiocm2>38K3ig1T!4uf){}}uTJP0Tk@E7d!e*+!_UjknM zp9djW1c$(D!A;;s@N4Y%zYETSJHb1_4saFP{1H3^z6>sd4!8^0U<{Cc6_EX93S$p6Wx&YTIcy>`$hVDa0O<_L1A^JZ=E@#!Zt4Xs_ z>J-i5)5M59Nx8}#Wm0h^mEp|g=yz&oAE#amd)NB;w4t0E-eQvdsTrpd%ws|o29r3& zs5{y>ttFeT6L=rP7_K9ki;U%%&gRCFV2qv|A4s6}h7c!#M`(7Gk{f5eYSFlHJyx3X z7tvnIw)7?{(gj)G>lo2(hX?Y@+cZ9=5epD$-b>4FWr8I8l1h-g07k(swwC4O2Qq#= zUm}kwZhLWv%sUuiSx#R6-zJrq?E7#(qnWyP&73?1UJ@4RG-j4(SN){))*?mutSrx- tmZ2|O;#YmI+&YDxa_6lpr5%)N{rBbB^&`1A^W?u@|M^@y-XM@_{|B45=oA0| diff --git a/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swp b/go-packages/meep-platform-ctrl-client/.api_sandbox_control.go.swp deleted file mode 100644 index d3f9edc6ea2bdaf9c4f386dd06dc52f34b1541bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI2dyE}b8NkOP%F3%!(Z&RGxRrW$*?aG{m;h@F-R^GNg?3waw{5U3Wp?hlcL(Oq zOlRiqc2g=CQKJUr;UoHo5UvI|rrEqoM7Y=!jC`-dBOCdea@rqiPSrL|F=+-vf+YkiqnDkx8_GNKA z(1W@^sEV!<=k@i8eVW#_U+e0MTS;CT3me_0TXosnv8GTOte$r`jXvwe zD8i+Ppsj%|BYE#=dWWFq5}tQt)vhO9-IHT-PhI*!-U#+K^|3_{rkcN$#5c)c%E4w5 z@ojPZAQE$uvH<~0Z;S5fHNRQzqjl-cwkNJ5kmrar(~_flEoBtzNLf1@NI#|7q*<|A zEGOcpVpcU}*pnz6n^jFmM%SrRJ8}aUz8mCr@phvCV~ctoWgcPR=}cvfxm>$3wv@o& zd}&D|NT;?KT{=Szjqdw05K;4DDwHCoI9CUKWz#!$`GIHJ)qOeLbuH7-1JkifSNe{f zW6DuuIBx^#)l6H46TH28H8UGcq%^l9H%K5A!BvHcSyvt*syI{S9U-YyUS~n23$)28 zmDM7wRC-EQacbDb&Js(%w=jXt-$v7dRqb`pDuyeXzYn=4VojO;+=U`*h$e$7RnxDM z`I_$Th!h;_SthSsTSAjz6>+Y6}eIz5-0s!XbXlX^*}A@yhpGcO}JuO z_e_1#l0FqHOHklZ5py$42GkQ z^VRAm3}x7RgJP)Jy+N-^U;#MLvF~SM*G=IPl?!zHs3R>UiBu|DKYzCjP7? zLefN!SQD;5ZPms<>s~lV8N7;O4F6BRa%A^JK~PfYb-u}V5KnQnu2!o|d^)e&hO~%^ zWajtsk=Dx=bDfnp@N^?AAp@f*w(udBWl`~*nuv!JuJ?kv6M?KH(z5C~b-SGJE^3kB zgf473BmBq)#EhwohlR?UmR_MMZOM43*GA!5ECVIi7A3?wXst>s^=Mka`jL`*+iR*7 zbf{_Qdv~Lks(RF?MHavsw~!E_`|}v*le)-oGpVA^D_BYja~h3I;Chspng

    q)v89O8$rKl2EeWvQIllIq=;^*ic~o^0s`^-XuMyn zDE1ZmNL3jVQ>Gv0@=&|Enr_-+OB^v9R*zmRda7zrR^=PgW(9ECjB|NI-!SmV#GGm0ltAJWvQn7j8X;r@)_$C z=-VB&u0A(nx!CH{r>OD9;KHFcRuoZJ#y&Y48cjTA->C#MY;@E&5lu74>-}`ZVckWfgiLcF#I>uh7(L!E_6H zx$H^b4`Y{O^)(B0RNC0^_=M72T-q{g7=@blzF^9tRi*NcOc=EdSLQG-qi=qk7HV9T z@m*<{71I!wZddDSz*Pr(vYAJMMYd-8%Ctg>sA{&4Ol;V^bwX?(7#kZHofsJ&7n{e# z;O5bxk%^Jbqx@PY21YLvmyV1Mu{dJ$^hNGvU#ZRxo?tc+rdWceIi_S8);(saB5QWCfH8P%>{#kR^y z-Dq*fGlOt7Ow1sbqMEAA)R~!?qRwQWl10a>me@)uDf*?2BZI@E0YrdS_%Yx6nXXj&RqP~&Rq9L;&BerOV6xMv8ox}VrAdTJ|WW6lGUMBtK0GS zh0h1`R4vi!{QpPJrhS}g)%kx@e5QPibN=0MGt^-mw!mg6z&|Us&nusx_%LbevKx&mui`JmsnEQhroYQvS`ZF7-Qgu8$nA`Q_71 zZ(5tjjXg|qIxR+ygyMP`n%Ee!~GWO+0BB76t*Wcnk zYjh!U0r#rWDTiFYXcP>2uVG8dV!9W+IE3nLone_rKEAa{xh0!6-1KLr(&qKZ ztBIFPi?kCn^Rfp`m-O613cXpGmpv_prq~j@YFg#o4)l~c&s`{OpsLjI=VgyS$&HaG zcVGW|PdhsZ9PR4-&ka4B2@r^6|5GW>?~{;%ONI0U!C3>@ane-Lg46+dtzTn~%jCC>W~ z!*}5e;DZYeY=Xt`L(c#A!6)Hz=!XkoF+9#$|F>{ITm|dl9dH6Hf~OG3?Qk1h4{PBp zIL!I}NjL;5Cg6GQ`47V*@G$%mz6vS^U>yv?T37^6sr!Gp6YhX-!Cu%77sFC`4=jP_ zP9Qb`o`r|tAp9JD1~)(%4iO7*FWdv)hr3`6TnHzD(&t~BaRSXXJat3UaHr07LDS)W zW{6AAKpxW#P4r59dC>WWMqMw&cR^gt%y%E7T=XKofC=A<>y2(Gnt2^Ag5I>7mPi1h z1F_|vMfvhv&zUyMxH0FyVTr5YW+w6N#x;f4EPQ_24rLosM}}S%S${_UC#9x8cQcm$0IslFywpO^V9w?iGaa=`n<#l=i6#_H)IK zr{h?nP*QOw^M#qr7iF@LJoCA5^=D<}l(-0pLGV|Qn^ zGqVS!9KJyc!C*)<`a+FSpfSc6;f1~ciN26TQS^loL%@KEs1QQ{BgMq{d7hbPX7+aX z?kE*8nN2_4otfv)@A*E@@A>oFy}5}Sr}v60DwkWl&bO?MSN`_k(fSMP9;%#XNw3** z=G23gUwd!bw&jY;R!*ay-W3;Eoop;RUNp69&r~&%VN?x|gpq6~Z?oK~H2u{}D^e5+ z6bh_afo?QEzU`a?mu=lLq4Hc}ZxRqKY<%y54`q4%X$hv4eQ}mf+jD)Gw>^T8Xki0KnQ2S>*)SH zco2@kJrKfSP<`S<8yxry+yI}14RA61ivZ1EOpxXsj;|$4B(Fe5-M|x`+p^R>%NqJf zXULw4zLY&TxX52GyX>uWdCB@(B$mk_u;Lr(|1G~+nF<0wDBHUow zc#S##_U*zR6J#9|_V_p-0~wB_#klk8k=V3DHCr6DN<7u6#r7Sd({iGDKWOiag4SfG zv$N$&FRIkyVt4vp6!_eCD?4?4$^Dz$XknkzmgPDLA2Bmkn-!D$r$t>WWoI&*>R0Nn6-v@w7$&;sJ7ed3vvQ3S%Kc8X zkkv+~4oWO`m|iyK3{I8Lob(56r(N+yc~CA4$?ESHc}SMjcCkY&_+fM)XjN*uKg%Ox zv#_f+|0j9Xn9}!>>+w25R2R3{mTAqBkgZTM1k4TdzJ}WEg(&K5uU1=r-DxRP-dWWs z-e*5*+jh>HAyz04$UVvg$H5r<-N1=l-z#V8R;wa*IPq}?zaPkCxCvafXBg^POly$X zHYN_L+PbK`-w8rlj(sPr%m!||)^X~x?1z;-GLqh6+1@)fwg2F?*Vkqb&N8kK9+|D(})C_a}2!j}j;6kSi6XJ#yguIMgKvrtbI2 zA<23s<7|**UO6zIcFWR|RWf=HOSP&env9v-l~R8zmCVzgl_IYM4&Lu#CReV^wK$T= zw!E?-YYB7LDR8CIf6IrA^Q^Rjh26O@U4U6h*`b&Y9qK?N(hGT-(&SL<{i>@P71jf{ zqo$ry;7PSrii_8`d?WK?C!6}z!j@0f?>)VbX=dQL;UIVENvPe#=(GGu-ZgByTJ`+M zoj;;h+*I1-S(LuL6`z6;s5d~WCOT$LZefKikLD^#X9C^pelQa6g-U8+n~{fcz*}xr zpDSE+`FZitrFcsf$Z5}wu8mVsC_AV{ClFy>dQRZ_dNRj(&GmTvJLPfpn`Jvr8ShKd zgz;r>x_rVOw-uxPYhT(Dook@Ci_!e;qy!x%?)3nXt-2DW9D>||GB^U;%0mFC)CGyL#{qWZdu7z+K%g4>ioZt^W#07Mb+>Bk0ocw zXF1EOGyf5AU@Ke-Hk=3Nz}fI8&i60D58)aZg%>%`KLt;~B&2T>ao%q13pyCD3!xIp}3|tNqP=$}chv5XVg16umcmaM4 zcY%s4)Zk)R59{DGc#}B7AK~ZlDBKR8g}tx`cEd;EOn8$R!;^3vz6=k*eQ+-{VH=FX zrSLJh2rh(Ih(-Jo9)TrTfU965YycIjI0N2h47>p^!{hK6`~bcJ_rtxQ#>old4$r~+ z{Kejnf1I|vUbJ~LpOni~YAt4?a^&_s?YpsZ^4!xEaxV40hFP>i37D#^mP`T-Vh6fO zr8&Y5hqx%IQ}whr@0aZv$J56k!W_EA#5_c(bA_D7OC>fCn}V*#B3DwUCEj#0wO;cF z0i}9NIsxZtw;pofN+;&5{Dy4Fh;W0b#j9NIh@X>U%f!Tl7!~@?Uboe9V-qldm7?u> z1ZQf=@|ru>Wwn@8x}qeZGJj1~IQ7U~%-3L6ZnZ#XYg$%Yl3`h8h@qo8nHr@fj4hRv zd^^Ov!%>?nRm^UOm9MP#7T3A_5tBFRHEJ?glx2JSWxVJNHlrLJOQmWxiA^=+ywhz( zBJjIJsuobQB?Ee(G+O09As7qknMEY=uijfdW|+O35XzvbC1*5%~>m`GOjN^N@2^uF1i>)EN9y{co9w5rW*=MX_h3KRq}YI+MWCbmqFD&JB) zen}k#T}h8+M(W!c zR7}hq9`;fu^v!5yi6H)+ED$ElpV_{Ab~Az;OauH$XZ4)ODwApfNf#&;-=FPUwUW(v z65Gckv=pgP+3NOQ>0wsA_d*UWP=1B&Rl|JKq1L=a7-L78yiT(Xu31p6y zy#vOyYG*!Rt;WqRwOdL@(!ei-j6%s|WOhaW3w>fo?$bwqZMN$7X2!SH@by{J#y+)b zGBQdIl#2B)$(p%%K2kF%LTn1`joP1t%6iA0o1@~@uWwp1V~lM=?wiNV-qok1Aww)K Y5Y5bYj>*`H?+?^#+0aT-4jftk0pPLr1^@s6 diff --git a/test/system/.systemTest.go.swp b/test/system/.systemTest.go.swp deleted file mode 100644 index 312257df1556169fa2d3c46b3191559281b50621..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 zcmeI4du$v>9mgjRT8>gu9+h~AcDxnn?AUiUNz@QwD#vk>gW9otHW5X|THno`SJ~UW z?Cv>DT(=-0C58UeKS&TrEd|sE2r5-Ts8lGTr43L(p-3P#ts1ogA%Q3l2^AH=_cuFp zyZ7)bHAoe6(#QLn=XZazv%i^H&kcU8FwU>f?PT~}#n=Oz&d=6M&u@P9!<(4!s;)gp z7gqj_AKpE5{f?Ex(AC@G1oI>11>1|p_8l0@MnOxOhJv9@;C}0#= zvjUB%GO+u~nH?V(8l*VaSv~yiZ<|?jbQ91hU=%P47zK<1MggOMQNSo*6nOnB5Y@M` z+fj|psw&ze*rbm2_6_RzTD6^SyS`N&?^4@J+x0E#_!_nSOxtyJXf{RxqkvJsC}0#Y z3K#{90!9I&fKk9GU=%P4{1+6k%Z%A@&d-wrkNJP?|Nm_pV}AvI0MCKnfS-cLz*+E3 z@D*?d+zCDhZUDc33+DO361Wwd0LQ^6!OdV7_}7(;Jq7LocY~AQ2ynnW*adci&EVXd z8T&k#0)ya*D;TSRaWD#cz_s8SuoY|pFTIJeXTX!-ac~xV2Yefx0jEI$90XT`pJf>P z7AS+8z-3?yc<_yk-43>aM=xjWUT_AS1{0tU{O~fy9s+y8Zg3F;C1*ha`~#X^0KWpH z?-0%n0tQau7(*{?CwMow3Ty+f;$Hj{yaFzOXMqc*!TZ2F!PQ_hVBp^vxVZ>k01tr= zf*$Y^25#=c_1ge%{keWMHx>kbkhS*Pjw{MM@_8u`b|iRM5}qA6{vK}ia}fl+&B#uL zj(N{8_Z*imHqXz>aD2}&ue)|s@q^lE6u2Yx`l#y&FUl2File?)ajK2LjvU_`sXMu% zi1f8=$@e00OO%^FwC_;1x1U?_l8^yf9)g1CQYEEXu!H8=mWC_aQgWy>dec=KZBJ{}CbOy?b%-)5O;*+HuoKNs z*fo)5x>y}G;LBG*nl?;WnnjqK5XZW-4V4pzZS$$I;xr$bEbx-Fax1Y+o&8FxtdNql zqEOW}-H=8r)!be?6q9x|pX7#C*|pj6;r4dgElobGjhEW2YC5PqDi$APyTw9Dk^*$9 zyiAm4;gRXQA4W5Qn=3|v<5jc0d^@-D7XGTZbR*?Cbv#f)@$w5pR&sN>a6^%L3~AZd zkh?V>MfE-Tyz7^2mx{8!tRZFVlq%KI9Pcv3y2 zH^7QlN=lk>SIc~@cHA{l*i`y_B5Y#G>FdqjNt!Y}?X}*^g<92mb;QI}GfUb=GZ}rg zrE5$pfeLh*rH++Kb1lZFqqS$&-bW`YwVR(-BcJE-Lzcgvhmju$^|%W;`uP?MVl1N? zML(aVj2dX(lXeh_Y$zLfn41oqTCr}IMAi>;2heeP3t4M?Y;1D&;GyF5>@=RJvoljS zTD`rx>x%o3xR@cH5~)sG_s(5=>*Zcm5TAw(Fq8Ejei|RJ#isb79kb z`sLe#4zX-oMIq%&64N2|RuyRFUI!VL0;f)|O)ZjNV%M`ua&iBYu4LLwljlA(Zjqu( zhm%f(bPqfyOl&S`nJwwa7OC}Vzmjf+mX*(Ye&ke+Q;*n`wmnK`#_KiqF19Y;DJdu1 zm^m>7gUR-#YS*lqyz73@8^35~sNb0qN72?laWn1baL~XT?&4DXmKq2$!h>-rB#PHl z`JNlU4aiOrj|tr;reF5b;aZwK@9XSun#Gf`x;`y{wK0MC>oc2$J=nh^B?os@iN z4wT~8vt~xgUAp89D2a}A@wRu#2_kM)1Qs5lmU>oN*!4t|$3v8MOR;xEyYZuf_9CYy zXbUsIYm5x%hxyQ{dbT>CtCR}e0E;=bx*tS53%4`Yi`Q(&W90vT1b+7Ofc$?wKmSMg z@(+VAf|KCW;8Wn^U@yplSK!NE1it|1z~kUY;9d}bGMEMA`%i(7f*Zg)z!l(f@F(Q^ zB6vZS;W;XY`56U_0!9I&fKk9GU=%P47zK<1MggP1Iu*dkCQW6P{Dv28-;O=<8goS# zj&e5M6>u)gy|_Z*GIN+xIYK)$dr|Nze%6|@Jvjn`X*ih-Cg*r4V}+RY$Yd}O)Dtv3 z3|3@lP!Jm#jK*E?p=o9bquH2CLx5pku`yM9fr*?6qw26^YMrsFN=!Za3dc04NSYuV_3u$0rJT7;IrTkun10oo4{MapE1{e z9{e0U4ITmC1E&G42RH>5!3=m0*aluk9UcZ>1NVTt!Cl~1AnUiz)?)>ki_#^&-nueNOYsSvmjP)qg^) zvd>*RjJRE*bpauVQ^AkfP9$A5Ob7B~fde1OuZwuWWk_p0g;$2Vk+^n~fnN>m8b9K= zv5UgXNnfcgD+fVlaE7SVpI}(VH z%d1l&tV4Bim_!cx;c6b`ed>yw(WiU2s^2PC5zr)Te5;e?BWkG$t!-&eTqjqR+q(QZ zu&&;$UaR`QTi+|!tTvb2syXcLD}42WAF}2JEJJR_T4^QD|DQZ+DX+SPuo}43Q z*0EmOA^(31eCIC#^8fYs{eOpVPwW5x0)7pi0bd2Xz4EHoB)mz$jo8FbWt2i~>dhqkvJs zDDZkvAen$&%U)NvR?Q6S4@5Wc8%*=rYWo+2>;FPi4grWF2B+|SY{zG->dOTBu0am~ zC=XXf*boP|&9qjuqB!5xjcCI@R&5^@Nl8M>E$EABj7Y^hG?u16ZlG^G)K?iw-BB5M R(Xy6WKY8vZW%}c({{Z##C6NFC -- GitLab From 8447fb130f5026389c0ec002424b73eaea05afa5 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Mon, 14 Dec 2020 10:46:12 -0500 Subject: [PATCH 010/194] add default of localhost for hostUrl but notification might not work in services since unreachable --- test/system/loc-serv_test.go | 8 +++++--- test/system/systemTest.go | 25 +++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index cef419ff9..36dd39825 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -41,14 +41,16 @@ func init() { //create client locServAppClientCfg := locServClient.NewConfiguration() if hostUrlStr == "" { - locServAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/location/v2" - } else { - locServAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/location/v2" + hostUrlStr = "http://localhost" } + + locServAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/location/v2" + locServAppClient = locServClient.NewAPIClient(locServAppClientCfg) if locServAppClient == nil { log.Error("Failed to create Location App REST API client: ", locServAppClientCfg.BasePath) } + //NOTE: if localhost is set as the hostUrl, might not be reachable from the service, export MEEP_HOST_TEST_URL ="http://[yourhost]" locServServerUrl = hostUrlStr + ":" + httpListenerPort //enable gis engine mobility, poas-in-range and netchar update diff --git a/test/system/systemTest.go b/test/system/systemTest.go index f427acb8c..544ce8df8 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -67,17 +67,21 @@ func initialiseVars() { hostUrl, _ := url.Parse(strings.TrimSpace(os.Getenv("MEEP_HOST_TEST_URL"))) hostUrlStr = hostUrl.String() + if hostUrlStr == "" { + hostUrlStr = "http://localhost" + } } func createClients() error { // Create & store client for App REST API platformCtrlAppClientCfg := platformCtrlClient.NewConfiguration() + if hostUrlStr == "" { - platformCtrlAppClientCfg.BasePath = "http://localhost/platform-ctrl/v1" - } else { - platformCtrlAppClientCfg.BasePath = hostUrlStr + "/platform-ctrl/v1" - } + hostUrlStr = "http://localhost" + } + platformCtrlAppClientCfg.BasePath = hostUrlStr + "/platform-ctrl/v1" + platformCtrlAppClient = platformCtrlClient.NewAPIClient(platformCtrlAppClientCfg) if platformCtrlAppClient == nil { log.Error("Failed to create Platform App REST API client: ", platformCtrlAppClientCfg.BasePath) @@ -92,10 +96,10 @@ func createSandboxClients(sandboxName string) error { // Create & store client for App REST API sandboxCtrlAppClientCfg := sandboxCtrlClient.NewConfiguration() if hostUrlStr == "" { - sandboxCtrlAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/sandbox-ctrl/v1" - } else { - sandboxCtrlAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/sandbox-ctrl/v1" + hostUrlStr = "http://localhost" } + sandboxCtrlAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/sandbox-ctrl/v1" + sandboxCtrlAppClient = sandboxCtrlClient.NewAPIClient(sandboxCtrlAppClientCfg) if sandboxCtrlAppClient == nil { log.Error("Failed to create Sandbox App REST API client: ", sandboxCtrlAppClientCfg.BasePath) @@ -104,11 +108,8 @@ func createSandboxClients(sandboxName string) error { } gisAppClientCfg := gisClient.NewConfiguration() - if hostUrlStr == "" { - gisAppClientCfg.BasePath = "http://localhost/" + sandboxName + "/gis/v1" - } else { - gisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/gis/v1" - } + gisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/gis/v1" + gisAppClient = gisClient.NewAPIClient(gisAppClientCfg) if gisAppClient == nil { log.Error("Failed to create GIS App REST API client: ", gisAppClientCfg.BasePath) -- GitLab From e24e44d21fbc90c478a7eb3564b022eb0673a0a4 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Tue, 15 Dec 2020 16:25:09 -0500 Subject: [PATCH 011/194] all mec services tests --- .../model_inline_subscription.go | 17 + .../model_inline_subscription.go | 11 + test/system/go.sum | 1 + test/system/loc-serv_test.go | 1038 ++++++++--- test/system/rnis-system-test.yaml | 1166 +++++++++++++ test/system/rnis_test.go | 1540 +++++++++++++++++ test/system/wais-system-test.yaml | 1244 +++++++++++++ test/system/wais_test.go | 1160 +++++++++++++ test/system/zsystemTest_test.go | 36 + 9 files changed, 6008 insertions(+), 205 deletions(-) create mode 100644 test/system/rnis-system-test.yaml create mode 100644 test/system/rnis_test.go create mode 100644 test/system/wais-system-test.yaml create mode 100644 test/system/wais_test.go create mode 100644 test/system/zsystemTest_test.go diff --git a/go-packages/meep-rnis-client/model_inline_subscription.go b/go-packages/meep-rnis-client/model_inline_subscription.go index d011104b6..6eb696aac 100644 --- a/go-packages/meep-rnis-client/model_inline_subscription.go +++ b/go-packages/meep-rnis-client/model_inline_subscription.go @@ -25,4 +25,21 @@ package client type InlineSubscription struct { + Links *CaReconfSubscriptionLinks `json:"_links,omitempty"` + // URI selected by the service consumer, to receive notifications on the subscribed RNIS information. This shall be included in the request and response. + CallbackReference string `json:"callbackReference"` + + ExpiryDeadline *TimeStamp `json:"expiryDeadline,omitempty"` + + // Shall be set to \"S1BearerSubscription\". + SubscriptionType string `json:"subscriptionType"` + + FilterCriteriaAssoc *CaReconfSubscriptionFilterCriteriaAssoc `json:"filterCriteriaAssoc,omitempty"` + FilterCriteriaAssocHo *CellChangeSubscriptionFilterCriteriaAssocHo `json:"filterCriteriaAssocHo,omitEmpty"` + FilterCriteriaAssocTri *MeasRepUeSubscriptionFilterCriteriaAssocTri `json:"filterCriteriaAssocTri,omitempty"` + FilterCriteriaNrMrs *NrMeasRepUeSubscriptionFilterCriteriaNrMrs `json:"filterCriteriaNrMrs,omitempty"` + FilterCriteriaQci *RabModSubscriptionFilterCriteriaQci `json:"filterCriteriaQci,omitEmpty"` + S1BearerSubscriptionCriteria *S1BearerSubscriptionS1BearerSubscriptionCriteria `json:"S1BearerSubscriptionCriteria,omitempty"` + // Description of the subscribed event. The event is included both in the request and in the response. \\nFor the eventType, the following values are currently defined: 0 = RESERVED. 1 = S1_BEARER_ESTABLISH. 2 = S1_BEARER_MODIFY. 3 = S1_BEARER_RELEASE. + EventType []string `json:"eventType,omitempty"` } diff --git a/go-packages/meep-wais-client/model_inline_subscription.go b/go-packages/meep-wais-client/model_inline_subscription.go index 39ecc37d9..d52c8e229 100644 --- a/go-packages/meep-wais-client/model_inline_subscription.go +++ b/go-packages/meep-wais-client/model_inline_subscription.go @@ -24,5 +24,16 @@ package client +//using as an allOf type InlineSubscription struct { + Links *AssocStaSubscriptionLinks `json:"_links,omitempty"` + // URI selected by the service consumer to receive notifications on the subscribed WLAN Access Information Service. This shall be included both in the request and in response. + ApId *ApIdentity `json:"apId,omitempty"` + CallbackReference string `json:"callbackReference"` + ExpiryDeadline *TimeStamp `json:"expiryDeadline,omitempty"` + // Identifier(s) to uniquely specify the target client station(s) for the subscription + StaId []StaIdentity `json:"staId,omitempty"` + // Shall be set to \"StaDataRateSubscription\". + SubscriptionType string `json:"subscriptionType"` + } diff --git a/test/system/go.sum b/test/system/go.sum index b70b90922..4b292bf32 100644 --- a/test/system/go.sum +++ b/test/system/go.sum @@ -1,5 +1,6 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/InterDigitalInc/AdvantEDGE v1.5.0 h1:Gv1wxW7kV31reTqxX5TflvvYEEqnxaUlKWvgoandpfI= +github.com/InterDigitalInc/AdvantEDGE v1.6.0 h1:MTmJx1AQ4rc1qAJHLS54C5lU2i1NoqukyTcnaPiZ/hU= github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0-20200703133018-94138d8210a3 h1:hbmjC8Fpv+9m2NytJO4bkf25Xz+IRn28/9CseJxS9YQ= github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0-20200703133018-94138d8210a3/go.mod h1:OboTWbYNj5baVwRuX8A7o8JSx4cxVqT9uDs9DWFP8sc= github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index 36dd39825..e8303746a 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -58,7 +58,7 @@ func init() { } -func initialiseTest() { +func initialiseLocServTest() { log.Info("activating Scenario") err := activateScenario("loc-serv-system-test") if err != nil { @@ -74,7 +74,7 @@ func initialiseTest() { time.Sleep(1000 * time.Millisecond) } -func clearUpTest() { +func clearUpLocServTest() { log.Info("terminating Scenario") terminateScenario() time.Sleep(1000 * time.Millisecond) @@ -95,8 +95,8 @@ func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -120,7 +120,11 @@ func Test_4g_to_4g_same_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g2", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g2", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -131,8 +135,8 @@ func Test_4g_to_4g_diff_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -156,13 +160,21 @@ func Test_4g_to_4g_diff_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[1]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "", "Entering") + errStr = validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -173,8 +185,8 @@ func Test_4g_to_5g_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -198,7 +210,11 @@ func Test_4g_to_5g_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -209,8 +225,8 @@ func Test_4g_to_wifi_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -234,7 +250,11 @@ func Test_4g_to_wifi_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -245,8 +265,8 @@ func Test_4g_to_generic_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -270,7 +290,11 @@ func Test_4g_to_generic_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -281,8 +305,8 @@ func Test_4g_to_none_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -306,7 +330,11 @@ func Test_4g_to_none_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -317,14 +345,14 @@ func Test_5g_to_5g_same_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(1500 * time.Millisecond) + time.Sleep(2000 * time.Millisecond) //subscription to test err := locServSubscriptionUserTracking(testAddress, locServServerUrl) @@ -342,7 +370,11 @@ func Test_5g_to_5g_same_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g3", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g3", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -353,8 +385,8 @@ func Test_5g_to_5g_diff_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -378,13 +410,21 @@ func Test_5g_to_5g_diff_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[1]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "", "Entering") + errStr = validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -395,8 +435,8 @@ func Test_5g_to_4g_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -420,7 +460,11 @@ func Test_5g_to_4g_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa-4g3", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -431,8 +475,8 @@ func Test_5g_to_wifi_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -456,7 +500,11 @@ func Test_5g_to_wifi_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-wifi2", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa-wifi2", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -467,8 +515,8 @@ func Test_5g_to_generic_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -492,7 +540,11 @@ func Test_5g_to_generic_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa2", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa2", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -503,8 +555,8 @@ func Test_5g_to_none_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -528,7 +580,11 @@ func Test_5g_to_none_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone2", "poa-5g2", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -539,8 +595,8 @@ func Test_wifi_to_wifi_same_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -564,7 +620,11 @@ func Test_wifi_to_wifi_same_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi4", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi4", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -575,8 +635,8 @@ func Test_wifi_to_wifi_diff_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -600,13 +660,21 @@ func Test_wifi_to_wifi_diff_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[1]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "", "Entering") + errStr = validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -617,8 +685,8 @@ func Test_wifi_to_5g_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -642,7 +710,11 @@ func Test_wifi_to_5g_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa-5g4", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -653,8 +725,8 @@ func Test_wifi_to_4g_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -678,7 +750,11 @@ func Test_wifi_to_4g_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-4g4", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa-4g4", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -689,8 +765,8 @@ func Test_wifi_to_generic_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -714,7 +790,11 @@ func Test_wifi_to_generic_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa3", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa3", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -725,8 +805,8 @@ func Test_wifi_to_none_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -750,7 +830,11 @@ func Test_wifi_to_none_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone3", "poa-wifi3", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -761,8 +845,8 @@ func Test_generic_to_generic_same_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -786,7 +870,11 @@ func Test_generic_to_generic_same_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -797,8 +885,8 @@ func Test_generic_to_generic_diff_zone_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -822,25 +910,33 @@ func Test_generic_to_generic_diff_zone_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[1]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone5", "poa6", "", "Entering") + errStr = validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone5", "poa6", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } -func Test_gereneric_to_wifi_userTracking(t *testing.T) { +func Test_generic_to_wifi_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -864,7 +960,11 @@ func Test_gereneric_to_wifi_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa-wifi5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -875,8 +975,8 @@ func Test_generic_to_4g_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -900,7 +1000,11 @@ func Test_generic_to_4g_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-4g5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa-4g5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -911,8 +1015,8 @@ func Test_generic_to_5g_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -936,7 +1040,11 @@ func Test_generic_to_5g_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa-5g5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa-5g5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -947,8 +1055,8 @@ func Test_generic_to_none_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -972,7 +1080,171 @@ func Test_generic_to_none_userTracking(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone4", "poa4", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_4g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_5g_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_wifi_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_generic_userTracking(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionUserTracking(testAddress, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -983,8 +1255,8 @@ func Test_none_to_none_userTracking(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" @@ -1003,6 +1275,7 @@ func Test_none_to_none_userTracking(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { + printHttpReqBody() t.Fatalf("Notification received") } } @@ -1011,8 +1284,8 @@ func Test_4g_to_4g_same_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1037,7 +1310,11 @@ func Test_4g_to_4g_same_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g2", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g2", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1048,8 +1325,8 @@ func Test_4g_to_4g_diff_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1074,7 +1351,11 @@ func Test_4g_to_4g_diff_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1085,8 +1366,8 @@ func Test_4g_to_5g_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1111,7 +1392,11 @@ func Test_4g_to_5g_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g1", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g1", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1122,8 +1407,8 @@ func Test_4g_to_wifi_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1148,7 +1433,11 @@ func Test_4g_to_wifi_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi1", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi1", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1159,8 +1448,8 @@ func Test_4g_to_generic_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1185,7 +1474,11 @@ func Test_4g_to_generic_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa1", "poa-4g1", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa1", "poa-4g1", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1196,8 +1489,8 @@ func Test_4g_to_none_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1222,7 +1515,11 @@ func Test_4g_to_none_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g1", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1233,8 +1530,8 @@ func Test_5g_to_5g_same_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone2" @@ -1259,7 +1556,11 @@ func Test_5g_to_5g_same_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g3", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g3", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1270,8 +1571,8 @@ func Test_5g_to_5g_diff_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone2" @@ -1296,7 +1597,11 @@ func Test_5g_to_5g_diff_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1307,8 +1612,8 @@ func Test_5g_to_4g_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone2" @@ -1333,7 +1638,11 @@ func Test_5g_to_4g_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g3", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g3", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1344,8 +1653,8 @@ func Test_5g_to_wifi_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone2" @@ -1370,7 +1679,11 @@ func Test_5g_to_wifi_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi2", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi2", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1381,8 +1694,8 @@ func Test_5g_to_generic_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone2" @@ -1407,7 +1720,11 @@ func Test_5g_to_generic_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa2", "poa-5g2", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa2", "poa-5g2", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1418,8 +1735,8 @@ func Test_5g_to_none_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone2" @@ -1444,7 +1761,11 @@ func Test_5g_to_none_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g2", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1455,8 +1776,8 @@ func Test_wifi_to_wifi_same_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone3" @@ -1482,7 +1803,11 @@ func Test_wifi_to_wifi_same_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi4", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi4", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1493,8 +1818,8 @@ func Test_wifi_to_wifi_diff_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone3" @@ -1519,7 +1844,11 @@ func Test_wifi_to_wifi_diff_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1530,8 +1859,8 @@ func Test_wifi_to_5g_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone3" @@ -1556,7 +1885,11 @@ func Test_wifi_to_5g_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g4", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g4", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1567,8 +1900,8 @@ func Test_wifi_to_4g_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone3" @@ -1593,7 +1926,11 @@ func Test_wifi_to_4g_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g4", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g4", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1604,8 +1941,8 @@ func Test_wifi_to_generic_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone3" @@ -1630,7 +1967,11 @@ func Test_wifi_to_generic_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa3", "poa-wifi3", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa3", "poa-wifi3", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1641,8 +1982,8 @@ func Test_wifi_to_none_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone3" @@ -1667,7 +2008,11 @@ func Test_wifi_to_none_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi3", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1678,8 +2023,8 @@ func Test_generic_to_generic_same_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone4" @@ -1704,7 +2049,11 @@ func Test_generic_to_generic_same_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1715,8 +2064,8 @@ func Test_generic_to_generic_diff_zone_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone4" @@ -1741,19 +2090,23 @@ func Test_generic_to_generic_diff_zone_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") } } -func Test_gereneric_to_wifi_zonalTraffic(t *testing.T) { +func Test_generic_to_wifi_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone4" @@ -1778,7 +2131,11 @@ func Test_gereneric_to_wifi_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-wifi5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1789,8 +2146,8 @@ func Test_generic_to_4g_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone4" @@ -1815,7 +2172,11 @@ func Test_generic_to_4g_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-4g5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1826,8 +2187,8 @@ func Test_generic_to_5g_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone4" @@ -1852,7 +2213,11 @@ func Test_generic_to_5g_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g5", "poa4", "Transferring") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa-5g5", "poa4", "Transferring") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1863,8 +2228,8 @@ func Test_generic_to_none_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone4" @@ -1889,7 +2254,175 @@ func Test_generic_to_none_zonalTraffic(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZonalPresenceNotification(t, body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, testZoneId, "poa4", "", "Leaving") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_4g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-4g1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_5g_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-5g1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_wifi_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa-wifi1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_none_to_generic_zonalTraffic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseLocServTest() + defer clearUpLocServTest() + + testAddress := "ue1" + testZoneId := "zone1" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := locServSubscriptionZonalTraffic(testZoneId, locServServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body locServClient.InlineZonalPresenceNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateZonalPresenceNotification(body.ZonalPresenceNotification, testAddress, "zone1", "poa1", "", "Entering") + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1900,8 +2433,8 @@ func Test_none_to_none_zonalTraffic(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testAddress := "ue1" testZoneId := "zone1" @@ -1921,6 +2454,7 @@ func Test_none_to_none_zonalTraffic(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { + printHttpReqBody() t.Fatalf("Notification received") } } @@ -1929,8 +2463,8 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testZoneId := "zone1" @@ -1952,6 +2486,7 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { + printHttpReqBody() t.Fatalf("Notification received") } @@ -1966,7 +2501,11 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -1983,7 +2522,11 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2000,7 +2543,11 @@ func Test_zoneStatus_4g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2030,8 +2577,8 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testZoneId := "zone2" @@ -2053,6 +2600,7 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { + printHttpReqBody() t.Fatalf("Notification received") } @@ -2067,7 +2615,11 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-5g2", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-5g2", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2084,7 +2636,11 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-5g2", 3, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-5g2", 3, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2101,7 +2657,11 @@ func Test_zoneStatus_5g_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-5g2", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-5g2", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2131,8 +2691,8 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testZoneId := "zone3" @@ -2154,6 +2714,7 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { + printHttpReqBody() t.Fatalf("Notification received") } @@ -2168,7 +2729,11 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-wifi3", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-wifi3", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2185,7 +2750,11 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-wifi3", 3, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-wifi3", 3, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2202,7 +2771,11 @@ func Test_zoneStatus_wifi_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-wifi3", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-wifi3", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2232,8 +2805,8 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testZoneId := "zone4" @@ -2256,6 +2829,7 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) >= 1 { + printHttpReqBody() t.Fatalf("Notification received") } @@ -2270,7 +2844,11 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa4", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa4", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2287,7 +2865,11 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa4", 3, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa4", 3, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2304,7 +2886,11 @@ func Test_zoneStatus_generic_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa4", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa4", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2334,8 +2920,8 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testZoneId := "zone1" @@ -2367,7 +2953,11 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 4) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "", -1, 4) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2384,7 +2974,11 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "", -1, 3) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() t.Fatalf("Number of expected notifications not received") @@ -2404,8 +2998,8 @@ func Test_zoneStatus_zone_AP_threshold(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) - initialiseTest() - defer clearUpTest() + initialiseLocServTest() + defer clearUpLocServTest() testZoneId := "zone1" @@ -2450,49 +3044,81 @@ func Test_zoneStatus_zone_AP_threshold(t *testing.T) { if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + errStr := validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[1]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[2]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "", -1, 3) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[3]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 4, -1) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 4, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[4]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 4) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "", -1, 4) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[5]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 3, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[6]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "", -1, 3) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "", -1, 3) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } err = json.Unmarshal([]byte(httpReqBody[7]), &body) if err != nil { t.Fatalf("cannot unmarshall response") } - validateZoneStatusNotification(t, body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + errStr = validateZoneStatusNotification(body.ZoneStatusNotification, testZoneId, "poa-4g1", 2, -1) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } } else { printHttpReqBody() @@ -2504,10 +3130,11 @@ func Test_zoneStatus_zone_AP_threshold(t *testing.T) { func Test_loc_serv_stopSystemTest(t *testing.T) { err := deleteScenario("loc-serv-system-test") if err != nil { - log.Error("cannot delete scenario :", err) + t.Fatal("cannot delete scenario :", err) } - stopSystemTest() + //call to stopSystemTest done outside in case other test cases are running + //stopSystemTest() } func locServSubscriptionUserTracking(address string, callbackReference string) error { @@ -2552,43 +3179,44 @@ func locServSubscriptionZoneStatus(zoneId string, callbackReference string, nbAp return nil } -func validateZonalPresenceNotification(t *testing.T, zonalPresenceNotification *locServClient.ZonalPresenceNotification, expectedAddress string, expectedZoneId string, expectedCurrentAccessPointId string, expectedPreviousAccessPointId string, expectedUserEventType locServClient.UserEventType) { +func validateZonalPresenceNotification(zonalPresenceNotification *locServClient.ZonalPresenceNotification, expectedAddress string, expectedZoneId string, expectedCurrentAccessPointId string, expectedPreviousAccessPointId string, expectedUserEventType locServClient.UserEventType) string { if zonalPresenceNotification.Address != expectedAddress { - t.Fatalf("Address of notification not as expected") + return ("Address of notification not as expected: " + zonalPresenceNotification.Address + " instead of " + expectedAddress) } if zonalPresenceNotification.ZoneId != expectedZoneId { - t.Fatalf("ZoneId of notification not as expected") + return ("ZoneId of notification not as expected: " + zonalPresenceNotification.ZoneId + " instead of " + expectedZoneId) } if zonalPresenceNotification.CurrentAccessPointId != expectedCurrentAccessPointId { - t.Fatalf("CurrentAccessPointId of notification not as expected") + return ("CurrentAccessPointId of notification not as expected: " + zonalPresenceNotification.CurrentAccessPointId + " instead of " + expectedCurrentAccessPointId) } if zonalPresenceNotification.PreviousAccessPointId != expectedPreviousAccessPointId { - t.Fatalf("PreviousAccessPointId of notification not as expected") + return ("PreviousAccessPointId of notification not as expected: " + zonalPresenceNotification.PreviousAccessPointId + " instead of " + expectedPreviousAccessPointId) } if *zonalPresenceNotification.UserEventType != expectedUserEventType { - t.Fatalf("UserEventType of notification not as expected") + return ("UserEventType of notification not as expected: " + string(*zonalPresenceNotification.UserEventType) + " instead of " + string(expectedUserEventType)) } + return "" } -func validateZoneStatusNotification(t *testing.T, zoneStatusNotification *locServClient.ZoneStatusNotification, expectedZoneId string, expectedApId string, expectedNbUsersInAP int32, expectedNbUsersInZone int32) { +func validateZoneStatusNotification(zoneStatusNotification *locServClient.ZoneStatusNotification, expectedZoneId string, expectedApId string, expectedNbUsersInAP int32, expectedNbUsersInZone int32) string { if zoneStatusNotification.ZoneId != expectedZoneId { - t.Fatalf("ZoneId of notification not as expected: " + zoneStatusNotification.ZoneId + " instead of " + expectedZoneId) + return ("ZoneId of notification not as expected: " + zoneStatusNotification.ZoneId + " instead of " + expectedZoneId) } if expectedNbUsersInZone != -1 { if zoneStatusNotification.NumberOfUsersInZone != expectedNbUsersInZone { - t.Fatalf("NumberOfUsersInZone of notification not as expected: " + strconv.Itoa(int(zoneStatusNotification.NumberOfUsersInZone)) + " instead of " + strconv.Itoa(int(expectedNbUsersInZone))) + return ("NumberOfUsersInZone of notification not as expected: " + strconv.Itoa(int(zoneStatusNotification.NumberOfUsersInZone)) + " instead of " + strconv.Itoa(int(expectedNbUsersInZone))) } } if expectedNbUsersInAP != -1 { if zoneStatusNotification.NumberOfUsersInAP != expectedNbUsersInAP { - t.Fatalf("NumberOfUsersInAP of notification not as expected: " + strconv.Itoa(int(zoneStatusNotification.NumberOfUsersInAP)) + " instead of " + strconv.Itoa(int(expectedNbUsersInAP))) + return ("NumberOfUsersInAP of notification not as expected: " + strconv.Itoa(int(zoneStatusNotification.NumberOfUsersInAP)) + " instead of " + strconv.Itoa(int(expectedNbUsersInAP))) } if zoneStatusNotification.AccessPointId != expectedApId { - t.Fatalf("AccessPointId of notification not as expected: " + zoneStatusNotification.AccessPointId + " instead of " + expectedApId) + return ("AccessPointId of notification not as expected: " + zoneStatusNotification.AccessPointId + " instead of " + expectedApId) } - } + return "" } diff --git a/test/system/rnis-system-test.yaml b/test/system/rnis-system-test.yaml new file mode 100644 index 000000000..c76a264a1 --- /dev/null +++ b/test/system/rnis-system-test.yaml @@ -0,0 +1,1166 @@ +version: 1.5.6 +name: rnis-system-test +deployment: + netChar: + latency: 50 + latencyVariation: 10 + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + throughput: null + packetLoss: null + domains: + - + id: PUBLIC + name: PUBLIC + type: PUBLIC + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + zones: + - + id: PUBLIC-COMMON + name: PUBLIC-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + networkLocations: + - + id: PUBLIC-COMMON-DEFAULT + name: PUBLIC-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + cellularDomainConfig: null + - + id: 13411898-c7e1-472d-bdf7-c4afbefe4613 + name: operator-cell1 + type: OPERATOR-CELLULAR + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + cellularDomainConfig: + mnc: '001' + mcc: '001' + defaultCellId: FFFFFFF + zones: + - + id: operator-cell1-COMMON + name: operator-cell1-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + networkLocations: + - + id: operator-cell1-COMMON-DEFAULT + name: operator-cell1-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + - + id: dcf59ab0-cb3d-4dbd-8946-b522eeed685b + name: zone1 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone1-DEFAULT + name: zone1-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: b412ccca-402a-4d9e-9f68-fca01bfdc2f9 + name: poa-4g1 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000001' + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + physicalLocations: + - + id: abc18c96-1015-4dee-b32d-cac04ea5db36 + name: ue1 + type: UE + geoData: + eopMode: LOOP + location: null + radius: null + path: null + velocity: null + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '111111111111' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + - + id: 223933af-b399-41ca-999a-5e798bf6eb1d + name: poa-4g2 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000002' + geoData: + location: + type: Point + coordinates: + - 7.415917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 6a0e53da-f162-49cf-8c7b-0f1df0f2ccdf + name: poa1 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 3bd21819-c104-4401-9ac7-b945461d3f87 + name: poa-5g1 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000001' + geoData: + location: + type: Point + coordinates: + - 7.411916 + - 43.733494 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 098419d2-e586-49ae-8605-c577616a8b50 + name: poa-wifi1 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000001 + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: a20bad45-bf09-426f-aed9-e55587c737db + name: zone2 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone2-DEFAULT + name: zone2-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 5c64c906-a92b-4898-b861-18a13b3fd65c + name: poa-4g3 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000003' + geoData: + location: + type: Point + coordinates: + - 7.417917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: e7b158ee-fbc5-4362-854a-da36c4ca22bc + name: poa-5g2 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000002' + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 5b21944f-ea19-4342-9485-5118a3b18435 + name: poa-5g3 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000003' + geoData: + location: + type: Point + coordinates: + - 7.421917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: d89d4ea2-6dea-40ce-b6ed-9640dcfd9422 + name: poa2 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: df2fcd56-217f-4f61-a199-e3c72395a4e9 + name: poa-wifi2 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000002 + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 432c8759-b277-48dd-bc9a-d6d702fa68d6 + name: zone3 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone3-DEFAULT + name: zone3-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 1c9fc733-3d3e-4d40-8571-bde025e63728 + name: poa-wifi3 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000003 + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: d626d8dc-21cb-44ed-acbc-e6669fe28245 + name: poa3 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: b1470f5e-2556-432c-b8ca-842037a3ab9d + name: poa-wifi4 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000004 + geoData: + location: + type: Point + coordinates: + - 7.427917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: 3a1315a1-26f9-4259-9a4b-cf38f2af0c7f + name: poa-5g4 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000004' + geoData: + location: + type: Point + coordinates: + - 7.423917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: ea326a41-9063-4f28-9d19-96802418bd51 + name: poa-4g4 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000004' + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 143fa19f-52d4-4eec-9edc-098f06b4414d + name: zone4 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone4-DEFAULT + name: zone4-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 81624ea4-a1d4-42d7-9263-42b93b9391cf + name: poa-wifi5 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000005 + geoData: + location: + type: Point + coordinates: + - 7.429917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: 4fe82b81-b9dc-45f5-b816-e5927e82747c + name: poa4 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 1f9f108b-5cec-47a4-8569-6afd2732ca6e + name: poa5 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.433917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: cef4bf85-164e-4232-94b8-ca5edec1e1d1 + name: poa-4g5 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 73fee2c4-284f-47ab-993d-273849dba667 + name: poa-5g5 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 48d182c3-3728-46d2-9b0f-22a110183eee + name: zone5 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone5-DEFAULT + name: zone5-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 5ad4f50a-52f5-4b7f-b7d9-573d58afad3d + name: poa6 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.435917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + interDomainLatency: null + interDomainLatencyVariation: null + interDomainThroughput: null + interDomainPacketLoss: null + meta: null + userMeta: null +id: null +description: null +config: null + diff --git a/test/system/rnis_test.go b/test/system/rnis_test.go new file mode 100644 index 000000000..9828defb7 --- /dev/null +++ b/test/system/rnis_test.go @@ -0,0 +1,1540 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "encoding/json" + "fmt" + "strconv" + "testing" + + "context" + "time" + + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" + rnisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client" +) + +var rnisAppClient *rnisClient.APIClient +var rnisServerUrl string + +func init() { + + err := startSystemTest() + if err != nil { + log.Error("Cannot start system test: ", err) + } + //create client + rnisAppClientCfg := rnisClient.NewConfiguration() + if hostUrlStr == "" { + hostUrlStr = "http://localhost" + } + + rnisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/rni/v2" + + rnisAppClient = rnisClient.NewAPIClient(rnisAppClientCfg) + if rnisAppClient == nil { + log.Error("Failed to create RNIS App REST API client: ", rnisAppClientCfg.BasePath) + } + //NOTE: if localhost is set as the hostUrl, might not be reachable from the service, export MEEP_HOST_TEST_URL ="http://[yourhost]" + rnisServerUrl = hostUrlStr + ":" + httpListenerPort + + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + +} + +func initialiseRnisTest() { + log.Info("activating Scenario") + err := activateScenario("rnis-system-test") + if err != nil { + log.Fatal("Scenario cannot be activated: ", err) + } + time.Sleep(1000 * time.Millisecond) + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + if err != nil { + log.Fatal("GIS engine error: ", err) + } + + time.Sleep(1000 * time.Millisecond) +} + +func clearUpRnisTest() { + log.Info("terminating Scenario") + terminateScenario() + time.Sleep(1000 * time.Millisecond) +} + +//no really a test, but loading the scenarios needed that will be used in the following tests +//deletion of those scenarios at the end +func Test_RNIS_load_scenarios(t *testing.T) { + + // no override if the name is already in the DB.. security not to override something important + err := createScenario("rnis-system-test", "rnis-system-test.yaml") + if err != nil { + t.Fatal("Cannot create scenario, keeping the one already there and continuing testing with it :", err) + } +} + +func Test_RNIS_4g_to_4g_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testTrgEcgi := rnisClient.Ecgi{CellId: "4000002", Plmn: &rnisClient.Plmn{"001", "001"}} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.CellChangeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateCellChangeNotification(&body, &testAssociateId, &testSrcEcgi, &testTrgEcgi) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_4g_to_4g_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testTrgEcgi := rnisClient.Ecgi{CellId: "4000003", Plmn: &rnisClient.Plmn{"001", "001"}} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.CellChangeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateCellChangeNotification(&body, &testAssociateId, &testSrcEcgi, &testTrgEcgi) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_4g_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabRelNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabRelNotification(&body, &testAssociateId, &testSrcEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_4g_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabRelNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabRelNotification(&body, &testAssociateId, &testSrcEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_4g_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabRelNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabRelNotification(&body, &testAssociateId, &testSrcEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_4g_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabRelNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabRelNotification(&body, &testAssociateId, &testSrcEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_5g_to_5g_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_5g_to_5g_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_5g_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testEcgi := rnisClient.Ecgi{CellId: "4000003", Plmn: &rnisClient.Plmn{"001", "001"}} + //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA + testErabId := int32(2) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabEstNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabEstNotification(&body, &testAssociateId, &testEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_5g_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_5g_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_5g_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_wifi_to_wifi_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_wifi_to_wifi_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_wifi_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_wifi_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testEcgi := rnisClient.Ecgi{CellId: "4000004", Plmn: &rnisClient.Plmn{"001", "001"}} + //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA + testErabId := int32(2) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabEstNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabEstNotification(&body, &testAssociateId, &testEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_wifi_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_wifi_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_generic_to_generic_same_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_generic_to_generic_diff_zone(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_generic_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_generic_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testEcgi := rnisClient.Ecgi{CellId: "4000005", Plmn: &rnisClient.Plmn{"001", "001"}} + //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA + testErabId := int32(2) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabEstNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabEstNotification(&body, &testAssociateId, &testEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_generic_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_generic_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_none_to_4g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA + testErabId := int32(2) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body rnisClient.RabEstNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateRabEstNotification(&body, &testAssociateId, &testEcgi, testErabId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_none_to_5g(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_none_to_wifi(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_none_to_generic(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_RNIS_none_to_none(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testErabId := int32(1) + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionRabEst(rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionRabRel(testErabId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + err = rnisSubscriptionCellChange(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 1.0, 1.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +//not a real test, just the last test that stops the system test environment +func Test_RNIS_stopSystemTest(t *testing.T) { + err := deleteScenario("rnis-system-test") + if err != nil { + log.Error("cannot delete scenario :", err) + } +} + +func rnisSubscriptionRabEst(callbackReference string) error { + + //qci is ignored so just putting a value because the filter cannot be empty + rabEstSubscription := rnisClient.InlineSubscription{FilterCriteriaQci: &rnisClient.RabModSubscriptionFilterCriteriaQci{Qci: 80}, CallbackReference: callbackReference, SubscriptionType: "RabEstSubscription"} + + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), rabEstSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func rnisSubscriptionRabRel(erabId int32, callbackReference string) error { + + rabRelSubscription := rnisClient.InlineSubscription{FilterCriteriaQci: &rnisClient.RabModSubscriptionFilterCriteriaQci{ErabId: erabId}, CallbackReference: callbackReference, SubscriptionType: "RabRelSubscription"} + + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), rabRelSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func rnisSubscriptionCellChange(associateId rnisClient.AssociateId, callbackReference string) error { + + cellChangeSubscription := rnisClient.InlineSubscription{FilterCriteriaAssocHo: &rnisClient.CellChangeSubscriptionFilterCriteriaAssocHo{AssociateId: []rnisClient.AssociateId{associateId}}, CallbackReference: callbackReference, SubscriptionType: "CellChangeSubscription"} + + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), cellChangeSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func validateRabEstNotification(notification *rnisClient.RabEstNotification, expectedAssocId *rnisClient.AssociateId, expectedEcgi *rnisClient.Ecgi, expectedErabId int32) string { + if notification.NotificationType != "RabEstNotification" { + return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "RabEstNotification") + } + if expectedAssocId != nil { + if notification.AssociateId != nil || len(notification.AssociateId) > 0 { + if notification.AssociateId[0].Type_ != expectedAssocId.Type_ { + return ("AssocId:Type of notification not as expected: " + strconv.Itoa(int(notification.AssociateId[0].Type_)) + " instead of " + strconv.Itoa(int(expectedAssocId.Type_))) + } + if notification.AssociateId[0].Value != expectedAssocId.Value { + return ("AssocId:Value of notification not as expected: " + notification.AssociateId[0].Value + " instead of " + expectedAssocId.Value) + } + if len(notification.AssociateId) > 1 { + return ("AssocId of notification should have only one element") + } + } else { + return ("AssocId of notification is expected") + } + } + if expectedEcgi != nil { + if notification.Ecgi != nil { + if notification.Ecgi.CellId != expectedEcgi.CellId { + return ("Ecgi:CellId of notification not as expected: " + notification.Ecgi.CellId + " instead of " + expectedEcgi.CellId) + } + if notification.Ecgi.Plmn.Mcc != expectedEcgi.Plmn.Mcc { + return ("Ecgi:Plmn:Mcc of notification not as expected: " + notification.Ecgi.Plmn.Mcc + " instead of " + expectedEcgi.Plmn.Mcc) + } + if notification.Ecgi.Plmn.Mnc != expectedEcgi.Plmn.Mnc { + return ("Ecgi:Plmn:Mnc of notification not as expected: " + notification.Ecgi.Plmn.Mnc + " instead of " + expectedEcgi.Plmn.Mnc) + } + } else { + return ("Ecgi of notification is expected") + } + } + if notification.ErabId != expectedErabId { + return ("ErabId of notification not as expected: " + strconv.Itoa(int(notification.ErabId)) + " instead of " + strconv.Itoa(int(expectedErabId))) + } + if notification.ErabQosParameters != nil { + if notification.ErabQosParameters.Qci != 80 { + return ("ErabQosParameters:Qci of notification not as expected: " + strconv.Itoa(int(notification.ErabQosParameters.Qci)) + " instead of 80") + } + } else { + return ("ErabQosParameters of notification is expected") + } + return "" +} + +func validateRabRelNotification(notification *rnisClient.RabRelNotification, expectedAssocId *rnisClient.AssociateId, expectedEcgi *rnisClient.Ecgi, expectedErabId int32) string { + if notification.NotificationType != "RabRelNotification" { + return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "RabRelNotification") + } + if expectedAssocId != nil { + if notification.AssociateId != nil || len(notification.AssociateId) > 0 { + if notification.AssociateId[0].Type_ != expectedAssocId.Type_ { + return ("AssocId:Type of notification not as expected: " + strconv.Itoa(int(notification.AssociateId[0].Type_)) + " instead of " + strconv.Itoa(int(expectedAssocId.Type_))) + } + if notification.AssociateId[0].Value != expectedAssocId.Value { + return ("AssocId:Value of notification not as expected: " + notification.AssociateId[0].Value + " instead of " + expectedAssocId.Value) + } + if len(notification.AssociateId) > 1 { + return ("AssocId of notification should have only one element") + } + } else { + return ("AssocId of notification is expected") + } + } + if expectedEcgi != nil { + if notification.Ecgi != nil { + if notification.Ecgi.CellId != expectedEcgi.CellId { + return ("Ecgi:CellId of notification not as expected: " + notification.Ecgi.CellId + " instead of " + expectedEcgi.CellId) + } + if notification.Ecgi.Plmn.Mcc != expectedEcgi.Plmn.Mcc { + return ("Ecgi:Plmn:Mcc of notification not as expected: " + notification.Ecgi.Plmn.Mcc + " instead of " + expectedEcgi.Plmn.Mcc) + } + if notification.Ecgi.Plmn.Mnc != expectedEcgi.Plmn.Mnc { + return ("Ecgi:Plmn:Mnc of notification not as expected: " + notification.Ecgi.Plmn.Mnc + " instead of " + expectedEcgi.Plmn.Mnc) + } + } else { + return ("Ecgi of notification is expected") + } + } + if notification.ErabReleaseInfo.ErabId != expectedErabId { + return ("ErabId of notification not as expected: " + strconv.Itoa(int(notification.ErabReleaseInfo.ErabId)) + " instead of " + strconv.Itoa(int(expectedErabId))) + } + return "" +} + +func validateCellChangeNotification(notification *rnisClient.CellChangeNotification, expectedAssocId *rnisClient.AssociateId, expectedSrcEcgi *rnisClient.Ecgi, expectedTrgEcgi *rnisClient.Ecgi) string { + + if notification.NotificationType != "CellChangeNotification" { + return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "CellChangeNotification") + } + if expectedAssocId != nil { + if notification.AssociateId != nil || len(notification.AssociateId) > 0 { + if notification.AssociateId[0].Type_ != expectedAssocId.Type_ { + return ("AssocId:Type of notification not as expected: " + strconv.Itoa(int(notification.AssociateId[0].Type_)) + " instead of " + strconv.Itoa(int(expectedAssocId.Type_))) + } + if notification.AssociateId[0].Value != expectedAssocId.Value { + return ("AssocId:Value of notification not as expected: " + notification.AssociateId[0].Value + " instead of " + expectedAssocId.Value) + } + if len(notification.AssociateId) > 1 { + return ("AssocId of notification should have only one element") + } + } else { + return ("AssocId of notification is expected") + } + } + if expectedSrcEcgi != nil { + if notification.SrcEcgi != nil { + if notification.SrcEcgi.CellId != expectedSrcEcgi.CellId { + return ("SrcEcgi:CellId of notification not as expected: " + notification.SrcEcgi.CellId + " instead of " + expectedSrcEcgi.CellId) + } + if notification.SrcEcgi.Plmn.Mcc != expectedSrcEcgi.Plmn.Mcc { + return ("SrcEcgi:Plmn:Mcc of notification not as expected: " + notification.SrcEcgi.Plmn.Mcc + " instead of " + expectedSrcEcgi.Plmn.Mcc) + } + if notification.SrcEcgi.Plmn.Mnc != expectedSrcEcgi.Plmn.Mnc { + return ("SrcEcgi:Plmn:Mnc of notification not as expected: " + notification.SrcEcgi.Plmn.Mnc + " instead of " + expectedSrcEcgi.Plmn.Mnc) + } + } else { + return ("SrcEcgi of notification is expected") + } + } + if expectedTrgEcgi != nil { + if notification.TrgEcgi != nil || len(notification.TrgEcgi) > 0 { + if notification.TrgEcgi[0].CellId != expectedTrgEcgi.CellId { + return ("TrgEcgi:CellId of notification not as expected: " + notification.TrgEcgi[0].CellId + " instead of " + expectedTrgEcgi.CellId) + } + if notification.TrgEcgi[0].Plmn.Mcc != expectedTrgEcgi.Plmn.Mcc { + return ("TrgEcgi:Plmn:Mcc of notification not as expected: " + notification.TrgEcgi[0].Plmn.Mcc + " instead of " + expectedTrgEcgi.Plmn.Mcc) + } + if notification.TrgEcgi[0].Plmn.Mnc != expectedTrgEcgi.Plmn.Mnc { + return ("TrgEcgi:Plmn:Mnc of notification not as expected: " + notification.TrgEcgi[0].Plmn.Mnc + " instead of " + expectedTrgEcgi.Plmn.Mnc) + } + if len(notification.TrgEcgi) > 1 { + return ("TrgEcgi of notification should have only one element") + } + } else { + return ("TrgEcgi of notification is expected") + } + } + return "" +} diff --git a/test/system/wais-system-test.yaml b/test/system/wais-system-test.yaml new file mode 100644 index 000000000..f439a3ac3 --- /dev/null +++ b/test/system/wais-system-test.yaml @@ -0,0 +1,1244 @@ +version: 1.5.6 +name: wais-system-test +deployment: + netChar: + latency: 50 + latencyVariation: 10 + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + throughput: null + packetLoss: null + domains: + - + id: PUBLIC + name: PUBLIC + type: PUBLIC + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + zones: + - + id: PUBLIC-COMMON + name: PUBLIC-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + networkLocations: + - + id: PUBLIC-COMMON-DEFAULT + name: PUBLIC-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + cellularDomainConfig: null + - + id: 13411898-c7e1-472d-bdf7-c4afbefe4613 + name: operator-cell1 + type: OPERATOR-CELLULAR + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + cellularDomainConfig: + mnc: '001' + mcc: '001' + defaultCellId: FFFFFFF + zones: + - + id: operator-cell1-COMMON + name: operator-cell1-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + networkLocations: + - + id: operator-cell1-COMMON-DEFAULT + name: operator-cell1-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + - + id: dcf59ab0-cb3d-4dbd-8946-b522eeed685b + name: zone1 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone1-DEFAULT + name: zone1-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: b412ccca-402a-4d9e-9f68-fca01bfdc2f9 + name: poa-4g1 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000001' + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + physicalLocations: + - + id: abc18c96-1015-4dee-b32d-cac04ea5db36 + name: ue1 + type: UE + geoData: + eopMode: LOOP + location: null + radius: null + path: null + velocity: null + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '111111111111' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + - + id: cb9bc9de-6aef-4b57-a540-e256efb17f04 + name: ue2 + type: UE + geoData: {location: null, radius: null, path: null, eopMode: null, velocity: null} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '222222222222' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + - + id: d8107440-c83b-499d-81cc-b6cf68b76e95 + name: ue3 + type: UE + geoData: {location: null, radius: null, path: null, eopMode: null, velocity: null} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '333333333333' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + - + id: 10970d7b-8fbd-4d2f-a6de-00b118ad3dc2 + name: ue4 + type: UE + geoData: {location: null, radius: null, path: null, eopMode: null, velocity: null} + connected: true + wireless: true + wirelessType: 'wifi,5g,4g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '444444444444' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + - + id: 223933af-b399-41ca-999a-5e798bf6eb1d + name: poa-4g2 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000002' + geoData: + location: + type: Point + coordinates: + - 7.415917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 6a0e53da-f162-49cf-8c7b-0f1df0f2ccdf + name: poa1 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 3bd21819-c104-4401-9ac7-b945461d3f87 + name: poa-5g1 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000001' + geoData: + location: + type: Point + coordinates: + - 7.411916 + - 43.733494 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 098419d2-e586-49ae-8605-c577616a8b50 + name: poa-wifi1 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000001 + geoData: + location: + type: Point + coordinates: + - 7.413917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: a20bad45-bf09-426f-aed9-e55587c737db + name: zone2 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone2-DEFAULT + name: zone2-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 5c64c906-a92b-4898-b861-18a13b3fd65c + name: poa-4g3 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000003' + geoData: + location: + type: Point + coordinates: + - 7.417917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: e7b158ee-fbc5-4362-854a-da36c4ca22bc + name: poa-5g2 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000002' + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 5b21944f-ea19-4342-9485-5118a3b18435 + name: poa-5g3 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000003' + geoData: + location: + type: Point + coordinates: + - 7.421917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: d89d4ea2-6dea-40ce-b6ed-9640dcfd9422 + name: poa2 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: df2fcd56-217f-4f61-a199-e3c72395a4e9 + name: poa-wifi2 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000002 + geoData: + location: + type: Point + coordinates: + - 7.419917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 432c8759-b277-48dd-bc9a-d6d702fa68d6 + name: zone3 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone3-DEFAULT + name: zone3-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 1c9fc733-3d3e-4d40-8571-bde025e63728 + name: poa-wifi3 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000003 + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: d626d8dc-21cb-44ed-acbc-e6669fe28245 + name: poa3 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: b1470f5e-2556-432c-b8ca-842037a3ab9d + name: poa-wifi4 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000004 + geoData: + location: + type: Point + coordinates: + - 7.427917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: 3a1315a1-26f9-4259-9a4b-cf38f2af0c7f + name: poa-5g4 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000004' + geoData: + location: + type: Point + coordinates: + - 7.423917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: ea326a41-9063-4f28-9d19-96802418bd51 + name: poa-4g4 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000004' + geoData: + location: + type: Point + coordinates: + - 7.425917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 143fa19f-52d4-4eec-9edc-098f06b4414d + name: zone4 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone4-DEFAULT + name: zone4-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 81624ea4-a1d4-42d7-9263-42b93b9391cf + name: poa-wifi5 + type: POA-WIFI + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poaWifiConfig: + macId: a00000000005 + geoData: + location: + type: Point + coordinates: + - 7.429917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + physicalLocations: null + - + id: 4fe82b81-b9dc-45f5-b816-e5927e82747c + name: poa4 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 1f9f108b-5cec-47a4-8569-6afd2732ca6e + name: poa5 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.433917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: cef4bf85-164e-4232-94b8-ca5edec1e1d1 + name: poa-4g5 + type: POA-4G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa4GConfig: + cellId: '4000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.735004 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + - + id: 73fee2c4-284f-47ab-993d-273849dba667 + name: poa-5g5 + type: POA-5G + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + poa5GConfig: + cellId: '500000005' + geoData: + location: + type: Point + coordinates: + - 7.431917 + - 43.732006 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + - + id: 48d182c3-3728-46d2-9b0f-22a110183eee + name: zone5 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + meta: + display.map.color: "" + networkLocations: + - + id: zone5-DEFAULT + name: zone5-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + - + id: 5ad4f50a-52f5-4b7f-b7d9-573d58afad3d + name: poa6 + type: POA + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + geoData: + location: + type: Point + coordinates: + - 7.435917 + - 43.733505 + radius: 100 + path: null + eopMode: null + velocity: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + interDomainLatency: null + interDomainLatencyVariation: null + interDomainThroughput: null + interDomainPacketLoss: null + meta: null + userMeta: null +id: null +description: null +config: null + diff --git a/test/system/wais_test.go b/test/system/wais_test.go new file mode 100644 index 000000000..a2d772e45 --- /dev/null +++ b/test/system/wais_test.go @@ -0,0 +1,1160 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "encoding/json" + "fmt" + //"strconv" + "testing" + + "context" + "time" + + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" + waisClient "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client" +) + +var waisAppClient *waisClient.APIClient +var waisServerUrl string + +func init() { + + err := startSystemTest() + if err != nil { + log.Error("Cannot start system test: ", err) + } + //create client + waisAppClientCfg := waisClient.NewConfiguration() + if hostUrlStr == "" { + hostUrlStr = "http://localhost" + } + + waisAppClientCfg.BasePath = hostUrlStr + "/" + sandboxName + "/wai/v2" + + waisAppClient = waisClient.NewAPIClient(waisAppClientCfg) + if waisAppClient == nil { + log.Error("Failed to create WAIS App REST API client: ", waisAppClientCfg.BasePath) + } + //NOTE: if localhost is set as the hostUrl, might not be reachable from the service, export MEEP_HOST_TEST_URL ="http://[yourhost]" + waisServerUrl = hostUrlStr + ":" + httpListenerPort + + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + +} + +func initialiseWaisTest() { + log.Info("activating Scenario") + err := activateScenario("wais-system-test") + if err != nil { + log.Fatal("Scenario cannot be activated: ", err) + } + time.Sleep(1000 * time.Millisecond) + //enable gis engine mobility, poas-in-range and netchar update + geAutomationUpdate(true, false, true, true) + if err != nil { + log.Fatal("GIS engine error: ", err) + } + + time.Sleep(1000 * time.Millisecond) +} + +func clearUpWaisTest() { + log.Info("terminating Scenario") + terminateScenario() + time.Sleep(1000 * time.Millisecond) +} + +//no really a test, but loading the scenarios needed that will be used in the following tests +//deletion of those scenarios at the end +func Test_WAIS_load_scenarios(t *testing.T) { + + // no override if the name is already in the DB.. security not to override something important + err := createScenario("wais-system-test", "wais-system-test.yaml") + if err != nil { + t.Fatal("Cannot create scenario, keeping the one already there and continuing testing with it :", err) + } +} + +func Test_WAIS_4g_to_4g_same_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.415917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_4g_to_4g_diff_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_4g_to_5g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_4g_to_wifi_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + testStaMacId := "111111111111" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_4g_to_generic_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_4g_to_none_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_5g_to_5g_same_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000002" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.421917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_5g_to_5g_diff_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000002" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_5g_to_4g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000002" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.417917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_5g_to_wifi_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000002" + testStaMacId := "111111111111" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_5g_to_generic_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000002" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.419917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_5g_to_none_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000002" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_wifi_to_wifi_same_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacIdFrom := "a00000000003" + testApMacIdTo := "a00000000004" + testStaMacIdFrom := "" + testStaMacIdTo := "111111111111" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacIdFrom, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + err = waisSubscriptionAssocSta(testApMacIdTo, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.427917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 2 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacIdFrom, testStaMacIdFrom) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateAssocStaNotification(&body, testApMacIdTo, testStaMacIdTo) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_wifi_to_wifi_diff_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacIdFrom := "a00000000003" + testApMacIdTo := "a00000000005" + testStaMacIdFrom := "" + testStaMacIdTo := "111111111111" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacIdFrom, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + err = waisSubscriptionAssocSta(testApMacIdTo, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 2 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacIdFrom, testStaMacIdFrom) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + err = json.Unmarshal([]byte(httpReqBody[1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateAssocStaNotification(&body, testApMacIdTo, testStaMacIdTo) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_wifi_to_5g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000003" + testStaMacId := "" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.423917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_wifi_to_4g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000003" + testStaMacId := "" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_wifi_to_generic_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000003" + testStaMacId := "" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.425917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_wifi_to_none_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000003" + testStaMacId := "" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_generic_to_generic_same_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000005" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.433917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_generic_to_generic_diff_zone_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000005" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.435917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_generic_to_wifi_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000005" + testStaMacId := "111111111111" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.429917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_generic_to_4g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000005" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_generic_to_5g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000005" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_generic_to_none_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000005" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_none_to_4g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_none_to_5g_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.411917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_none_to_wifi_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + testStaMacId := "111111111111" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) == 1 { + var body waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateAssocStaNotification(&body, testApMacId, testStaMacId) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_WAIS_none_to_generic_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +func Test_WAIS_none_to_none_assocSta(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseWaisTest() + defer clearUpWaisTest() + + testAddress := "ue1" + testApMacId := "a00000000001" + + //moving to initial position + geMoveAssetCoordinates(testAddress, 0.0, 0.0) + time.Sleep(2000 * time.Millisecond) + + //subscription to test + err := waisSubscriptionAssocSta(testApMacId, waisServerUrl) + if err != nil { + t.Fatalf("Subscription failed") + } + + log.Info("moving asset") + geMoveAssetCoordinates(testAddress, 1.0, 1.0) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) >= 1 { + printHttpReqBody() + t.Fatalf("Notification received") + } +} + +//not a real test, just the last test that stops the system test environment +func Test_WAIS_stopSystemTest(t *testing.T) { + err := deleteScenario("wais-system-test") + if err != nil { + log.Error("cannot delete scenario :", err) + } +} + +func waisSubscriptionAssocSta(macId string, callbackReference string) error { + + assocStaSubscription := waisClient.InlineSubscription{ApId: &waisClient.ApIdentity{nil, macId, nil}, CallbackReference: callbackReference, SubscriptionType: "AssocStaSubscription"} + // assocStaSubscription2 := waisClient.InlineSubscription{nil, &waisClient.ApIdentity{nil, macId, nil}, callbackReference, nil, nil, "AssocStaSubscription"} + + _, _, err := waisAppClient.WaiApi.SubscriptionsPOST(context.TODO(), assocStaSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func validateAssocStaNotification(notification *waisClient.AssocStaNotification, expectedApMacId string, expectedStaMacId string) string { + + if notification.NotificationType != "AssocStaNotification" { + return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "AssocStaNotification") + } + if expectedStaMacId != "" { + if notification.StaId != nil || len(notification.StaId) > 0 { + if notification.StaId[0].MacId != expectedStaMacId { + return ("StaId:MacId of notification not as expected: " + notification.StaId[0].MacId + " instead of " + expectedStaMacId) + } + if len(notification.StaId) > 1 { + return ("StaId of notification should have only one element") + } + } else { + return ("StaId of notification is expected") + } + } + if notification.ApId.MacId != expectedApMacId { + return ("ApId:MacId of notification not as expected: " + notification.ApId.MacId + " instead of " + expectedApMacId) + } + return "" +} diff --git a/test/system/zsystemTest_test.go b/test/system/zsystemTest_test.go new file mode 100644 index 000000000..35413eb03 --- /dev/null +++ b/test/system/zsystemTest_test.go @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "testing" + + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" +) + +func init() { + //init called at the same time as all other inits + err := startSystemTest() + if err != nil { + log.Fatal("Cannot start system test") + } +} + +//not a real test, just the last test that stops the system test environment +func Test_stopSystemTest(t *testing.T) { + stopSystemTest() +} -- GitLab From 8092d56efc7b495c10dfa68099ed9f62b918120b Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Thu, 17 Dec 2020 13:54:27 -0500 Subject: [PATCH 012/194] PR comments and all test pass for locServ, rnis, wais --- go-apps/meep-loc-serv/sbi/loc-serv-sbi.go | 13 +++- go-apps/meep-wais/sbi/wais-sbi.go | 18 +++++- test/system/go.mod | 20 +------ test/system/go.sum | 37 ------------ test/system/loc-serv_test.go | 22 +++---- test/system/rnis_test.go | 14 +---- test/system/systemTest.go | 72 +++++++++++++++++------ test/system/wais_test.go | 70 ++++++++++++---------- test/system/zsystemTest_test.go | 2 +- 9 files changed, 132 insertions(+), 136 deletions(-) diff --git a/go-apps/meep-loc-serv/sbi/loc-serv-sbi.go b/go-apps/meep-loc-serv/sbi/loc-serv-sbi.go index 3140ead8c..4b02e2c15 100755 --- a/go-apps/meep-loc-serv/sbi/loc-serv-sbi.go +++ b/go-apps/meep-loc-serv/sbi/loc-serv-sbi.go @@ -19,6 +19,7 @@ package sbi import ( "errors" "strings" + "sync" "time" dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model" @@ -52,6 +53,7 @@ type LocServSbi struct { updateAccessPointInfoCB func(string, string, string, string, int, *float32, *float32) updateScenarioNameCB func(string) cleanUpCB func() + mutex sync.Mutex } var sbi *LocServSbi @@ -176,6 +178,10 @@ func processActiveScenarioTerminate() { } func processActiveScenarioUpdate() { + + sbi.mutex.Lock() + defer sbi.mutex.Unlock() + log.Debug("processActiveScenarioUpdate") // Get previous list of connected UEs @@ -245,7 +251,7 @@ func processActiveScenarioUpdate() { } // Update POA Cellular and Wifi info - poaTypeList := [3]string{mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi} + poaTypeList := [4]string{mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi, mod.NodeTypePoa} conType := "" for _, poaType := range poaTypeList { @@ -306,6 +312,9 @@ func getNetworkLocation(name string) (zone string, netLoc string, err error) { func refreshPositions() { + sbi.mutex.Lock() + defer sbi.mutex.Unlock() + // Update UE Positions uePositionMap, _ := sbi.gisCache.GetAllPositions(gc.TypeUe) ueNameList := sbi.activeModel.GetNodeNames("UE") @@ -335,7 +344,7 @@ func refreshPositions() { // Update POA Positions poaPositionMap, _ := sbi.gisCache.GetAllPositions(gc.TypePoa) - poaNameList := sbi.activeModel.GetNodeNames(mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi) + poaNameList := sbi.activeModel.GetNodeNames(mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi, mod.NodeTypePoa) for _, name := range poaNameList { // Get network location zone, netLoc, err := getNetworkLocation(name) diff --git a/go-apps/meep-wais/sbi/wais-sbi.go b/go-apps/meep-wais/sbi/wais-sbi.go index aedb172a8..18e930d47 100755 --- a/go-apps/meep-wais/sbi/wais-sbi.go +++ b/go-apps/meep-wais/sbi/wais-sbi.go @@ -17,6 +17,7 @@ package sbi import ( + "sync" "time" dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model" @@ -50,6 +51,7 @@ type WaisSbi struct { updateAccessPointInfoCB func(string, string, *float32, *float32, []string) updateScenarioNameCB func(string) cleanUpCB func() + mutex sync.Mutex } var sbi *WaisSbi @@ -175,6 +177,10 @@ func processActiveScenarioTerminate() { } func processActiveScenarioUpdate() { + + sbi.mutex.Lock() + defer sbi.mutex.Unlock() + log.Debug("processActiveScenarioUpdate") // Get previous list of connected UEs @@ -254,13 +260,19 @@ func processActiveScenarioUpdate() { var ueMacIdList []string for _, pl := range poa.PhysicalLocations { - ueMacIdList = append(ueMacIdList, pl.MacId) + if pl.Connected { + ueMacIdList = append(ueMacIdList, pl.MacId) + } } sbi.updateAccessPointInfoCB(name, poa.PoaWifiConfig.MacId, longitude, latitude, ueMacIdList) } } func refreshPositions() { + + sbi.mutex.Lock() + defer sbi.mutex.Unlock() + // Update POA Positions poaPositionMap, _ := sbi.gisCache.GetAllPositions(gc.TypePoa) poaNameList := sbi.activeModel.GetNodeNames(mod.NodeTypePoaWifi) @@ -283,7 +295,9 @@ func refreshPositions() { // Get list UE MacIds var ueMacIdList []string for _, pl := range poa.PhysicalLocations { - ueMacIdList = append(ueMacIdList, pl.MacId) + if pl.Connected { + ueMacIdList = append(ueMacIdList, pl.MacId) + } } sbi.updateAccessPointInfoCB(name, poa.PoaWifiConfig.MacId, longitude, latitude, ueMacIdList) diff --git a/test/system/go.mod b/test/system/go.mod index 594efc1ee..d24464c1b 100644 --- a/test/system/go.mod +++ b/test/system/go.mod @@ -3,21 +3,12 @@ module github.com/InterDigitalInc/AdvantEDGE/test/system go 1.12 require ( - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-cache v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0-00010101000000-000000000000 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client v0.0.0 github.com/ghodss/yaml v1.0.0 github.com/gorilla/handlers v1.4.0 @@ -27,20 +18,11 @@ require ( ) replace ( - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr => ../../go-packages/meep-data-key-mgr - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model => ../../go-packages/meep-data-model - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-cache => ../../go-packages/meep-gis-cache github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-gis-engine-client => ../../go-packages/meep-gis-engine-client - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger => ../../go-packages/meep-http-logger github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-loc-serv-client => ../../go-packages/meep-loc-serv-client github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store => ../../go-packages/meep-metric-store - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client => ../../go-packages/meep-platform-ctrl-client - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client => ../../go-packages/meep-rnis-client github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client => ../../go-packages/meep-sandbox-ctrl-client - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client => ../../go-packages/meep-wais-client ) diff --git a/test/system/go.sum b/test/system/go.sum index 4b292bf32..c205c5dc3 100644 --- a/test/system/go.sum +++ b/test/system/go.sum @@ -1,72 +1,35 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/InterDigitalInc/AdvantEDGE v1.5.0 h1:Gv1wxW7kV31reTqxX5TflvvYEEqnxaUlKWvgoandpfI= -github.com/InterDigitalInc/AdvantEDGE v1.6.0 h1:MTmJx1AQ4rc1qAJHLS54C5lU2i1NoqukyTcnaPiZ/hU= -github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0-20200703133018-94138d8210a3 h1:hbmjC8Fpv+9m2NytJO4bkf25Xz+IRn28/9CseJxS9YQ= -github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0-20200703133018-94138d8210a3/go.mod h1:OboTWbYNj5baVwRuX8A7o8JSx4cxVqT9uDs9DWFP8sc= -github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= -github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= -github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= -github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 h1:trnwuu/Q8T59kgRjXcSDBODnyZP9wes+bnLn0lx4PgM= -github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= -github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345/go.mod h1:OK4EvWJ441LQqGzed5NGB6vKBAE34n3z7iayPcEwr30= -github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72/go.mod h1:o+JdB7VetTHjLhU0N57x18B9voDBQe0paApdEAEoEfw= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= -github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= -github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237/go.mod h1:UOnLAUmVG5paym8pD3C4B9BQylUDC2vXFJJpT7JrlEA= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/test/system/loc-serv_test.go b/test/system/loc-serv_test.go index e8303746a..873e8bdab 100644 --- a/test/system/loc-serv_test.go +++ b/test/system/loc-serv_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package systemTest import ( "encoding/json" @@ -52,10 +52,6 @@ func init() { } //NOTE: if localhost is set as the hostUrl, might not be reachable from the service, export MEEP_HOST_TEST_URL ="http://[yourhost]" locServServerUrl = hostUrlStr + ":" + httpListenerPort - - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - } func initialiseLocServTest() { @@ -65,13 +61,9 @@ func initialiseLocServTest() { log.Fatal("Scenario cannot be activated: ", err) } time.Sleep(1000 * time.Millisecond) - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - if err != nil { - log.Fatal("GIS engine error: ", err) + if isAutomationReady(true, 10, 0) { + geAutomationUpdate(true, false, true, true) } - - time.Sleep(1000 * time.Millisecond) } func clearUpLocServTest() { @@ -2368,7 +2360,7 @@ func Test_none_to_wifi_zonalTraffic(t *testing.T) { } log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.431917, 43.735005) + geMoveAssetCoordinates(testAddress, 7.413917, 43.735005) time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { @@ -2409,7 +2401,7 @@ func Test_none_to_generic_zonalTraffic(t *testing.T) { } log.Info("moving asset") - geMoveAssetCoordinates(testAddress, 7.431917, 43.732005) + geMoveAssetCoordinates(testAddress, 7.413917, 43.732005) time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 1 { @@ -2940,8 +2932,8 @@ func Test_zoneStatus_zone_threshold(t *testing.T) { log.Info("moving asset") //moving to each different type of POA - geMoveAssetCoordinates("ue1", 7.415917, 43.733505) - geMoveAssetCoordinates("ue2", 7.419917, 43.733505) + geMoveAssetCoordinates("ue1", 7.413917, 43.733505) + geMoveAssetCoordinates("ue2", 7.411917, 43.733505) geMoveAssetCoordinates("ue3", 7.413917, 43.735005) geMoveAssetCoordinates("ue4", 7.413917, 43.732005) time.Sleep(2000 * time.Millisecond) diff --git a/test/system/rnis_test.go b/test/system/rnis_test.go index 9828defb7..d11df60db 100644 --- a/test/system/rnis_test.go +++ b/test/system/rnis_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package systemTest import ( "encoding/json" @@ -52,10 +52,6 @@ func init() { } //NOTE: if localhost is set as the hostUrl, might not be reachable from the service, export MEEP_HOST_TEST_URL ="http://[yourhost]" rnisServerUrl = hostUrlStr + ":" + httpListenerPort - - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - } func initialiseRnisTest() { @@ -65,13 +61,9 @@ func initialiseRnisTest() { log.Fatal("Scenario cannot be activated: ", err) } time.Sleep(1000 * time.Millisecond) - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - if err != nil { - log.Fatal("GIS engine error: ", err) + if isAutomationReady(true, 10, 0) { + geAutomationUpdate(true, false, true, true) } - - time.Sleep(1000 * time.Millisecond) } func clearUpRnisTest() { diff --git a/test/system/systemTest.go b/test/system/systemTest.go index 544ce8df8..6a8803c1a 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package systemTest import ( "context" @@ -67,9 +67,9 @@ func initialiseVars() { hostUrl, _ := url.Parse(strings.TrimSpace(os.Getenv("MEEP_HOST_TEST_URL"))) hostUrlStr = hostUrl.String() - if hostUrlStr == "" { - hostUrlStr = "http://localhost" - } + if hostUrlStr == "" { + hostUrlStr = "http://localhost" + } } func createClients() error { @@ -78,8 +78,8 @@ func createClients() error { platformCtrlAppClientCfg := platformCtrlClient.NewConfiguration() if hostUrlStr == "" { - hostUrlStr = "http://localhost" - } + hostUrlStr = "http://localhost" + } platformCtrlAppClientCfg.BasePath = hostUrlStr + "/platform-ctrl/v1" platformCtrlAppClient = platformCtrlClient.NewAPIClient(platformCtrlAppClientCfg) @@ -153,10 +153,10 @@ func createScenario(name string, filepath string) error { //converting to json since unmarshal with yaml directly not working well, while json does jsonContent, err := yaml.YAMLToJSON(yamlContent) - if err != nil { - log.Error("Failed converting yaml to json: ", err) - return err - } + if err != nil { + log.Error("Failed converting yaml to json: ", err) + return err + } var scenario platformCtrlClient.Scenario err = json.Unmarshal([]byte(jsonContent), &scenario) @@ -192,6 +192,12 @@ func activateScenario(name string) error { return err } + _, _, err = sandboxCtrlAppClient.ActiveScenarioApi.GetActiveScenario(context.TODO(), nil) + if err != nil { + log.Error("Scenario not active : ", err) + return err + } + //reinitialisation of http msg queue resetHttpReqBody() @@ -209,7 +215,7 @@ func terminateScenario() error { return nil } -func createBasics() error { +func createSystemTestReadyState() error { initialiseVars() log.Info("creating Clients") err := createClients() @@ -221,18 +227,18 @@ func createBasics() error { if err != nil { return err } else { - time.Sleep(20000 * time.Millisecond) + time.Sleep(30000 * time.Millisecond) } log.Info("creating Sandbox Clients") err = createSandboxClients(sandboxName) if err != nil { - clearBasics() + clearSystemTestReadyState() return err } return nil } -func clearBasics() { +func clearSystemTestReadyState() { log.Info("deleting Sandbox") deleteSandbox(sandboxName) } @@ -240,7 +246,7 @@ func clearBasics() { func startSystemTest() error { if !run { go main() - err := createBasics() + err := createSystemTestReadyState() if err != nil { run = false return err @@ -251,7 +257,7 @@ func startSystemTest() error { func stopSystemTest() { if run { - clearBasics() + clearSystemTestReadyState() run = false } } @@ -303,7 +309,7 @@ func main() { for { if !run { log.Info("Ran for ", count, " seconds") - clearBasics() + clearSystemTestReadyState() break } time.Sleep(time.Second) @@ -312,6 +318,38 @@ func main() { } +func isAutomationReady(waitUntilReady bool, maxRetry int, initialWait int) bool { + + if initialWait > 0 { + time.Sleep(time.Duration(initialWait) * time.Second) + } + + var err error + if waitUntilReady { + retry := 0 + + for retry <= maxRetry { + _, _, err = gisAppClient.AutomationApi.GetAutomationState(context.TODO()) + if err != nil { + retry++ + log.Error("Failed to communicate with gis engine but retrying: ", err) + time.Sleep(time.Second) + } else { + return true + } + } + log.Error("Failed to communicate with gis engine: ", err) + return false + } else { + _, _, err = gisAppClient.AutomationApi.GetAutomationState(context.TODO()) + if err != nil { + log.Error("Failed to communicate with gis engine: ", err) + return false + } + } + return true +} + func geAutomationUpdate(mobility bool, movement bool, poasInRange bool, netCharUpd bool) error { _, err := gisAppClient.AutomationApi.SetAutomationStateByName(context.TODO(), "MOBILITY", mobility) diff --git a/test/system/wais_test.go b/test/system/wais_test.go index a2d772e45..6915a0063 100644 --- a/test/system/wais_test.go +++ b/test/system/wais_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package systemTest import ( "encoding/json" @@ -52,10 +52,6 @@ func init() { } //NOTE: if localhost is set as the hostUrl, might not be reachable from the service, export MEEP_HOST_TEST_URL ="http://[yourhost]" waisServerUrl = hostUrlStr + ":" + httpListenerPort - - //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - } func initialiseWaisTest() { @@ -66,12 +62,9 @@ func initialiseWaisTest() { } time.Sleep(1000 * time.Millisecond) //enable gis engine mobility, poas-in-range and netchar update - geAutomationUpdate(true, false, true, true) - if err != nil { - log.Fatal("GIS engine error: ", err) + if isAutomationReady(true, 10, 0) { + geAutomationUpdate(true, false, true, true) } - - time.Sleep(1000 * time.Millisecond) } func clearUpWaisTest() { @@ -508,25 +501,31 @@ func Test_WAIS_wifi_to_wifi_same_zone_assocSta(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 2 { - var body waisClient.AssocStaNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) + var body1 waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body1) if err != nil { t.Fatalf("cannot unmarshall response") } - errStr := validateAssocStaNotification(&body, testApMacIdFrom, testStaMacIdFrom) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - err = json.Unmarshal([]byte(httpReqBody[1]), &body) + var body2 waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body2) if err != nil { t.Fatalf("cannot unmarshall response") } - errStr = validateAssocStaNotification(&body, testApMacIdTo, testStaMacIdTo) - if errStr != "" { + + //order not guaranteed + errStr1 := validateAssocStaNotification(&body1, testApMacIdFrom, testStaMacIdFrom) + errStr2 := validateAssocStaNotification(&body2, testApMacIdFrom, testStaMacIdFrom) + if errStr1 != "" && errStr2 != "" { printHttpReqBody() - t.Fatalf(errStr) + t.Fatalf(errStr1) + } + + errStr1 = validateAssocStaNotification(&body1, testApMacIdTo, testStaMacIdTo) + errStr2 = validateAssocStaNotification(&body2, testApMacIdTo, testStaMacIdTo) + if errStr1 != "" && errStr2 != "" { + printHttpReqBody() + t.Fatalf(errStr1) } } else { printHttpReqBody() @@ -556,6 +555,7 @@ func Test_WAIS_wifi_to_wifi_diff_zone_assocSta(t *testing.T) { if err != nil { t.Fatalf("Subscription failed") } + err = waisSubscriptionAssocSta(testApMacIdTo, waisServerUrl) if err != nil { t.Fatalf("Subscription failed") @@ -566,25 +566,31 @@ func Test_WAIS_wifi_to_wifi_diff_zone_assocSta(t *testing.T) { time.Sleep(2000 * time.Millisecond) if len(httpReqBody) == 2 { - var body waisClient.AssocStaNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) + var body1 waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body1) if err != nil { t.Fatalf("cannot unmarshall response") } - errStr := validateAssocStaNotification(&body, testApMacIdFrom, testStaMacIdFrom) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - err = json.Unmarshal([]byte(httpReqBody[1]), &body) + var body2 waisClient.AssocStaNotification + err = json.Unmarshal([]byte(httpReqBody[1]), &body2) if err != nil { t.Fatalf("cannot unmarshall response") } - errStr = validateAssocStaNotification(&body, testApMacIdTo, testStaMacIdTo) - if errStr != "" { + + //order not guaranteed + errStr1 := validateAssocStaNotification(&body1, testApMacIdFrom, testStaMacIdFrom) + errStr2 := validateAssocStaNotification(&body2, testApMacIdFrom, testStaMacIdFrom) + if errStr1 != "" && errStr2 != "" { printHttpReqBody() - t.Fatalf(errStr) + t.Fatalf(errStr1) + } + + errStr1 = validateAssocStaNotification(&body1, testApMacIdTo, testStaMacIdTo) + errStr2 = validateAssocStaNotification(&body2, testApMacIdTo, testStaMacIdTo) + if errStr1 != "" && errStr2 != "" { + printHttpReqBody() + t.Fatalf(errStr1) } } else { printHttpReqBody() diff --git a/test/system/zsystemTest_test.go b/test/system/zsystemTest_test.go index 35413eb03..05f10873b 100644 --- a/test/system/zsystemTest_test.go +++ b/test/system/zsystemTest_test.go @@ -14,7 +14,7 @@ * limitations under the License. */ -package main +package systemTest import ( "testing" -- GitLab From 6823c26f2cbfbd8f3833db93aa9a17350017cc4c Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Thu, 17 Dec 2020 16:41:25 -0500 Subject: [PATCH 013/194] upgrade scenarios to 1.6.0 --- test/system/loc-serv-system-test.yaml | 2 +- test/system/rnis-system-test.yaml | 2 +- test/system/wais-system-test.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/system/loc-serv-system-test.yaml b/test/system/loc-serv-system-test.yaml index ab45fb677..7b913f445 100644 --- a/test/system/loc-serv-system-test.yaml +++ b/test/system/loc-serv-system-test.yaml @@ -1,4 +1,4 @@ -version: 1.5.6 +version: 1.6.0 name: loc-serv-system-test deployment: netChar: diff --git a/test/system/rnis-system-test.yaml b/test/system/rnis-system-test.yaml index c76a264a1..ac2b2225e 100644 --- a/test/system/rnis-system-test.yaml +++ b/test/system/rnis-system-test.yaml @@ -1,4 +1,4 @@ -version: 1.5.6 +version: 1.6.0 name: rnis-system-test deployment: netChar: diff --git a/test/system/wais-system-test.yaml b/test/system/wais-system-test.yaml index f439a3ac3..cb3cf0109 100644 --- a/test/system/wais-system-test.yaml +++ b/test/system/wais-system-test.yaml @@ -1,4 +1,4 @@ -version: 1.5.6 +version: 1.6.0 name: wais-system-test deployment: netChar: -- GitLab From aa666eb4ad8ad3d7357d4dafc79a50012e302652 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 18 Dec 2020 09:22:04 -0500 Subject: [PATCH 014/194] renamed main to a function because not treated as an app by itself --- test/system/systemTest.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/system/systemTest.go b/test/system/systemTest.go index 6a8803c1a..a98e2d078 100644 --- a/test/system/systemTest.go +++ b/test/system/systemTest.go @@ -245,7 +245,7 @@ func clearSystemTestReadyState() { func startSystemTest() error { if !run { - go main() + go systemTest() err := createSystemTestReadyState() if err != nil { run = false @@ -262,7 +262,7 @@ func stopSystemTest() { } } -func main() { +func systemTest() { //create default route handler http.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) { -- GitLab From 4d685c342b0dc519430763dd5c14076b219aa549 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 18 Dec 2020 09:43:35 -0500 Subject: [PATCH 015/194] adding the script to test every test cases multiple times in a loop --- test/system/loopTest.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100755 test/system/loopTest.sh diff --git a/test/system/loopTest.sh b/test/system/loopTest.sh new file mode 100755 index 000000000..56f7e251f --- /dev/null +++ b/test/system/loopTest.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# This script executes go test X times +export MEEP_HOST_TEST_URL="http://10.3.16.150" + +i="0" + +while [ $i -lt 66 ] +do +output_prefix="result" +output_suffix=".txt" +output=${output_prefix}${i}${output_suffix} +go test -timeout 20m > ${output} +i=$[$i+1] +done -- GitLab From bf39f05e27c2fd0a7b5125df14e5cee0274c9815 Mon Sep 17 00:00:00 2001 From: Nikhil Doifode Date: Mon, 4 Jan 2021 10:59:50 -0500 Subject: [PATCH 016/194] Updated Incubator repository locations to new one --- go-apps/meep-virt-engine/entrypoint.sh | 2 +- playbooks/roles/helm/tasks/install.yml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/go-apps/meep-virt-engine/entrypoint.sh b/go-apps/meep-virt-engine/entrypoint.sh index 60d29b664..7c53cd290 100644 --- a/go-apps/meep-virt-engine/entrypoint.sh +++ b/go-apps/meep-virt-engine/entrypoint.sh @@ -2,7 +2,7 @@ set -e # Configure & update helm repo -helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/ +helm repo add incubator https://charts.helm.sh/incubator helm repo update # Start virt engine diff --git a/playbooks/roles/helm/tasks/install.yml b/playbooks/roles/helm/tasks/install.yml index 1f1fd5c19..043e6cd3c 100644 --- a/playbooks/roles/helm/tasks/install.yml +++ b/playbooks/roles/helm/tasks/install.yml @@ -8,10 +8,9 @@ state: present - name: "Enable incubator charts" - shell: "helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com/ --kubeconfig .kube/config" + shell: "helm repo add incubator https://charts.helm.sh/incubator --kubeconfig .kube/config" tags: helm - name: "Repo Update" shell: "helm repo update --kubeconfig .kube/config" tags: helm - -- GitLab From faea130bca96f1e52752bb57879133e38e4aaa78 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Wed, 13 Jan 2021 10:41:10 -0500 Subject: [PATCH 017/194] scenario name check in api --- go-apps/meep-platform-ctrl/server/platform-ctrl.go | 6 +++--- go-packages/meep-model/validator.go | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/go-apps/meep-platform-ctrl/server/platform-ctrl.go b/go-apps/meep-platform-ctrl/server/platform-ctrl.go index eabaf8762..d53353836 100644 --- a/go-apps/meep-platform-ctrl/server/platform-ctrl.go +++ b/go-apps/meep-platform-ctrl/server/platform-ctrl.go @@ -126,7 +126,7 @@ func Init() (err error) { // Validate DB scenarios & upgrade them if compatible for _, scenario := range scenarioList { - validScenario, status, err := mod.ValidateScenario(scenario) + validScenario, status, err := mod.ValidateScenario(scenario, "") if err == nil && status == mod.ValidatorStatusUpdated { // Retrieve scenario name s := new(Scenario) @@ -202,7 +202,7 @@ func pcCreateScenario(w http.ResponseWriter, r *http.Request) { } // Validate scenario - validScenario, _, err := mod.ValidateScenario(b) + validScenario, _, err := mod.ValidateScenario(b, scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) @@ -352,7 +352,7 @@ func pcSetScenario(w http.ResponseWriter, r *http.Request) { } // Validate scenario - validScenario, _, err := mod.ValidateScenario(b) + validScenario, _, err := mod.ValidateScenario(b, scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusBadRequest) diff --git a/go-packages/meep-model/validator.go b/go-packages/meep-model/validator.go index ba893e8a4..b18111bd7 100644 --- a/go-packages/meep-model/validator.go +++ b/go-packages/meep-model/validator.go @@ -59,7 +59,7 @@ func createNetChar(lat int32, latVar int32, dist string, tputDl int32, tputUl in } // ValidateScenario - Verify if json scenario is valid & supported. Upgrade scenario if possible & necessary. -func ValidateScenario(jsonScenario []byte) (validJsonScenario []byte, status string, err error) { +func ValidateScenario(jsonScenario []byte, name string) (validJsonScenario []byte, status string, err error) { var scenarioVersion semver.Version var scenarioUpdated = false @@ -70,6 +70,14 @@ func ValidateScenario(jsonScenario []byte) (validJsonScenario []byte, status str log.Error(err.Error()) return nil, ValidatorStatusError, err } + + if name != "" { + if scenario.Name != name { + err = errors.New("Scenario creation name " + name + " incompatible with scenario body content name " + scenario.Name + ". They must be the same.") + return nil, ValidatorStatusError, err + } + } + // Retrieve scenario version // If no version found, assume & set current validator version if scenario.Version == "" { -- GitLab From 15710b99c549decc13a06ffb457c0798c8557e2d Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Thu, 14 Jan 2021 12:26:18 -0500 Subject: [PATCH 018/194] merge --- docs/api-gis-engine/Apis/AutomationApi.md | 2 +- docs/api-gis-engine/Apis/GeospatialDataApi.md | 2 +- docs/api-gis-engine/README.md | 2 +- docs/api-location/.openapi-generator/FILES | 1 + docs/api-location/Apis/LocationApi.md | 447 +--- docs/api-location/Apis/UnsupportedApi.md | 453 ++++ docs/api-location/README.md | 34 +- docs/api-metric-engine-v2/Apis/MetricsApi.md | 2 +- .../Apis/SubscriptionsApi.md | 2 +- docs/api-metric-engine-v2/README.md | 2 +- docs/api-mg-manager/Apis/MembershipApi.md | 2 +- docs/api-mg-manager/Apis/StateTransferApi.md | 2 +- docs/api-mg-manager/README.md | 2 +- docs/api-rnis/.openapi-generator/FILES | 1 + docs/api-rnis/Apis/RniApi.md | 102 +- docs/api-rnis/Apis/UnsupportedApi.md | 108 + docs/api-rnis/README.md | 6 +- .../Apis/ActiveScenarioApi.md | 2 +- docs/api-sandbox-ctrl/Apis/EventReplayApi.md | 2 +- docs/api-sandbox-ctrl/Apis/EventsApi.md | 2 +- docs/api-sandbox-ctrl/README.md | 2 +- docs/api-wais/Apis/WaiApi.md | 2 +- docs/api-wais/README.md | 2 +- examples/demo1/src/demo-client/js/README.md | 2 + .../js/docs/InlineTrackingNotification.md | 8 + .../src/demo-client/js/docs/TimeStamp.md | 9 + .../js/docs/TrackingNotification.md | 2 +- .../js/docs/UserTrackingNotification.md | 2 +- .../demo1/src/demo-client/js/src/index.js | 16 +- .../src/model/InlineTrackingNotification.js | 86 + .../src/demo-client/js/src/model/TimeStamp.js | 97 + .../js/src/model/TrackingNotification.js | 13 +- .../js/src/model/UserTrackingNotification.js | 15 +- .../js/test/api/NotificationsApi.spec.js | 4 +- .../model/InlineTrackingNotification.spec.js | 66 + .../js/test/model/TimeStamp.spec.js | 72 + .../demo1/src/demo-server/api/swagger.yaml | 22 +- examples/demo1/src/demo-server/go/README.md | 2 +- .../go/model_inline_tracking_notification.go | 28 + .../src/demo-server/go/model_time_stamp.go | 26 +- .../go/model_tracking_notification.go | 3 +- .../go/model_user_tracking_notification.go | 3 +- examples/demo1/src/iperf-proxy/go/README.md | 2 +- go-apps/meep-gis-engine/api/swagger.yaml | 2 +- go-apps/meep-gis-engine/server/README.md | 2 +- go-apps/meep-loc-serv/api/swagger.yaml | 38 +- go-apps/meep-loc-serv/server/README.md | 4 +- .../server/model_access_point_info.go | 2 +- .../server/model_access_point_list.go | 2 +- .../server/model_callback_reference.go | 2 +- .../model_circle_notification_subscription.go | 2 +- .../server/model_distance_criteria.go | 2 +- ...odel_distance_notification_subscription.go | 2 +- .../server/model_inline_access_point_info.go | 2 +- .../server/model_inline_access_point_list.go | 2 +- ...inline_circle_notification_subscription.go | 2 +- ...line_distance_notification_subscription.go | 2 +- ...l_inline_notification_subscription_list.go | 2 +- ...line_periodic_notification_subscription.go | 2 +- .../server/model_inline_problem_details.go | 2 +- .../model_inline_problem_details_required.go | 2 +- .../model_inline_subscription_notification.go | 2 +- .../server/model_inline_terminal_distance.go | 2 +- .../server/model_inline_user_list.go | 2 +- ...model_inline_user_tracking_subscription.go | 2 +- ...odel_inline_zonal_presence_notification.go | 2 +- ...model_inline_zonal_traffic_subscription.go | 2 +- .../server/model_inline_zone_info.go | 2 +- .../server/model_inline_zone_list.go | 2 +- .../model_inline_zone_status_notification.go | 2 +- .../model_inline_zone_status_subscription.go | 2 +- go-apps/meep-loc-serv/server/model_link.go | 2 +- .../server/model_location_info.go | 2 +- .../server/model_location_info_velocity.go | 2 +- .../server/model_notification_format.go | 2 +- .../model_notification_subscription_list.go | 2 +- ...odel_periodic_notification_subscription.go | 2 +- .../server/model_problem_details.go | 2 +- .../server/model_retrieval_status.go | 2 +- .../server/model_service_error.go | 2 +- ..._subscription_cancellation_notification.go | 2 +- .../server/model_subscription_notification.go | 2 +- .../server/model_terminal_distance.go | 2 +- .../server/model_terminal_location.go | 2 +- .../meep-loc-serv/server/model_time_stamp.go | 2 +- .../meep-loc-serv/server/model_user_info.go | 2 +- .../meep-loc-serv/server/model_user_list.go | 2 +- .../model_user_tracking_subscription.go | 2 +- .../model_zonal_presence_notification.go | 2 +- .../model_zonal_traffic_subscription.go | 2 +- .../meep-loc-serv/server/model_zone_info.go | 2 +- .../meep-loc-serv/server/model_zone_list.go | 2 +- .../server/model_zone_status_notification.go | 2 +- .../server/model_zone_status_subscription.go | 2 +- .../meep-metrics-engine/api/v2/swagger.yaml | 2 +- .../meep-metrics-engine/server/v2/README.md | 2 +- go-apps/meep-mg-manager/api/swagger.yaml | 2 +- go-apps/meep-mg-manager/server/README.md | 2 +- go-apps/meep-mon-engine/server/README.md | 2 +- go-apps/meep-platform-ctrl/server/README.md | 2 +- go-apps/meep-rnis/api/swagger.yaml | 14 +- go-apps/meep-rnis/server/README.md | 4 +- .../meep-rnis/server/model_associate_id.go | 2 +- .../server/model_ca_reconf_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ..._reconf_notification_secondary_cell_add.go | 2 +- .../server/model_ca_reconf_subscription.go | 2 +- .../model_ca_reconf_subscription__links.go | 2 +- ...conf_subscription_filter_criteria_assoc.go | 2 +- .../server/model_cell_change_notification.go | 2 +- ...del_cell_change_notification_temp_ue_id.go | 2 +- .../server/model_cell_change_subscription.go | 2 +- ...e_subscription_filter_criteria_assoc_ho.go | 2 +- go-apps/meep-rnis/server/model_ecgi.go | 2 +- .../server/model_expiry_notification.go | 2 +- .../model_expiry_notification__links.go | 2 +- .../server/model_inline_notification.go | 2 +- .../server/model_inline_subscription.go | 2 +- go-apps/meep-rnis/server/model_l2_meas.go | 2 +- .../server/model_l2_meas_cell_info.go | 2 +- .../server/model_l2_meas_cell_ue_info.go | 2 +- go-apps/meep-rnis/server/model_link_type.go | 2 +- .../server/model_meas_quantity_results_nr.go | 2 +- .../server/model_meas_rep_ue_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ...ication_eutran_neighbour_cell_meas_info.go | 2 +- ...rep_ue_notification_new_radio_meas_info.go | 2 +- ...ue_notification_new_radio_meas_nei_info.go | 2 +- ...model_meas_rep_ue_notification_nr_bn_cs.go | 2 +- ...e_notification_nr_bn_cs_nr_bn_cell_info.go | 2 +- ...meas_rep_ue_notification_nr_n_cell_info.go | 2 +- .../model_meas_rep_ue_notification_nr_s_cs.go | 2 +- ..._ue_notification_nr_s_cs_nr_s_cell_info.go | 2 +- .../server/model_meas_rep_ue_subscription.go | 2 +- ..._subscription_filter_criteria_assoc_tri.go | 2 +- .../server/model_meas_ta_notification.go | 2 +- .../server/model_meas_ta_subscription.go | 2 +- go-apps/meep-rnis/server/model_n_rcgi.go | 2 +- .../model_nr_meas_rep_ue_notification.go | 2 +- ...notification_eutra_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_n_cell.go | 2 +- ...ue_notification_nr_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_s_cell.go | 2 +- ...rep_ue_notification_serv_cell_meas_info.go | 2 +- .../model_nr_meas_rep_ue_subscription.go | 2 +- ..._ue_subscription_filter_criteria_nr_mrs.go | 2 +- go-apps/meep-rnis/server/model_plmn.go | 2 +- go-apps/meep-rnis/server/model_plmn_info.go | 2 +- .../meep-rnis/server/model_problem_details.go | 2 +- .../server/model_rab_est_notification.go | 2 +- ...ab_est_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../model_rab_est_notification_temp_ue_id.go | 2 +- .../server/model_rab_est_subscription.go | 2 +- ...ab_est_subscription_filter_criteria_qci.go | 2 +- go-apps/meep-rnis/server/model_rab_info.go | 2 +- .../server/model_rab_info_cell_user_info.go | 2 +- .../server/model_rab_info_erab_info.go | 2 +- .../server/model_rab_info_ue_info.go | 2 +- .../server/model_rab_mod_notification.go | 2 +- ...ab_mod_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../server/model_rab_mod_subscription.go | 2 +- ...ab_mod_subscription_filter_criteria_qci.go | 2 +- .../server/model_rab_rel_notification.go | 2 +- ..._rab_rel_notification_erab_release_info.go | 2 +- .../server/model_rab_rel_subscription.go | 2 +- .../server/model_results_per_csi_rs_index.go | 2 +- .../model_results_per_csi_rs_index_list.go | 2 +- ..._rs_index_list_results_per_csi_rs_index.go | 2 +- .../server/model_results_per_ssb_index.go | 2 +- .../model_results_per_ssb_index_list.go | 2 +- ...er_ssb_index_list_results_per_ssb_index.go | 2 +- .../server/model_rs_index_results.go | 2 +- .../meep-rnis/server/model_s1_bearer_info.go | 2 +- .../server/model_s1_bearer_info_enb_info.go | 2 +- ..._s1_bearer_info_s1_bearer_info_detailed.go | 2 +- .../server/model_s1_bearer_info_s1_ue_info.go | 2 +- .../server/model_s1_bearer_info_s_gw_info.go | 2 +- .../server/model_s1_bearer_notification.go | 2 +- ...model_s1_bearer_notification_s1_ue_info.go | 2 +- .../server/model_s1_bearer_subscription.go | 2 +- ...ription_s1_bearer_subscription_criteria.go | 2 +- .../server/model_subscription_link_list.go | 2 +- .../model_subscription_link_list__links.go | 2 +- ...scription_link_list__links_subscription.go | 2 +- go-apps/meep-rnis/server/model_time_stamp.go | 2 +- go-apps/meep-sandbox-ctrl/api/swagger.yaml | 2 +- go-apps/meep-sandbox-ctrl/entrypoint.sh | 15 +- go-apps/meep-sandbox-ctrl/server/README.md | 2 +- go-apps/meep-wais/api/swagger.yaml | 7 +- go-apps/meep-wais/server/README.md | 4 +- .../meep-wais/server/model_ap_associated.go | 2 +- go-apps/meep-wais/server/model_ap_identity.go | 2 +- go-apps/meep-wais/server/model_ap_info.go | 2 +- go-apps/meep-wais/server/model_ap_location.go | 2 +- .../server/model_assoc_sta_notification.go | 2 +- .../server/model_assoc_sta_subscription.go | 2 +- .../model_assoc_sta_subscription__links.go | 2 +- .../server/model_associated_stations.go | 2 +- .../meep-wais/server/model_beacon_report.go | 2 +- .../server/model_beacon_request_config.go | 2 +- go-apps/meep-wais/server/model_bss_load.go | 2 +- .../server/model_channel_load_config.go | 2 +- .../meep-wais/server/model_civic_location.go | 2 +- .../server/model_dmg_capabilities.go | 2 +- .../server/model_edmg_capabilities.go | 2 +- .../meep-wais/server/model_ext_bss_load.go | 2 +- .../meep-wais/server/model_geo_location.go | 2 +- .../meep-wais/server/model_he_capabilities.go | 2 +- .../meep-wais/server/model_ht_capabilities.go | 2 +- .../server/model_inline_notification.go | 2 +- .../server/model_inline_subscription.go | 2 +- go-apps/meep-wais/server/model_link_type.go | 2 +- .../server/model_measurement_config.go | 2 +- .../meep-wais/server/model_neighbor_report.go | 2 +- .../meep-wais/server/model_problem_details.go | 2 +- go-apps/meep-wais/server/model_rssi.go | 2 +- .../meep-wais/server/model_sta_data_rate.go | 2 +- .../model_sta_data_rate_notification.go | 2 +- .../model_sta_data_rate_subscription.go | 2 +- .../meep-wais/server/model_sta_identity.go | 2 +- go-apps/meep-wais/server/model_sta_info.go | 2 +- .../meep-wais/server/model_sta_statistics.go | 2 +- .../server/model_sta_statistics_config.go | 2 +- .../server/model_statistics_group_data.go | 2 +- .../server/model_subscription_link_list.go | 2 +- .../model_subscription_link_list__links.go | 2 +- go-apps/meep-wais/server/model_time_stamp.go | 2 +- .../server/model_vht_capabilities.go | 2 +- go-apps/meep-wais/server/model_wan_metrics.go | 2 +- .../server/model_wlan_capabilities.go | 2 +- go-packages/meep-gis-engine-client/README.md | 2 +- .../meep-gis-engine-client/api/swagger.yaml | 2 +- .../meep-gis-engine-client/configuration.go | 2 +- .../docs/AutomationApi.md | 2 +- .../docs/GeospatialDataApi.md | 2 +- go-packages/meep-loc-serv-client/README.md | 36 +- .../meep-loc-serv-client/api/swagger.yaml | 38 +- .../meep-loc-serv-client/api_location.go | 2250 +--------------- .../meep-loc-serv-client/api_unsupported.go | 2291 +++++++++++++++++ go-packages/meep-loc-serv-client/client.go | 5 +- .../meep-loc-serv-client/configuration.go | 4 +- .../meep-loc-serv-client/docs/LocationApi.md | 468 +--- .../docs/UnsupportedApi.md | 474 ++++ .../model_access_point_info.go | 2 +- .../model_access_point_list.go | 2 +- .../model_callback_reference.go | 2 +- .../model_circle_notification_subscription.go | 2 +- .../model_connection_type.go | 2 +- .../model_distance_criteria.go | 2 +- ...odel_distance_notification_subscription.go | 2 +- .../model_entering_leaving_criteria.go | 2 +- .../model_inline_access_point_info.go | 2 +- .../model_inline_access_point_list.go | 2 +- ...inline_circle_notification_subscription.go | 2 +- ...line_distance_notification_subscription.go | 2 +- ...l_inline_notification_subscription_list.go | 2 +- ...line_periodic_notification_subscription.go | 2 +- .../model_inline_problem_details.go | 2 +- .../model_inline_problem_details_required.go | 2 +- .../model_inline_subscription_notification.go | 2 +- .../model_inline_terminal_distance.go | 2 +- .../model_inline_user_list.go | 2 +- ...model_inline_user_tracking_subscription.go | 2 +- ...odel_inline_zonal_presence_notification.go | 2 +- ...model_inline_zonal_traffic_subscription.go | 2 +- .../model_inline_zone_info.go | 2 +- .../model_inline_zone_list.go | 2 +- .../model_inline_zone_status_notification.go | 2 +- .../model_inline_zone_status_subscription.go | 2 +- .../meep-loc-serv-client/model_link.go | 2 +- .../model_location_info.go | 2 +- .../model_location_info_velocity.go | 2 +- .../model_notification_format.go | 2 +- .../model_notification_subscription_list.go | 2 +- .../model_operation_status.go | 2 +- ...odel_periodic_notification_subscription.go | 2 +- .../model_problem_details.go | 2 +- .../model_retrieval_status.go | 2 +- .../model_service_error.go | 2 +- ..._subscription_cancellation_notification.go | 2 +- .../model_subscription_notification.go | 2 +- .../model_terminal_distance.go | 2 +- .../model_terminal_location.go | 2 +- .../meep-loc-serv-client/model_time_stamp.go | 2 +- .../model_user_event_type.go | 2 +- .../meep-loc-serv-client/model_user_info.go | 2 +- .../meep-loc-serv-client/model_user_list.go | 2 +- .../model_user_tracking_subscription.go | 2 +- .../model_zonal_presence_notification.go | 2 +- .../model_zonal_traffic_subscription.go | 2 +- .../meep-loc-serv-client/model_zone_info.go | 2 +- .../meep-loc-serv-client/model_zone_list.go | 2 +- .../model_zone_status_notification.go | 2 +- .../model_zone_status_subscription.go | 2 +- go-packages/meep-loc-serv-client/response.go | 2 +- go-packages/meep-mg-manager-client/README.md | 2 +- .../meep-mg-manager-client/api/swagger.yaml | 2 +- .../meep-mg-manager-client/configuration.go | 2 +- .../docs/MembershipApi.md | 2 +- .../docs/StateTransferApi.md | 2 +- go-packages/meep-rnis-client/README.md | 8 +- go-packages/meep-rnis-client/api_rni.go | 559 +--- .../meep-rnis-client/api_unsupported.go | 599 +++++ go-packages/meep-rnis-client/client.go | 5 +- go-packages/meep-rnis-client/configuration.go | 4 +- .../meep-rnis-client/model_associate_id.go | 2 +- .../model_ca_reconf_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ..._reconf_notification_secondary_cell_add.go | 2 +- .../model_ca_reconf_subscription.go | 2 +- .../model_ca_reconf_subscription__links.go | 2 +- ...conf_subscription_filter_criteria_assoc.go | 2 +- .../model_cell_change_notification.go | 2 +- ...del_cell_change_notification_temp_ue_id.go | 2 +- .../model_cell_change_subscription.go | 2 +- ...e_subscription_filter_criteria_assoc_ho.go | 2 +- go-packages/meep-rnis-client/model_ecgi.go | 2 +- .../model_expiry_notification.go | 2 +- .../model_expiry_notification__links.go | 2 +- .../model_inline_notification.go | 2 +- go-packages/meep-rnis-client/model_l2_meas.go | 2 +- .../model_l2_meas_cell_info.go | 2 +- .../model_l2_meas_cell_ue_info.go | 2 +- .../meep-rnis-client/model_link_type.go | 2 +- .../model_meas_quantity_results_nr.go | 2 +- .../model_meas_rep_ue_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ...ication_eutran_neighbour_cell_meas_info.go | 2 +- ...rep_ue_notification_new_radio_meas_info.go | 2 +- ...ue_notification_new_radio_meas_nei_info.go | 2 +- ...model_meas_rep_ue_notification_nr_bn_cs.go | 2 +- ...e_notification_nr_bn_cs_nr_bn_cell_info.go | 2 +- ...meas_rep_ue_notification_nr_n_cell_info.go | 2 +- .../model_meas_rep_ue_notification_nr_s_cs.go | 2 +- ..._ue_notification_nr_s_cs_nr_s_cell_info.go | 2 +- .../model_meas_rep_ue_subscription.go | 2 +- ..._subscription_filter_criteria_assoc_tri.go | 2 +- .../model_meas_ta_notification.go | 2 +- .../model_meas_ta_subscription.go | 2 +- go-packages/meep-rnis-client/model_n_rcgi.go | 2 +- .../model_nr_meas_rep_ue_notification.go | 2 +- ...notification_eutra_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_n_cell.go | 2 +- ...ue_notification_nr_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_s_cell.go | 2 +- ...rep_ue_notification_serv_cell_meas_info.go | 2 +- .../model_nr_meas_rep_ue_subscription.go | 2 +- ..._ue_subscription_filter_criteria_nr_mrs.go | 2 +- .../model_one_of_inline_notification.go | 2 +- .../model_one_of_inline_subscription.go | 2 +- go-packages/meep-rnis-client/model_plmn.go | 2 +- .../meep-rnis-client/model_plmn_info.go | 2 +- .../meep-rnis-client/model_problem_details.go | 2 +- .../model_rab_est_notification.go | 2 +- ...ab_est_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../model_rab_est_notification_temp_ue_id.go | 2 +- .../model_rab_est_subscription.go | 2 +- ...ab_est_subscription_filter_criteria_qci.go | 2 +- .../meep-rnis-client/model_rab_info.go | 2 +- .../model_rab_info_cell_user_info.go | 2 +- .../model_rab_info_erab_info.go | 2 +- .../model_rab_info_ue_info.go | 2 +- .../model_rab_mod_notification.go | 2 +- ...ab_mod_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../model_rab_mod_subscription.go | 2 +- ...ab_mod_subscription_filter_criteria_qci.go | 2 +- .../model_rab_rel_notification.go | 2 +- ..._rab_rel_notification_erab_release_info.go | 2 +- .../model_rab_rel_subscription.go | 2 +- .../model_results_per_csi_rs_index.go | 2 +- .../model_results_per_csi_rs_index_list.go | 2 +- ..._rs_index_list_results_per_csi_rs_index.go | 2 +- .../model_results_per_ssb_index.go | 2 +- .../model_results_per_ssb_index_list.go | 2 +- ...er_ssb_index_list_results_per_ssb_index.go | 2 +- .../model_rs_index_results.go | 2 +- .../meep-rnis-client/model_s1_bearer_info.go | 2 +- .../model_s1_bearer_info_enb_info.go | 2 +- ..._s1_bearer_info_s1_bearer_info_detailed.go | 2 +- .../model_s1_bearer_info_s1_ue_info.go | 2 +- .../model_s1_bearer_info_s_gw_info.go | 2 +- .../model_s1_bearer_notification.go | 2 +- ...model_s1_bearer_notification_s1_ue_info.go | 2 +- .../model_s1_bearer_subscription.go | 2 +- ...ription_s1_bearer_subscription_criteria.go | 2 +- .../model_subscription_link_list.go | 2 +- .../model_subscription_link_list__links.go | 2 +- ...scription_link_list__links_subscription.go | 2 +- .../meep-rnis-client/model_time_stamp.go | 2 +- go-packages/meep-rnis-client/response.go | 2 +- .../meep-sandbox-ctrl-client/README.md | 2 +- .../meep-sandbox-ctrl-client/api/swagger.yaml | 2 +- .../meep-sandbox-ctrl-client/configuration.go | 2 +- .../docs/ActiveScenarioApi.md | 2 +- .../docs/EventReplayApi.md | 2 +- .../docs/EventsApi.md | 2 +- go-packages/meep-wais-client/README.md | 4 +- go-packages/meep-wais-client/api_wai.go | 2 +- go-packages/meep-wais-client/client.go | 2 +- go-packages/meep-wais-client/configuration.go | 4 +- .../meep-wais-client/model_ap_associated.go | 2 +- .../meep-wais-client/model_ap_identity.go | 2 +- go-packages/meep-wais-client/model_ap_info.go | 2 +- .../meep-wais-client/model_ap_location.go | 2 +- .../model_assoc_sta_notification.go | 2 +- .../model_assoc_sta_subscription.go | 2 +- .../model_assoc_sta_subscription__links.go | 2 +- .../model_associated_stations.go | 2 +- .../meep-wais-client/model_beacon_report.go | 2 +- .../model_beacon_request_config.go | 2 +- .../meep-wais-client/model_bss_load.go | 2 +- .../model_channel_load_config.go | 2 +- .../meep-wais-client/model_civic_location.go | 2 +- .../model_dmg_capabilities.go | 2 +- .../model_edmg_capabilities.go | 2 +- .../meep-wais-client/model_ext_bss_load.go | 2 +- .../meep-wais-client/model_geo_location.go | 2 +- .../meep-wais-client/model_he_capabilities.go | 2 +- .../meep-wais-client/model_ht_capabilities.go | 2 +- .../model_inline_notification.go | 2 +- .../meep-wais-client/model_link_type.go | 2 +- .../model_measurement_config.go | 2 +- .../meep-wais-client/model_neighbor_report.go | 2 +- .../model_one_of_inline_notification.go | 2 +- .../model_one_of_inline_subscription.go | 2 +- .../meep-wais-client/model_problem_details.go | 2 +- go-packages/meep-wais-client/model_rssi.go | 2 +- .../meep-wais-client/model_sta_data_rate.go | 2 +- .../model_sta_data_rate_notification.go | 2 +- .../model_sta_data_rate_subscription.go | 2 +- .../meep-wais-client/model_sta_identity.go | 2 +- .../meep-wais-client/model_sta_info.go | 2 +- .../meep-wais-client/model_sta_statistics.go | 2 +- .../model_sta_statistics_config.go | 2 +- .../model_statistics_group_data.go | 2 +- .../model_subscription_link_list.go | 2 +- .../model_subscription_link_list__links.go | 2 +- .../meep-wais-client/model_time_stamp.go | 2 +- .../model_vht_capabilities.go | 2 +- .../meep-wais-client/model_wan_metrics.go | 2 +- .../model_wlan_capabilities.go | 2 +- go-packages/meep-wais-client/response.go | 2 +- js-packages/meep-gis-engine-client/README.md | 2 +- .../docs/AutomationApi.md | 2 +- .../docs/GeospatialDataApi.md | 2 +- .../meep-gis-engine-client/src/ApiClient.js | 4 +- .../meep-metrics-engine-client/README.md | 2 +- .../docs/MetricsApi.md | 2 +- .../docs/SubscriptionsApi.md | 2 +- .../src/ApiClient.js | 4 +- .../meep-sandbox-ctrl-client/README.md | 2 +- .../docs/ActiveScenarioApi.md | 2 +- .../docs/EventReplayApi.md | 2 +- .../docs/EventsApi.md | 2 +- .../meep-sandbox-ctrl-client/src/ApiClient.js | 4 +- 459 files changed, 4907 insertions(+), 4382 deletions(-) create mode 100644 docs/api-location/Apis/UnsupportedApi.md create mode 100644 docs/api-rnis/Apis/UnsupportedApi.md create mode 100644 examples/demo1/src/demo-client/js/docs/InlineTrackingNotification.md create mode 100644 examples/demo1/src/demo-client/js/docs/TimeStamp.md create mode 100644 examples/demo1/src/demo-client/js/src/model/InlineTrackingNotification.js create mode 100644 examples/demo1/src/demo-client/js/src/model/TimeStamp.js create mode 100644 examples/demo1/src/demo-client/js/test/model/InlineTrackingNotification.spec.js create mode 100644 examples/demo1/src/demo-client/js/test/model/TimeStamp.spec.js create mode 100644 examples/demo1/src/demo-server/go/model_inline_tracking_notification.go create mode 100644 go-packages/meep-loc-serv-client/api_unsupported.go create mode 100644 go-packages/meep-loc-serv-client/docs/UnsupportedApi.md create mode 100644 go-packages/meep-rnis-client/api_unsupported.go diff --git a/docs/api-gis-engine/Apis/AutomationApi.md b/docs/api-gis-engine/Apis/AutomationApi.md index 6af7bfacd..bc2856538 100644 --- a/docs/api-gis-engine/Apis/AutomationApi.md +++ b/docs/api-gis-engine/Apis/AutomationApi.md @@ -1,6 +1,6 @@ # AutomationApi -All URIs are relative to *http://localhost/gis/v1* +All URIs are relative to *http://localhost/sandboxname/gis/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-gis-engine/Apis/GeospatialDataApi.md b/docs/api-gis-engine/Apis/GeospatialDataApi.md index ad1cae6ad..6198b07fa 100644 --- a/docs/api-gis-engine/Apis/GeospatialDataApi.md +++ b/docs/api-gis-engine/Apis/GeospatialDataApi.md @@ -1,6 +1,6 @@ # GeospatialDataApi -All URIs are relative to *http://localhost/gis/v1* +All URIs are relative to *http://localhost/sandboxname/gis/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-gis-engine/README.md b/docs/api-gis-engine/README.md index 079527270..ec60f62e8 100644 --- a/docs/api-gis-engine/README.md +++ b/docs/api-gis-engine/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *http://localhost/gis/v1* +All URIs are relative to *http://localhost/sandboxname/gis/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/docs/api-location/.openapi-generator/FILES b/docs/api-location/.openapi-generator/FILES index 3c7c4e603..886921ac5 100644 --- a/docs/api-location/.openapi-generator/FILES +++ b/docs/api-location/.openapi-generator/FILES @@ -1,5 +1,6 @@ .openapi-generator-ignore Apis/LocationApi.md +Apis/UnsupportedApi.md Models/AccessPointInfo.md Models/AccessPointList.md Models/CallbackReference.md diff --git a/docs/api-location/Apis/LocationApi.md b/docs/api-location/Apis/LocationApi.md index 18091d79e..77f7a3dd7 100644 --- a/docs/api-location/Apis/LocationApi.md +++ b/docs/api-location/Apis/LocationApi.md @@ -1,27 +1,11 @@ # LocationApi -All URIs are relative to *https://localhost/location/v2* +All URIs are relative to *https://localhost/sandboxname/location/v2* Method | HTTP request | Description ------------- | ------------- | ------------- [**apByIdGET**](LocationApi.md#apByIdGET) | **GET** /queries/zones/{zoneId}/accessPoints/{accessPointId} | Radio Node Location Lookup [**apGET**](LocationApi.md#apGET) | **GET** /queries/zones/{zoneId}/accessPoints | Radio Node Location Lookup -[**areaCircleSubDELETE**](LocationApi.md#areaCircleSubDELETE) | **DELETE** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription -[**areaCircleSubGET**](LocationApi.md#areaCircleSubGET) | **GET** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information -[**areaCircleSubListGET**](LocationApi.md#areaCircleSubListGET) | **GET** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications -[**areaCircleSubPOST**](LocationApi.md#areaCircleSubPOST) | **POST** /subscriptions/area/circle | Creates a subscription for area change notification -[**areaCircleSubPUT**](LocationApi.md#areaCircleSubPUT) | **PUT** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information -[**distanceGET**](LocationApi.md#distanceGET) | **GET** /queries/distance | UE Distance Lookup of a specific UE -[**distanceSubDELETE**](LocationApi.md#distanceSubDELETE) | **DELETE** /subscriptions/distance/{subscriptionId} | Cancel a subscription -[**distanceSubGET**](LocationApi.md#distanceSubGET) | **GET** /subscriptions/distance/{subscriptionId} | Retrieve subscription information -[**distanceSubListGET**](LocationApi.md#distanceSubListGET) | **GET** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications -[**distanceSubPOST**](LocationApi.md#distanceSubPOST) | **POST** /subscriptions/distance | Creates a subscription for distance change notification -[**distanceSubPUT**](LocationApi.md#distanceSubPUT) | **PUT** /subscriptions/distance/{subscriptionId} | Updates a subscription information -[**periodicSubDELETE**](LocationApi.md#periodicSubDELETE) | **DELETE** /subscriptions/periodic/{subscriptionId} | Cancel a subscription -[**periodicSubGET**](LocationApi.md#periodicSubGET) | **GET** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information -[**periodicSubListGET**](LocationApi.md#periodicSubListGET) | **GET** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications -[**periodicSubPOST**](LocationApi.md#periodicSubPOST) | **POST** /subscriptions/periodic | Creates a subscription for periodic notification -[**periodicSubPUT**](LocationApi.md#periodicSubPUT) | **PUT** /subscriptions/periodic/{subscriptionId} | Updates a subscription information [**userTrackingSubDELETE**](LocationApi.md#userTrackingSubDELETE) | **DELETE** /subscriptions/userTracking/{subscriptionId} | Cancel a subscription [**userTrackingSubGET**](LocationApi.md#userTrackingSubGET) | **GET** /subscriptions/userTracking/{subscriptionId} | Retrieve subscription information [**userTrackingSubListGET**](LocationApi.md#userTrackingSubListGET) | **GET** /subscriptions/userTracking | Retrieves all active subscriptions to user tracking notifications @@ -98,435 +82,6 @@ No authorization required - **Content-Type**: Not defined - **Accept**: application/json - -# **areaCircleSubDELETE** -> areaCircleSubDELETE(subscriptionId) - -Cancel a subscription - - Method to delete a subscription. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **areaCircleSubGET** -> InlineCircleNotificationSubscription areaCircleSubGET(subscriptionId) - -Retrieve subscription information - - Get subscription information. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - -### Return type - -[**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **areaCircleSubListGET** -> InlineNotificationSubscriptionList areaCircleSubListGET() - -Retrieves all active subscriptions to area change notifications - - This operation is used for retrieving all active subscriptions to area change notifications. - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**InlineNotificationSubscriptionList**](../Models/InlineNotificationSubscriptionList.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **areaCircleSubPOST** -> InlineCircleNotificationSubscription areaCircleSubPOST(InlineCircleNotificationSubscription) - -Creates a subscription for area change notification - - Creates a subscription to the Location Service for an area change notification. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **InlineCircleNotificationSubscription** | [**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md)| Subscription to be created | - -### Return type - -[**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - - -# **areaCircleSubPUT** -> InlineCircleNotificationSubscription areaCircleSubPUT(subscriptionId, InlineCircleNotificationSubscription) - -Updates a subscription information - - Updates a subscription. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - **InlineCircleNotificationSubscription** | [**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md)| Subscription to be modified | - -### Return type - -[**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - - -# **distanceGET** -> InlineTerminalDistance distanceGET(address, requester, latitude, longitude) - -UE Distance Lookup of a specific UE - - UE Distance Lookup between terminals or a terminal and a location - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **address** | [**List**](../Models/String.md)| address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) | [default to null] - **requester** | **String**| Entity that is requesting the information | [optional] [default to null] - **latitude** | **Float**| Latitude geo position | [optional] [default to null] - **longitude** | **Float**| Longitude geo position | [optional] [default to null] - -### Return type - -[**InlineTerminalDistance**](../Models/InlineTerminalDistance.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **distanceSubDELETE** -> distanceSubDELETE(subscriptionId) - -Cancel a subscription - - Method to delete a subscription. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **distanceSubGET** -> InlineDistanceNotificationSubscription distanceSubGET(subscriptionId) - -Retrieve subscription information - - Get subscription information. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - -### Return type - -[**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **distanceSubListGET** -> InlineNotificationSubscriptionList distanceSubListGET() - -Retrieves all active subscriptions to distance change notifications - - This operation is used for retrieving all active subscriptions to a distance change notifications. - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**InlineNotificationSubscriptionList**](../Models/InlineNotificationSubscriptionList.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **distanceSubPOST** -> InlineDistanceNotificationSubscription distanceSubPOST(InlineDistanceNotificationSubscription) - -Creates a subscription for distance change notification - - Creates a subscription to the Location Service for a distance change notification. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **InlineDistanceNotificationSubscription** | [**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md)| Subscription to be created | - -### Return type - -[**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - - -# **distanceSubPUT** -> InlineDistanceNotificationSubscription distanceSubPUT(subscriptionId, InlineDistanceNotificationSubscription) - -Updates a subscription information - - Updates a subscription. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - **InlineDistanceNotificationSubscription** | [**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md)| Subscription to be modified | - -### Return type - -[**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - - -# **periodicSubDELETE** -> periodicSubDELETE(subscriptionId) - -Cancel a subscription - - Method to delete a subscription. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **periodicSubGET** -> InlinePeriodicNotificationSubscription periodicSubGET(subscriptionId) - -Retrieve subscription information - - Get subscription information. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - -### Return type - -[**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **periodicSubListGET** -> InlineNotificationSubscriptionList periodicSubListGET() - -Retrieves all active subscriptions to periodic notifications - - This operation is used for retrieving all active subscriptions to periodic notifications. - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**InlineNotificationSubscriptionList**](../Models/InlineNotificationSubscriptionList.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json - - -# **periodicSubPOST** -> InlinePeriodicNotificationSubscription periodicSubPOST(InlinePeriodicNotificationSubscription) - -Creates a subscription for periodic notification - - Creates a subscription to the Location Service for a periodic notification. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **InlinePeriodicNotificationSubscription** | [**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md)| Subscription to be created | - -### Return type - -[**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - - -# **periodicSubPUT** -> InlinePeriodicNotificationSubscription periodicSubPUT(subscriptionId, InlinePeriodicNotificationSubscription) - -Updates a subscription information - - Updates a subscription. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] - **InlinePeriodicNotificationSubscription** | [**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md)| Subscription to be modified | - -### Return type - -[**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/json -- **Accept**: application/json - # **userTrackingSubDELETE** > userTrackingSubDELETE(subscriptionId) diff --git a/docs/api-location/Apis/UnsupportedApi.md b/docs/api-location/Apis/UnsupportedApi.md new file mode 100644 index 000000000..63a79b0f4 --- /dev/null +++ b/docs/api-location/Apis/UnsupportedApi.md @@ -0,0 +1,453 @@ +# UnsupportedApi + +All URIs are relative to *https://localhost/sandboxname/location/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**areaCircleSubDELETE**](UnsupportedApi.md#areaCircleSubDELETE) | **DELETE** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription +[**areaCircleSubGET**](UnsupportedApi.md#areaCircleSubGET) | **GET** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information +[**areaCircleSubListGET**](UnsupportedApi.md#areaCircleSubListGET) | **GET** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications +[**areaCircleSubPOST**](UnsupportedApi.md#areaCircleSubPOST) | **POST** /subscriptions/area/circle | Creates a subscription for area change notification +[**areaCircleSubPUT**](UnsupportedApi.md#areaCircleSubPUT) | **PUT** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information +[**distanceGET**](UnsupportedApi.md#distanceGET) | **GET** /queries/distance | UE Distance Lookup of a specific UE +[**distanceSubDELETE**](UnsupportedApi.md#distanceSubDELETE) | **DELETE** /subscriptions/distance/{subscriptionId} | Cancel a subscription +[**distanceSubGET**](UnsupportedApi.md#distanceSubGET) | **GET** /subscriptions/distance/{subscriptionId} | Retrieve subscription information +[**distanceSubListGET**](UnsupportedApi.md#distanceSubListGET) | **GET** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications +[**distanceSubPOST**](UnsupportedApi.md#distanceSubPOST) | **POST** /subscriptions/distance | Creates a subscription for distance change notification +[**distanceSubPUT**](UnsupportedApi.md#distanceSubPUT) | **PUT** /subscriptions/distance/{subscriptionId} | Updates a subscription information +[**periodicSubDELETE**](UnsupportedApi.md#periodicSubDELETE) | **DELETE** /subscriptions/periodic/{subscriptionId} | Cancel a subscription +[**periodicSubGET**](UnsupportedApi.md#periodicSubGET) | **GET** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information +[**periodicSubListGET**](UnsupportedApi.md#periodicSubListGET) | **GET** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications +[**periodicSubPOST**](UnsupportedApi.md#periodicSubPOST) | **POST** /subscriptions/periodic | Creates a subscription for periodic notification +[**periodicSubPUT**](UnsupportedApi.md#periodicSubPUT) | **PUT** /subscriptions/periodic/{subscriptionId} | Updates a subscription information + + + +# **areaCircleSubDELETE** +> areaCircleSubDELETE(subscriptionId) + +Cancel a subscription + + Method to delete a subscription. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **areaCircleSubGET** +> InlineCircleNotificationSubscription areaCircleSubGET(subscriptionId) + +Retrieve subscription information + + Get subscription information. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + +### Return type + +[**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **areaCircleSubListGET** +> InlineNotificationSubscriptionList areaCircleSubListGET() + +Retrieves all active subscriptions to area change notifications + + This operation is used for retrieving all active subscriptions to area change notifications. + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineNotificationSubscriptionList**](../Models/InlineNotificationSubscriptionList.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **areaCircleSubPOST** +> InlineCircleNotificationSubscription areaCircleSubPOST(InlineCircleNotificationSubscription) + +Creates a subscription for area change notification + + Creates a subscription to the Location Service for an area change notification. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **InlineCircleNotificationSubscription** | [**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md)| Subscription to be created | + +### Return type + +[**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +# **areaCircleSubPUT** +> InlineCircleNotificationSubscription areaCircleSubPUT(subscriptionId, InlineCircleNotificationSubscription) + +Updates a subscription information + + Updates a subscription. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + **InlineCircleNotificationSubscription** | [**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md)| Subscription to be modified | + +### Return type + +[**InlineCircleNotificationSubscription**](../Models/InlineCircleNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +# **distanceGET** +> InlineTerminalDistance distanceGET(address, requester, latitude, longitude) + +UE Distance Lookup of a specific UE + + UE Distance Lookup between terminals or a terminal and a location + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **address** | [**List**](../Models/String.md)| address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) | [default to null] + **requester** | **String**| Entity that is requesting the information | [optional] [default to null] + **latitude** | **Float**| Latitude geo position | [optional] [default to null] + **longitude** | **Float**| Longitude geo position | [optional] [default to null] + +### Return type + +[**InlineTerminalDistance**](../Models/InlineTerminalDistance.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **distanceSubDELETE** +> distanceSubDELETE(subscriptionId) + +Cancel a subscription + + Method to delete a subscription. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **distanceSubGET** +> InlineDistanceNotificationSubscription distanceSubGET(subscriptionId) + +Retrieve subscription information + + Get subscription information. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + +### Return type + +[**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **distanceSubListGET** +> InlineNotificationSubscriptionList distanceSubListGET() + +Retrieves all active subscriptions to distance change notifications + + This operation is used for retrieving all active subscriptions to a distance change notifications. + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineNotificationSubscriptionList**](../Models/InlineNotificationSubscriptionList.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **distanceSubPOST** +> InlineDistanceNotificationSubscription distanceSubPOST(InlineDistanceNotificationSubscription) + +Creates a subscription for distance change notification + + Creates a subscription to the Location Service for a distance change notification. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **InlineDistanceNotificationSubscription** | [**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md)| Subscription to be created | + +### Return type + +[**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +# **distanceSubPUT** +> InlineDistanceNotificationSubscription distanceSubPUT(subscriptionId, InlineDistanceNotificationSubscription) + +Updates a subscription information + + Updates a subscription. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + **InlineDistanceNotificationSubscription** | [**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md)| Subscription to be modified | + +### Return type + +[**InlineDistanceNotificationSubscription**](../Models/InlineDistanceNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +# **periodicSubDELETE** +> periodicSubDELETE(subscriptionId) + +Cancel a subscription + + Method to delete a subscription. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **periodicSubGET** +> InlinePeriodicNotificationSubscription periodicSubGET(subscriptionId) + +Retrieve subscription information + + Get subscription information. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + +### Return type + +[**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **periodicSubListGET** +> InlineNotificationSubscriptionList periodicSubListGET() + +Retrieves all active subscriptions to periodic notifications + + This operation is used for retrieving all active subscriptions to periodic notifications. + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineNotificationSubscriptionList**](../Models/InlineNotificationSubscriptionList.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json + + +# **periodicSubPOST** +> InlinePeriodicNotificationSubscription periodicSubPOST(InlinePeriodicNotificationSubscription) + +Creates a subscription for periodic notification + + Creates a subscription to the Location Service for a periodic notification. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **InlinePeriodicNotificationSubscription** | [**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md)| Subscription to be created | + +### Return type + +[**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + + +# **periodicSubPUT** +> InlinePeriodicNotificationSubscription periodicSubPUT(subscriptionId, InlinePeriodicNotificationSubscription) + +Updates a subscription information + + Updates a subscription. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **subscriptionId** | **URI**| Subscription Identifier, specifically the \"self\" returned in the subscription request | [default to null] + **InlinePeriodicNotificationSubscription** | [**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md)| Subscription to be modified | + +### Return type + +[**InlinePeriodicNotificationSubscription**](../Models/InlinePeriodicNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: application/json +- **Accept**: application/json + diff --git a/docs/api-location/README.md b/docs/api-location/README.md index c8ab72568..0dbccf911 100644 --- a/docs/api-location/README.md +++ b/docs/api-location/README.md @@ -3,28 +3,12 @@ ## Documentation for API Endpoints -All URIs are relative to *https://localhost/location/v2* +All URIs are relative to *https://localhost/sandboxname/location/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- *LocationApi* | [**apByIdGET**](Apis/LocationApi.md#apbyidget) | **GET** /queries/zones/{zoneId}/accessPoints/{accessPointId} | Radio Node Location Lookup *LocationApi* | [**apGET**](Apis/LocationApi.md#apget) | **GET** /queries/zones/{zoneId}/accessPoints | Radio Node Location Lookup -*LocationApi* | [**areaCircleSubDELETE**](Apis/LocationApi.md#areacirclesubdelete) | **DELETE** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription -*LocationApi* | [**areaCircleSubGET**](Apis/LocationApi.md#areacirclesubget) | **GET** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information -*LocationApi* | [**areaCircleSubListGET**](Apis/LocationApi.md#areacirclesublistget) | **GET** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications -*LocationApi* | [**areaCircleSubPOST**](Apis/LocationApi.md#areacirclesubpost) | **POST** /subscriptions/area/circle | Creates a subscription for area change notification -*LocationApi* | [**areaCircleSubPUT**](Apis/LocationApi.md#areacirclesubput) | **PUT** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information -*LocationApi* | [**distanceGET**](Apis/LocationApi.md#distanceget) | **GET** /queries/distance | UE Distance Lookup of a specific UE -*LocationApi* | [**distanceSubDELETE**](Apis/LocationApi.md#distancesubdelete) | **DELETE** /subscriptions/distance/{subscriptionId} | Cancel a subscription -*LocationApi* | [**distanceSubGET**](Apis/LocationApi.md#distancesubget) | **GET** /subscriptions/distance/{subscriptionId} | Retrieve subscription information -*LocationApi* | [**distanceSubListGET**](Apis/LocationApi.md#distancesublistget) | **GET** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications -*LocationApi* | [**distanceSubPOST**](Apis/LocationApi.md#distancesubpost) | **POST** /subscriptions/distance | Creates a subscription for distance change notification -*LocationApi* | [**distanceSubPUT**](Apis/LocationApi.md#distancesubput) | **PUT** /subscriptions/distance/{subscriptionId} | Updates a subscription information -*LocationApi* | [**periodicSubDELETE**](Apis/LocationApi.md#periodicsubdelete) | **DELETE** /subscriptions/periodic/{subscriptionId} | Cancel a subscription -*LocationApi* | [**periodicSubGET**](Apis/LocationApi.md#periodicsubget) | **GET** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information -*LocationApi* | [**periodicSubListGET**](Apis/LocationApi.md#periodicsublistget) | **GET** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications -*LocationApi* | [**periodicSubPOST**](Apis/LocationApi.md#periodicsubpost) | **POST** /subscriptions/periodic | Creates a subscription for periodic notification -*LocationApi* | [**periodicSubPUT**](Apis/LocationApi.md#periodicsubput) | **PUT** /subscriptions/periodic/{subscriptionId} | Updates a subscription information *LocationApi* | [**userTrackingSubDELETE**](Apis/LocationApi.md#usertrackingsubdelete) | **DELETE** /subscriptions/userTracking/{subscriptionId} | Cancel a subscription *LocationApi* | [**userTrackingSubGET**](Apis/LocationApi.md#usertrackingsubget) | **GET** /subscriptions/userTracking/{subscriptionId} | Retrieve subscription information *LocationApi* | [**userTrackingSubListGET**](Apis/LocationApi.md#usertrackingsublistget) | **GET** /subscriptions/userTracking | Retrieves all active subscriptions to user tracking notifications @@ -43,6 +27,22 @@ Class | Method | HTTP request | Description *LocationApi* | [**zoneStatusSubPUT**](Apis/LocationApi.md#zonestatussubput) | **PUT** /subscriptions/zoneStatus/{subscriptionId} | Updates a subscription information *LocationApi* | [**zonesGET**](Apis/LocationApi.md#zonesget) | **GET** /queries/zones | Zones information Lookup *LocationApi* | [**zonesGetById**](Apis/LocationApi.md#zonesgetbyid) | **GET** /queries/zones/{zoneId} | Zones information Lookup +*UnsupportedApi* | [**areaCircleSubDELETE**](Apis/UnsupportedApi.md#areacirclesubdelete) | **DELETE** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription +*UnsupportedApi* | [**areaCircleSubGET**](Apis/UnsupportedApi.md#areacirclesubget) | **GET** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information +*UnsupportedApi* | [**areaCircleSubListGET**](Apis/UnsupportedApi.md#areacirclesublistget) | **GET** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications +*UnsupportedApi* | [**areaCircleSubPOST**](Apis/UnsupportedApi.md#areacirclesubpost) | **POST** /subscriptions/area/circle | Creates a subscription for area change notification +*UnsupportedApi* | [**areaCircleSubPUT**](Apis/UnsupportedApi.md#areacirclesubput) | **PUT** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information +*UnsupportedApi* | [**distanceGET**](Apis/UnsupportedApi.md#distanceget) | **GET** /queries/distance | UE Distance Lookup of a specific UE +*UnsupportedApi* | [**distanceSubDELETE**](Apis/UnsupportedApi.md#distancesubdelete) | **DELETE** /subscriptions/distance/{subscriptionId} | Cancel a subscription +*UnsupportedApi* | [**distanceSubGET**](Apis/UnsupportedApi.md#distancesubget) | **GET** /subscriptions/distance/{subscriptionId} | Retrieve subscription information +*UnsupportedApi* | [**distanceSubListGET**](Apis/UnsupportedApi.md#distancesublistget) | **GET** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications +*UnsupportedApi* | [**distanceSubPOST**](Apis/UnsupportedApi.md#distancesubpost) | **POST** /subscriptions/distance | Creates a subscription for distance change notification +*UnsupportedApi* | [**distanceSubPUT**](Apis/UnsupportedApi.md#distancesubput) | **PUT** /subscriptions/distance/{subscriptionId} | Updates a subscription information +*UnsupportedApi* | [**periodicSubDELETE**](Apis/UnsupportedApi.md#periodicsubdelete) | **DELETE** /subscriptions/periodic/{subscriptionId} | Cancel a subscription +*UnsupportedApi* | [**periodicSubGET**](Apis/UnsupportedApi.md#periodicsubget) | **GET** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information +*UnsupportedApi* | [**periodicSubListGET**](Apis/UnsupportedApi.md#periodicsublistget) | **GET** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications +*UnsupportedApi* | [**periodicSubPOST**](Apis/UnsupportedApi.md#periodicsubpost) | **POST** /subscriptions/periodic | Creates a subscription for periodic notification +*UnsupportedApi* | [**periodicSubPUT**](Apis/UnsupportedApi.md#periodicsubput) | **PUT** /subscriptions/periodic/{subscriptionId} | Updates a subscription information diff --git a/docs/api-metric-engine-v2/Apis/MetricsApi.md b/docs/api-metric-engine-v2/Apis/MetricsApi.md index 90134e3fe..33d5d3562 100644 --- a/docs/api-metric-engine-v2/Apis/MetricsApi.md +++ b/docs/api-metric-engine-v2/Apis/MetricsApi.md @@ -1,6 +1,6 @@ # MetricsApi -All URIs are relative to *http://localhost/metrics/v2* +All URIs are relative to *http://localhost/sandboxname/metrics/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-metric-engine-v2/Apis/SubscriptionsApi.md b/docs/api-metric-engine-v2/Apis/SubscriptionsApi.md index bfa490837..b67f98d80 100644 --- a/docs/api-metric-engine-v2/Apis/SubscriptionsApi.md +++ b/docs/api-metric-engine-v2/Apis/SubscriptionsApi.md @@ -1,6 +1,6 @@ # SubscriptionsApi -All URIs are relative to *http://localhost/metrics/v2* +All URIs are relative to *http://localhost/sandboxname/metrics/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-metric-engine-v2/README.md b/docs/api-metric-engine-v2/README.md index c3dcacdf0..f1c708ac3 100644 --- a/docs/api-metric-engine-v2/README.md +++ b/docs/api-metric-engine-v2/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *http://localhost/metrics/v2* +All URIs are relative to *http://localhost/sandboxname/metrics/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/docs/api-mg-manager/Apis/MembershipApi.md b/docs/api-mg-manager/Apis/MembershipApi.md index 3c126fb33..d4e0763ac 100644 --- a/docs/api-mg-manager/Apis/MembershipApi.md +++ b/docs/api-mg-manager/Apis/MembershipApi.md @@ -1,6 +1,6 @@ # MembershipApi -All URIs are relative to *http://localhost/mgm/v1* +All URIs are relative to *http://localhost/sandboxname/mgm/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-mg-manager/Apis/StateTransferApi.md b/docs/api-mg-manager/Apis/StateTransferApi.md index 5f5a53c0c..85ab9a137 100644 --- a/docs/api-mg-manager/Apis/StateTransferApi.md +++ b/docs/api-mg-manager/Apis/StateTransferApi.md @@ -1,6 +1,6 @@ # StateTransferApi -All URIs are relative to *http://localhost/mgm/v1* +All URIs are relative to *http://localhost/sandboxname/mgm/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-mg-manager/README.md b/docs/api-mg-manager/README.md index 7edb5c99f..dbad3be18 100644 --- a/docs/api-mg-manager/README.md +++ b/docs/api-mg-manager/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *http://localhost/mgm/v1* +All URIs are relative to *http://localhost/sandboxname/mgm/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/docs/api-rnis/.openapi-generator/FILES b/docs/api-rnis/.openapi-generator/FILES index 02c8c57c6..9320a1182 100644 --- a/docs/api-rnis/.openapi-generator/FILES +++ b/docs/api-rnis/.openapi-generator/FILES @@ -1,5 +1,6 @@ .openapi-generator-ignore Apis/RniApi.md +Apis/UnsupportedApi.md Models/AssociateId.md Models/CaReconfNotification.md Models/CaReconfNotificationCarrierAggregationMeasInfo.md diff --git a/docs/api-rnis/Apis/RniApi.md b/docs/api-rnis/Apis/RniApi.md index a195a9798..e20ab8917 100644 --- a/docs/api-rnis/Apis/RniApi.md +++ b/docs/api-rnis/Apis/RniApi.md @@ -1,13 +1,11 @@ # RniApi -All URIs are relative to *https://localhost/rni/v2* +All URIs are relative to *https://localhost/sandboxname/rni/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**layer2MeasInfoGET**](RniApi.md#layer2MeasInfoGET) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements [**plmnInfoGET**](RniApi.md#plmnInfoGET) | **GET** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to [**rabInfoGET**](RniApi.md#rabInfoGET) | **GET** /queries/rab_info | Retrieve information on Radio Access Bearers -[**s1BearerInfoGET**](RniApi.md#s1BearerInfoGET) | **GET** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) [**subscriptionLinkListSubscriptionsGET**](RniApi.md#subscriptionLinkListSubscriptionsGET) | **GET** /subscriptions | Retrieve information on subscriptions for notifications [**subscriptionsDELETE**](RniApi.md#subscriptionsDELETE) | **DELETE** /subscriptions/{subscriptionId} | Cancel an existing subscription [**subscriptionsGET**](RniApi.md#subscriptionsGET) | **GET** /subscriptions/{subscriptionId} | Retrieve information on current specific subscription @@ -15,71 +13,6 @@ Method | HTTP request | Description [**subscriptionsPUT**](RniApi.md#subscriptionsPUT) | **PUT** /subscriptions/{subscriptionId} | Modify an existing subscription - -# **layer2MeasInfoGET** -> L2Meas layer2MeasInfoGET(app\_ins\_id, cell\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, dl\_gbr\_prb\_usage\_cell, ul\_gbr\_prb\_usage\_cell, dl\_nongbr\_prb\_usage\_cell, ul\_nongbr\_prb\_usage\_cell, dl\_total\_prb\_usage\_cell, ul\_total\_prb\_usage\_cell, received\_dedicated\_preambles\_cell, received\_randomly\_selected\_preambles\_low\_range\_cell, received\_randomly\_selected\_preambles\_high\_range\_cell, number\_of\_active\_ue\_dl\_gbr\_cell, number\_of\_active\_ue\_ul\_gbr\_cell, number\_of\_active\_ue\_dl\_nongbr\_cell, number\_of\_active\_ue\_ul\_nongbr\_cell, dl\_gbr\_pdr\_cell, ul\_gbr\_pdr\_cell, dl\_nongbr\_pdr\_cell, ul\_nongbr\_pdr\_cell, dl\_gbr\_delay\_ue, ul\_gbr\_delay\_ue, dl\_nongbr\_delay\_ue, ul\_nongbr\_delay\_ue, dl\_gbr\_pdr\_ue, ul\_gbr\_pdr\_ue, dl\_nongbr\_pdr\_ue, ul\_nongbr\_pdr\_ue, dl\_gbr\_throughput\_ue, ul\_gbr\_throughput\_ue, dl\_nongbr\_throughput\_ue, ul\_nongbr\_throughput\_ue, dl\_gbr\_data\_volume\_ue, ul\_gbr\_data\_volume\_ue, dl\_nongbr\_data\_volume\_ue, ul\_nongbr\_data\_volume\_ue) - -Retrieve information on layer 2 measurements - - Queries information about the layer 2 measurements. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **app\_ins\_id** | **String**| Application instance identifier | [optional] [default to null] - **cell\_id** | [**List**](../Models/String.md)| Comma separated list of E-UTRAN Cell Identities | [optional] [default to null] - **ue\_ipv4\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | [optional] [default to null] - **ue\_ipv6\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | [optional] [default to null] - **nated\_ip\_address** | [**List**](../Models/String.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | [optional] [default to null] - **gtp\_teid** | [**List**](../Models/String.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | [optional] [default to null] - **dl\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **received\_dedicated\_preambles\_cell** | **Integer**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **received\_randomly\_selected\_preambles\_low\_range\_cell** | **Integer**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **received\_randomly\_selected\_preambles\_high\_range\_cell** | **Integer**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_dl\_gbr\_cell** | **Integer**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_ul\_gbr\_cell** | **Integer**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_dl\_nongbr\_cell** | **Integer**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_ul\_nongbr\_cell** | **Integer**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_delay\_ue** | **Integer**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_delay\_ue** | **Integer**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_delay\_ue** | **Integer**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_delay\_ue** | **Integer**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_data\_volume\_ue** | **Integer**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_data\_volume\_ue** | **Integer**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - -### Return type - -[**L2Meas**](../Models/L2Meas.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json, application/problem+json - # **plmnInfoGET** > PlmnInfo plmnInfoGET(app\_ins\_id) @@ -145,39 +78,6 @@ No authorization required - **Content-Type**: Not defined - **Accept**: application/json, application/problem+json - -# **s1BearerInfoGET** -> S1BearerInfo s1BearerInfoGET(temp\_ue\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, cell\_id, erab\_id) - -Retrieve S1-U bearer information related to specific UE(s) - - Queries information about the S1 bearer(s) - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **temp\_ue\_id** | [**List**](../Models/String.md)| Comma separated list of temporary identifiers allocated for the specific UE as defined in ETSI TS 136 413 | [optional] [default to null] - **ue\_ipv4\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | [optional] [default to null] - **ue\_ipv6\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | [optional] [default to null] - **nated\_ip\_address** | [**List**](../Models/String.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | [optional] [default to null] - **gtp\_teid** | [**List**](../Models/String.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | [optional] [default to null] - **cell\_id** | [**List**](../Models/String.md)| Comma separated list of E-UTRAN Cell Identities | [optional] [default to null] - **erab\_id** | [**List**](../Models/Integer.md)| Comma separated list of E-RAB identifiers | [optional] [default to null] - -### Return type - -[**S1BearerInfo**](../Models/S1BearerInfo.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json, application/problem+json - # **subscriptionLinkListSubscriptionsGET** > SubscriptionLinkList subscriptionLinkListSubscriptionsGET(subscription\_type) diff --git a/docs/api-rnis/Apis/UnsupportedApi.md b/docs/api-rnis/Apis/UnsupportedApi.md new file mode 100644 index 000000000..c5b795cbf --- /dev/null +++ b/docs/api-rnis/Apis/UnsupportedApi.md @@ -0,0 +1,108 @@ +# UnsupportedApi + +All URIs are relative to *https://localhost/sandboxname/rni/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**layer2MeasInfoGET**](UnsupportedApi.md#layer2MeasInfoGET) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements +[**s1BearerInfoGET**](UnsupportedApi.md#s1BearerInfoGET) | **GET** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) + + + +# **layer2MeasInfoGET** +> L2Meas layer2MeasInfoGET(app\_ins\_id, cell\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, dl\_gbr\_prb\_usage\_cell, ul\_gbr\_prb\_usage\_cell, dl\_nongbr\_prb\_usage\_cell, ul\_nongbr\_prb\_usage\_cell, dl\_total\_prb\_usage\_cell, ul\_total\_prb\_usage\_cell, received\_dedicated\_preambles\_cell, received\_randomly\_selected\_preambles\_low\_range\_cell, received\_randomly\_selected\_preambles\_high\_range\_cell, number\_of\_active\_ue\_dl\_gbr\_cell, number\_of\_active\_ue\_ul\_gbr\_cell, number\_of\_active\_ue\_dl\_nongbr\_cell, number\_of\_active\_ue\_ul\_nongbr\_cell, dl\_gbr\_pdr\_cell, ul\_gbr\_pdr\_cell, dl\_nongbr\_pdr\_cell, ul\_nongbr\_pdr\_cell, dl\_gbr\_delay\_ue, ul\_gbr\_delay\_ue, dl\_nongbr\_delay\_ue, ul\_nongbr\_delay\_ue, dl\_gbr\_pdr\_ue, ul\_gbr\_pdr\_ue, dl\_nongbr\_pdr\_ue, ul\_nongbr\_pdr\_ue, dl\_gbr\_throughput\_ue, ul\_gbr\_throughput\_ue, dl\_nongbr\_throughput\_ue, ul\_nongbr\_throughput\_ue, dl\_gbr\_data\_volume\_ue, ul\_gbr\_data\_volume\_ue, dl\_nongbr\_data\_volume\_ue, ul\_nongbr\_data\_volume\_ue) + +Retrieve information on layer 2 measurements + + Queries information about the layer 2 measurements. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **app\_ins\_id** | **String**| Application instance identifier | [optional] [default to null] + **cell\_id** | [**List**](../Models/String.md)| Comma separated list of E-UTRAN Cell Identities | [optional] [default to null] + **ue\_ipv4\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | [optional] [default to null] + **ue\_ipv6\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | [optional] [default to null] + **nated\_ip\_address** | [**List**](../Models/String.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | [optional] [default to null] + **gtp\_teid** | [**List**](../Models/String.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | [optional] [default to null] + **dl\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **received\_dedicated\_preambles\_cell** | **Integer**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **received\_randomly\_selected\_preambles\_low\_range\_cell** | **Integer**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **received\_randomly\_selected\_preambles\_high\_range\_cell** | **Integer**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_dl\_gbr\_cell** | **Integer**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_ul\_gbr\_cell** | **Integer**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_dl\_nongbr\_cell** | **Integer**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_ul\_nongbr\_cell** | **Integer**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_delay\_ue** | **Integer**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_delay\_ue** | **Integer**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_delay\_ue** | **Integer**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_delay\_ue** | **Integer**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_data\_volume\_ue** | **Integer**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_data\_volume\_ue** | **Integer**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + +### Return type + +[**L2Meas**](../Models/L2Meas.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json, application/problem+json + + +# **s1BearerInfoGET** +> S1BearerInfo s1BearerInfoGET(temp\_ue\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, cell\_id, erab\_id) + +Retrieve S1-U bearer information related to specific UE(s) + + Queries information about the S1 bearer(s) + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **temp\_ue\_id** | [**List**](../Models/String.md)| Comma separated list of temporary identifiers allocated for the specific UE as defined in ETSI TS 136 413 | [optional] [default to null] + **ue\_ipv4\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | [optional] [default to null] + **ue\_ipv6\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | [optional] [default to null] + **nated\_ip\_address** | [**List**](../Models/String.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | [optional] [default to null] + **gtp\_teid** | [**List**](../Models/String.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | [optional] [default to null] + **cell\_id** | [**List**](../Models/String.md)| Comma separated list of E-UTRAN Cell Identities | [optional] [default to null] + **erab\_id** | [**List**](../Models/Integer.md)| Comma separated list of E-RAB identifiers | [optional] [default to null] + +### Return type + +[**S1BearerInfo**](../Models/S1BearerInfo.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json, application/problem+json + diff --git a/docs/api-rnis/README.md b/docs/api-rnis/README.md index f6a49fa3d..cf37c7008 100644 --- a/docs/api-rnis/README.md +++ b/docs/api-rnis/README.md @@ -3,19 +3,19 @@ ## Documentation for API Endpoints -All URIs are relative to *https://localhost/rni/v2* +All URIs are relative to *https://localhost/sandboxname/rni/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*RniApi* | [**layer2MeasInfoGET**](Apis/RniApi.md#layer2measinfoget) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements *RniApi* | [**plmnInfoGET**](Apis/RniApi.md#plmninfoget) | **GET** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to *RniApi* | [**rabInfoGET**](Apis/RniApi.md#rabinfoget) | **GET** /queries/rab_info | Retrieve information on Radio Access Bearers -*RniApi* | [**s1BearerInfoGET**](Apis/RniApi.md#s1bearerinfoget) | **GET** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) *RniApi* | [**subscriptionLinkListSubscriptionsGET**](Apis/RniApi.md#subscriptionlinklistsubscriptionsget) | **GET** /subscriptions | Retrieve information on subscriptions for notifications *RniApi* | [**subscriptionsDELETE**](Apis/RniApi.md#subscriptionsdelete) | **DELETE** /subscriptions/{subscriptionId} | Cancel an existing subscription *RniApi* | [**subscriptionsGET**](Apis/RniApi.md#subscriptionsget) | **GET** /subscriptions/{subscriptionId} | Retrieve information on current specific subscription *RniApi* | [**subscriptionsPOST**](Apis/RniApi.md#subscriptionspost) | **POST** /subscriptions | Create a new subscription *RniApi* | [**subscriptionsPUT**](Apis/RniApi.md#subscriptionsput) | **PUT** /subscriptions/{subscriptionId} | Modify an existing subscription +*UnsupportedApi* | [**layer2MeasInfoGET**](Apis/UnsupportedApi.md#layer2measinfoget) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements +*UnsupportedApi* | [**s1BearerInfoGET**](Apis/UnsupportedApi.md#s1bearerinfoget) | **GET** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) diff --git a/docs/api-sandbox-ctrl/Apis/ActiveScenarioApi.md b/docs/api-sandbox-ctrl/Apis/ActiveScenarioApi.md index 3d475247e..f7b7d5e58 100644 --- a/docs/api-sandbox-ctrl/Apis/ActiveScenarioApi.md +++ b/docs/api-sandbox-ctrl/Apis/ActiveScenarioApi.md @@ -1,6 +1,6 @@ # ActiveScenarioApi -All URIs are relative to *http://localhost/sandbox-ctrl/v1* +All URIs are relative to *http://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-sandbox-ctrl/Apis/EventReplayApi.md b/docs/api-sandbox-ctrl/Apis/EventReplayApi.md index a5a0b08a5..780c55d58 100644 --- a/docs/api-sandbox-ctrl/Apis/EventReplayApi.md +++ b/docs/api-sandbox-ctrl/Apis/EventReplayApi.md @@ -1,6 +1,6 @@ # EventReplayApi -All URIs are relative to *http://localhost/sandbox-ctrl/v1* +All URIs are relative to *http://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-sandbox-ctrl/Apis/EventsApi.md b/docs/api-sandbox-ctrl/Apis/EventsApi.md index bc3cc4f78..648a401be 100644 --- a/docs/api-sandbox-ctrl/Apis/EventsApi.md +++ b/docs/api-sandbox-ctrl/Apis/EventsApi.md @@ -1,6 +1,6 @@ # EventsApi -All URIs are relative to *http://localhost/sandbox-ctrl/v1* +All URIs are relative to *http://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-sandbox-ctrl/README.md b/docs/api-sandbox-ctrl/README.md index 4f7a8effc..885a628aa 100644 --- a/docs/api-sandbox-ctrl/README.md +++ b/docs/api-sandbox-ctrl/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *http://localhost/sandbox-ctrl/v1* +All URIs are relative to *http://localhost/sandboxname/sandbox-ctrl/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/docs/api-wais/Apis/WaiApi.md b/docs/api-wais/Apis/WaiApi.md index 4d79d5305..ef10a06ca 100644 --- a/docs/api-wais/Apis/WaiApi.md +++ b/docs/api-wais/Apis/WaiApi.md @@ -1,6 +1,6 @@ # WaiApi -All URIs are relative to *https://localhost/wai/v2* +All URIs are relative to *https://localhost/sandboxname/wai/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-wais/README.md b/docs/api-wais/README.md index 4fec9e084..a37d6b010 100644 --- a/docs/api-wais/README.md +++ b/docs/api-wais/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *https://localhost/wai/v2* +All URIs are relative to *https://localhost/sandboxname/wai/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/examples/demo1/src/demo-client/js/README.md b/examples/demo1/src/demo-client/js/README.md index 3fa1fcb82..36562c71e 100644 --- a/examples/demo1/src/demo-client/js/README.md +++ b/examples/demo1/src/demo-client/js/README.md @@ -127,9 +127,11 @@ Class | Method | HTTP request | Description ## Documentation for Models - [MeepDemoAppApi.EdgeInfo](docs/EdgeInfo.md) + - [MeepDemoAppApi.InlineTrackingNotification](docs/InlineTrackingNotification.md) - [MeepDemoAppApi.MobilityGroupAppState](docs/MobilityGroupAppState.md) - [MeepDemoAppApi.MobilityGroupEvent](docs/MobilityGroupEvent.md) - [MeepDemoAppApi.SubscriptionId](docs/SubscriptionId.md) + - [MeepDemoAppApi.TimeStamp](docs/TimeStamp.md) - [MeepDemoAppApi.TrackingNotification](docs/TrackingNotification.md) - [MeepDemoAppApi.UeState](docs/UeState.md) - [MeepDemoAppApi.UserEventType](docs/UserEventType.md) diff --git a/examples/demo1/src/demo-client/js/docs/InlineTrackingNotification.md b/examples/demo1/src/demo-client/js/docs/InlineTrackingNotification.md new file mode 100644 index 000000000..debcc13dc --- /dev/null +++ b/examples/demo1/src/demo-client/js/docs/InlineTrackingNotification.md @@ -0,0 +1,8 @@ +# MeepDemoAppApi.InlineTrackingNotification + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**zonalPresenceNotification** | [**TrackingNotification**](TrackingNotification.md) | | + + diff --git a/examples/demo1/src/demo-client/js/docs/TimeStamp.md b/examples/demo1/src/demo-client/js/docs/TimeStamp.md new file mode 100644 index 000000000..1f4e3567f --- /dev/null +++ b/examples/demo1/src/demo-client/js/docs/TimeStamp.md @@ -0,0 +1,9 @@ +# MeepDemoAppApi.TimeStamp + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**nanoSeconds** | **Number** | The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. | +**seconds** | **Number** | The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. | + + diff --git a/examples/demo1/src/demo-client/js/docs/TrackingNotification.md b/examples/demo1/src/demo-client/js/docs/TrackingNotification.md index 9846af2bd..e38c7036e 100644 --- a/examples/demo1/src/demo-client/js/docs/TrackingNotification.md +++ b/examples/demo1/src/demo-client/js/docs/TrackingNotification.md @@ -10,6 +10,6 @@ Name | Type | Description | Notes **userEventType** | [**UserEventType**](UserEventType.md) | | [optional] **currentAccessPointId** | **String** | Unique identifier of a point of access | [optional] **previousAccessPointId** | **String** | Unique identifier of a point of access | [optional] -**timestamp** | **Date** | Indicates the time of day for zonal presence notification. | [optional] +**timestamp** | [**TimeStamp**](TimeStamp.md) | | [optional] diff --git a/examples/demo1/src/demo-client/js/docs/UserTrackingNotification.md b/examples/demo1/src/demo-client/js/docs/UserTrackingNotification.md index e2576660d..965f07630 100644 --- a/examples/demo1/src/demo-client/js/docs/UserTrackingNotification.md +++ b/examples/demo1/src/demo-client/js/docs/UserTrackingNotification.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **callbackData** | **String** | CallBackData if passed by the application during the associated Subscription (Zone or User Tracking) operation | **userInfo** | [**UserInfo**](UserInfo.md) | | -**timeStamp** | **Date** | Indicates the time of day for zonal presence notification. | +**timeStamp** | [**TimeStamp**](TimeStamp.md) | | **userEventType** | [**UserEventType**](UserEventType.md) | | [optional] diff --git a/examples/demo1/src/demo-client/js/src/index.js b/examples/demo1/src/demo-client/js/src/index.js index d47331e7b..21c728f91 100644 --- a/examples/demo1/src/demo-client/js/src/index.js +++ b/examples/demo1/src/demo-client/js/src/index.js @@ -30,12 +30,12 @@ (function(factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/EdgeInfo', 'model/MobilityGroupAppState', 'model/MobilityGroupEvent', 'model/SubscriptionId', 'model/TrackingNotification', 'model/UeState', 'model/UserEventType', 'model/UserInfo', 'model/UserList', 'model/UserTrackingNotification', 'model/ZoneInfo', 'api/EdgeAppInfoApi', 'api/NotificationsApi', 'api/StateTransferApi', 'api/UELocationApi', 'api/UEStateApi'], factory); + define(['ApiClient', 'model/EdgeInfo', 'model/InlineTrackingNotification', 'model/MobilityGroupAppState', 'model/MobilityGroupEvent', 'model/SubscriptionId', 'model/TimeStamp', 'model/TrackingNotification', 'model/UeState', 'model/UserEventType', 'model/UserInfo', 'model/UserList', 'model/UserTrackingNotification', 'model/ZoneInfo', 'api/EdgeAppInfoApi', 'api/NotificationsApi', 'api/StateTransferApi', 'api/UELocationApi', 'api/UEStateApi'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('./ApiClient'), require('./model/EdgeInfo'), require('./model/MobilityGroupAppState'), require('./model/MobilityGroupEvent'), require('./model/SubscriptionId'), require('./model/TrackingNotification'), require('./model/UeState'), require('./model/UserEventType'), require('./model/UserInfo'), require('./model/UserList'), require('./model/UserTrackingNotification'), require('./model/ZoneInfo'), require('./api/EdgeAppInfoApi'), require('./api/NotificationsApi'), require('./api/StateTransferApi'), require('./api/UELocationApi'), require('./api/UEStateApi')); + module.exports = factory(require('./ApiClient'), require('./model/EdgeInfo'), require('./model/InlineTrackingNotification'), require('./model/MobilityGroupAppState'), require('./model/MobilityGroupEvent'), require('./model/SubscriptionId'), require('./model/TimeStamp'), require('./model/TrackingNotification'), require('./model/UeState'), require('./model/UserEventType'), require('./model/UserInfo'), require('./model/UserList'), require('./model/UserTrackingNotification'), require('./model/ZoneInfo'), require('./api/EdgeAppInfoApi'), require('./api/NotificationsApi'), require('./api/StateTransferApi'), require('./api/UELocationApi'), require('./api/UEStateApi')); } -}(function(ApiClient, EdgeInfo, MobilityGroupAppState, MobilityGroupEvent, SubscriptionId, TrackingNotification, UeState, UserEventType, UserInfo, UserList, UserTrackingNotification, ZoneInfo, EdgeAppInfoApi, NotificationsApi, StateTransferApi, UELocationApi, UEStateApi) { +}(function(ApiClient, EdgeInfo, InlineTrackingNotification, MobilityGroupAppState, MobilityGroupEvent, SubscriptionId, TimeStamp, TrackingNotification, UeState, UserEventType, UserInfo, UserList, UserTrackingNotification, ZoneInfo, EdgeAppInfoApi, NotificationsApi, StateTransferApi, UELocationApi, UEStateApi) { 'use strict'; /** @@ -80,6 +80,11 @@ * @property {module:model/EdgeInfo} */ EdgeInfo: EdgeInfo, + /** + * The InlineTrackingNotification model constructor. + * @property {module:model/InlineTrackingNotification} + */ + InlineTrackingNotification: InlineTrackingNotification, /** * The MobilityGroupAppState model constructor. * @property {module:model/MobilityGroupAppState} @@ -95,6 +100,11 @@ * @property {module:model/SubscriptionId} */ SubscriptionId: SubscriptionId, + /** + * The TimeStamp model constructor. + * @property {module:model/TimeStamp} + */ + TimeStamp: TimeStamp, /** * The TrackingNotification model constructor. * @property {module:model/TrackingNotification} diff --git a/examples/demo1/src/demo-client/js/src/model/InlineTrackingNotification.js b/examples/demo1/src/demo-client/js/src/model/InlineTrackingNotification.js new file mode 100644 index 000000000..8d5cefc89 --- /dev/null +++ b/examples/demo1/src/demo-client/js/src/model/InlineTrackingNotification.js @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * MEEP Demo App API + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * OpenAPI spec version: 0.0.1 + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient', 'model/TrackingNotification'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient'), require('./TrackingNotification')); + } else { + // Browser globals (root is window) + if (!root.MeepDemoAppApi) { + root.MeepDemoAppApi = {}; + } + root.MeepDemoAppApi.InlineTrackingNotification = factory(root.MeepDemoAppApi.ApiClient, root.MeepDemoAppApi.TrackingNotification); + } +}(this, function(ApiClient, TrackingNotification) { + 'use strict'; + + /** + * The InlineTrackingNotification model module. + * @module model/InlineTrackingNotification + * @version 0.0.1 + */ + + /** + * Constructs a new InlineTrackingNotification. + * @alias module:model/InlineTrackingNotification + * @class + * @param zonalPresenceNotification {module:model/TrackingNotification} + */ + var exports = function(zonalPresenceNotification) { + this.zonalPresenceNotification = zonalPresenceNotification; + }; + + /** + * Constructs a InlineTrackingNotification from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/InlineTrackingNotification} obj Optional instance to populate. + * @return {module:model/InlineTrackingNotification} The populated InlineTrackingNotification instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + if (data.hasOwnProperty('zonalPresenceNotification')) + obj.zonalPresenceNotification = TrackingNotification.constructFromObject(data['zonalPresenceNotification']); + } + return obj; + } + + /** + * @member {module:model/TrackingNotification} zonalPresenceNotification + */ + exports.prototype.zonalPresenceNotification = undefined; + + return exports; + +})); diff --git a/examples/demo1/src/demo-client/js/src/model/TimeStamp.js b/examples/demo1/src/demo-client/js/src/model/TimeStamp.js new file mode 100644 index 000000000..37b383513 --- /dev/null +++ b/examples/demo1/src/demo-client/js/src/model/TimeStamp.js @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * MEEP Demo App API + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * OpenAPI spec version: 0.0.1 + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient')); + } else { + // Browser globals (root is window) + if (!root.MeepDemoAppApi) { + root.MeepDemoAppApi = {}; + } + root.MeepDemoAppApi.TimeStamp = factory(root.MeepDemoAppApi.ApiClient); + } +}(this, function(ApiClient) { + 'use strict'; + + /** + * The TimeStamp model module. + * @module model/TimeStamp + * @version 0.0.1 + */ + + /** + * Constructs a new TimeStamp. + * @alias module:model/TimeStamp + * @class + * @param nanoSeconds {Number} The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + * @param seconds {Number} The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. + */ + var exports = function(nanoSeconds, seconds) { + this.nanoSeconds = nanoSeconds; + this.seconds = seconds; + }; + + /** + * Constructs a TimeStamp from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/TimeStamp} obj Optional instance to populate. + * @return {module:model/TimeStamp} The populated TimeStamp instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + if (data.hasOwnProperty('nanoSeconds')) + obj.nanoSeconds = ApiClient.convertToType(data['nanoSeconds'], 'Number'); + if (data.hasOwnProperty('seconds')) + obj.seconds = ApiClient.convertToType(data['seconds'], 'Number'); + } + return obj; + } + + /** + * The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + * @member {Number} nanoSeconds + */ + exports.prototype.nanoSeconds = undefined; + + /** + * The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. + * @member {Number} seconds + */ + exports.prototype.seconds = undefined; + + return exports; + +})); diff --git a/examples/demo1/src/demo-client/js/src/model/TrackingNotification.js b/examples/demo1/src/demo-client/js/src/model/TrackingNotification.js index f54ef08ac..80452e7d8 100644 --- a/examples/demo1/src/demo-client/js/src/model/TrackingNotification.js +++ b/examples/demo1/src/demo-client/js/src/model/TrackingNotification.js @@ -30,18 +30,18 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/UserEventType'], factory); + define(['ApiClient', 'model/TimeStamp', 'model/UserEventType'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('../ApiClient'), require('./UserEventType')); + module.exports = factory(require('../ApiClient'), require('./TimeStamp'), require('./UserEventType')); } else { // Browser globals (root is window) if (!root.MeepDemoAppApi) { root.MeepDemoAppApi = {}; } - root.MeepDemoAppApi.TrackingNotification = factory(root.MeepDemoAppApi.ApiClient, root.MeepDemoAppApi.UserEventType); + root.MeepDemoAppApi.TrackingNotification = factory(root.MeepDemoAppApi.ApiClient, root.MeepDemoAppApi.TimeStamp, root.MeepDemoAppApi.UserEventType); } -}(this, function(ApiClient, UserEventType) { +}(this, function(ApiClient, TimeStamp, UserEventType) { 'use strict'; /** @@ -86,7 +86,7 @@ if (data.hasOwnProperty('previousAccessPointId')) obj.previousAccessPointId = ApiClient.convertToType(data['previousAccessPointId'], 'String'); if (data.hasOwnProperty('timestamp')) - obj.timestamp = ApiClient.convertToType(data['timestamp'], 'Date'); + obj.timestamp = TimeStamp.constructFromObject(data['timestamp']); } return obj; } @@ -133,8 +133,7 @@ exports.prototype.previousAccessPointId = undefined; /** - * Indicates the time of day for zonal presence notification. - * @member {Date} timestamp + * @member {module:model/TimeStamp} timestamp */ exports.prototype.timestamp = undefined; diff --git a/examples/demo1/src/demo-client/js/src/model/UserTrackingNotification.js b/examples/demo1/src/demo-client/js/src/model/UserTrackingNotification.js index 41025372c..3af3a46d4 100644 --- a/examples/demo1/src/demo-client/js/src/model/UserTrackingNotification.js +++ b/examples/demo1/src/demo-client/js/src/model/UserTrackingNotification.js @@ -30,18 +30,18 @@ (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/UserEventType', 'model/UserInfo'], factory); + define(['ApiClient', 'model/TimeStamp', 'model/UserEventType', 'model/UserInfo'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('../ApiClient'), require('./UserEventType'), require('./UserInfo')); + module.exports = factory(require('../ApiClient'), require('./TimeStamp'), require('./UserEventType'), require('./UserInfo')); } else { // Browser globals (root is window) if (!root.MeepDemoAppApi) { root.MeepDemoAppApi = {}; } - root.MeepDemoAppApi.UserTrackingNotification = factory(root.MeepDemoAppApi.ApiClient, root.MeepDemoAppApi.UserEventType, root.MeepDemoAppApi.UserInfo); + root.MeepDemoAppApi.UserTrackingNotification = factory(root.MeepDemoAppApi.ApiClient, root.MeepDemoAppApi.TimeStamp, root.MeepDemoAppApi.UserEventType, root.MeepDemoAppApi.UserInfo); } -}(this, function(ApiClient, UserEventType, UserInfo) { +}(this, function(ApiClient, TimeStamp, UserEventType, UserInfo) { 'use strict'; /** @@ -57,7 +57,7 @@ * @class * @param callbackData {String} CallBackData if passed by the application during the associated Subscription (Zone or User Tracking) operation * @param userInfo {module:model/UserInfo} - * @param timeStamp {Date} Indicates the time of day for zonal presence notification. + * @param timeStamp {module:model/TimeStamp} */ var exports = function(callbackData, userInfo, timeStamp) { this.callbackData = callbackData; @@ -80,7 +80,7 @@ if (data.hasOwnProperty('userInfo')) obj.userInfo = UserInfo.constructFromObject(data['userInfo']); if (data.hasOwnProperty('timeStamp')) - obj.timeStamp = ApiClient.convertToType(data['timeStamp'], 'Date'); + obj.timeStamp = TimeStamp.constructFromObject(data['timeStamp']); if (data.hasOwnProperty('userEventType')) obj.userEventType = UserEventType.constructFromObject(data['userEventType']); } @@ -99,8 +99,7 @@ exports.prototype.userInfo = undefined; /** - * Indicates the time of day for zonal presence notification. - * @member {Date} timeStamp + * @member {module:model/TimeStamp} timeStamp */ exports.prototype.timeStamp = undefined; diff --git a/examples/demo1/src/demo-client/js/test/api/NotificationsApi.spec.js b/examples/demo1/src/demo-client/js/test/api/NotificationsApi.spec.js index 5c1045a54..a6a952855 100644 --- a/examples/demo1/src/demo-client/js/test/api/NotificationsApi.spec.js +++ b/examples/demo1/src/demo-client/js/test/api/NotificationsApi.spec.js @@ -62,7 +62,9 @@ notification.userEventType = new MeepDemoAppApi.UserEventType(); notification.currentAccessPointId = "001010000000000000000000000000001 or poa001"; notification.previousAccessPointId = "001010000000000000000000000000001 or poa001"; - notification.timestamp = new Date(); + notification.timestamp = new MeepDemoAppApi.TimeStamp(); + notification.timestamp.nanoSeconds = 0; + notification.timestamp.seconds = 0; instance.postTrackingNotification(subscriptionId, notification, function(error, data, response) { if (error) { diff --git a/examples/demo1/src/demo-client/js/test/model/InlineTrackingNotification.spec.js b/examples/demo1/src/demo-client/js/test/model/InlineTrackingNotification.spec.js new file mode 100644 index 000000000..8dc306082 --- /dev/null +++ b/examples/demo1/src/demo-client/js/test/model/InlineTrackingNotification.spec.js @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * MEEP Demo App API + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * OpenAPI spec version: 0.0.1 + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', '../../src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require('../../src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.MeepDemoAppApi); + } +}(this, function(expect, MeepDemoAppApi) { + 'use strict'; + + var instance; + + describe('(package)', function() { + describe('InlineTrackingNotification', function() { + beforeEach(function() { + instance = new MeepDemoAppApi.InlineTrackingNotification(); + }); + + it('should create an instance of InlineTrackingNotification', function() { + // TODO: update the code to test InlineTrackingNotification + expect(instance).to.be.a(MeepDemoAppApi.InlineTrackingNotification); + }); + + it('should have the property zonalPresenceNotification (base name: "zonalPresenceNotification")', function() { + // TODO: update the code to test the property zonalPresenceNotification + expect(instance).to.have.property('zonalPresenceNotification'); + // expect(instance.zonalPresenceNotification).to.be(expectedValueLiteral); + }); + + }); + }); + +})); diff --git a/examples/demo1/src/demo-client/js/test/model/TimeStamp.spec.js b/examples/demo1/src/demo-client/js/test/model/TimeStamp.spec.js new file mode 100644 index 000000000..34aa2c560 --- /dev/null +++ b/examples/demo1/src/demo-client/js/test/model/TimeStamp.spec.js @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * MEEP Demo App API + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * OpenAPI spec version: 0.0.1 + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', '../../src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require('../../src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.MeepDemoAppApi); + } +}(this, function(expect, MeepDemoAppApi) { + 'use strict'; + + var instance; + + describe('(package)', function() { + describe('TimeStamp', function() { + beforeEach(function() { + instance = new MeepDemoAppApi.TimeStamp(); + }); + + it('should create an instance of TimeStamp', function() { + // TODO: update the code to test TimeStamp + expect(instance).to.be.a(MeepDemoAppApi.TimeStamp); + }); + + it('should have the property nanoSeconds (base name: "nanoSeconds")', function() { + // TODO: update the code to test the property nanoSeconds + expect(instance).to.have.property('nanoSeconds'); + // expect(instance.nanoSeconds).to.be(expectedValueLiteral); + }); + + it('should have the property seconds (base name: "seconds")', function() { + // TODO: update the code to test the property seconds + expect(instance).to.have.property('seconds'); + // expect(instance.seconds).to.be(expectedValueLiteral); + }); + + }); + }); + +})); diff --git a/examples/demo1/src/demo-server/api/swagger.yaml b/examples/demo1/src/demo-server/api/swagger.yaml index 44aa2d8fa..834bef036 100644 --- a/examples/demo1/src/demo-server/api/swagger.yaml +++ b/examples/demo1/src/demo-server/api/swagger.yaml @@ -383,19 +383,21 @@ definitions: description: "The number of users currently on the access point" description: "A type containing zone information." TimeStamp: + type: "object" + required: + - "nanoSeconds" + - "seconds" properties: nanoSeconds: - description: The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - format: int32 - type: integer + type: "integer" + format: "int32" + description: "The nanoseconds part of the time. Time is defined as Unix-time\ + \ since January 1, 1970, 00:00:00 UTC." seconds: - description: The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. - format: int32 - type: integer - required: - - seconds - - nanoSeconds - type: object + type: "integer" + format: "int32" + description: "The seconds part of the time. Time is defined as Unixtime since\ + \ January 1, 1970, 00:00:00 UTC." InlineTrackingNotification: type: "object" required: diff --git a/examples/demo1/src/demo-server/go/README.md b/examples/demo1/src/demo-server/go/README.md index 4628e09f0..db6dfe102 100644 --- a/examples/demo1/src/demo-server/go/README.md +++ b/examples/demo1/src/demo-server/go/README.md @@ -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-11-13T09:24:41.797-05:00 +- Build date: 2021-01-14T11:46:21.137-05:00 ### Running the server diff --git a/examples/demo1/src/demo-server/go/model_inline_tracking_notification.go b/examples/demo1/src/demo-server/go/model_inline_tracking_notification.go new file mode 100644 index 000000000..b0e00ca6b --- /dev/null +++ b/examples/demo1/src/demo-server/go/model_inline_tracking_notification.go @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * MEEP Demo App API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 0.0.1 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package server + +type InlineTrackingNotification struct { + ZonalPresenceNotification *TrackingNotification `json:"zonalPresenceNotification"` +} diff --git a/examples/demo1/src/demo-server/go/model_time_stamp.go b/examples/demo1/src/demo-server/go/model_time_stamp.go index 666c8a8d4..e73a2fda8 100644 --- a/examples/demo1/src/demo-server/go/model_time_stamp.go +++ b/examples/demo1/src/demo-server/go/model_time_stamp.go @@ -1,4 +1,18 @@ /* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * * MEEP Demo App API * * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) @@ -6,12 +20,14 @@ * API version: 0.0.1 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ + package server type TimeStamp struct { - // The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - NanoSeconds int32 `json:"nanoSeconds"` - // The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. - Seconds int32 `json:"seconds"` -} + // The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + NanoSeconds int32 `json:"nanoSeconds"` + + // The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. + Seconds int32 `json:"seconds"` +} diff --git a/examples/demo1/src/demo-server/go/model_tracking_notification.go b/examples/demo1/src/demo-server/go/model_tracking_notification.go index ee4a55631..688c12964 100644 --- a/examples/demo1/src/demo-server/go/model_tracking_notification.go +++ b/examples/demo1/src/demo-server/go/model_tracking_notification.go @@ -46,6 +46,5 @@ type TrackingNotification struct { // Unique identifier of a point of access PreviousAccessPointId string `json:"previousAccessPointId,omitempty"` - // Indicates the time of day for zonal presence notification. - Timestamp TimeStamp `json:"timestamp,omitempty"` + Timestamp *TimeStamp `json:"timestamp,omitempty"` } diff --git a/examples/demo1/src/demo-server/go/model_user_tracking_notification.go b/examples/demo1/src/demo-server/go/model_user_tracking_notification.go index 443aca333..eb4b06866 100644 --- a/examples/demo1/src/demo-server/go/model_user_tracking_notification.go +++ b/examples/demo1/src/demo-server/go/model_user_tracking_notification.go @@ -31,8 +31,7 @@ type UserTrackingNotification struct { UserInfo *UserInfo `json:"userInfo"` - // Indicates the time of day for zonal presence notification. - TimeStamp TimeStamp `json:"timeStamp"` + TimeStamp *TimeStamp `json:"timeStamp"` UserEventType *UserEventType `json:"userEventType,omitempty"` } diff --git a/examples/demo1/src/iperf-proxy/go/README.md b/examples/demo1/src/iperf-proxy/go/README.md index eb5056388..436a4875a 100644 --- a/examples/demo1/src/iperf-proxy/go/README.md +++ b/examples/demo1/src/iperf-proxy/go/README.md @@ -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-11-13T09:24:43.051-05:00 +- Build date: 2021-01-14T11:46:23.388-05:00 ### Running the server diff --git a/go-apps/meep-gis-engine/api/swagger.yaml b/go-apps/meep-gis-engine/api/swagger.yaml index 67c9e7b76..10c6f1867 100644 --- a/go-apps/meep-gis-engine/api/swagger.yaml +++ b/go-apps/meep-gis-engine/api/swagger.yaml @@ -12,7 +12,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/gis/v1" +basePath: "/sandboxname/gis/v1" tags: - name: "Automation" - name: "Geospatial Data" diff --git a/go-apps/meep-gis-engine/server/README.md b/go-apps/meep-gis-engine/server/README.md index bbdfcd781..908ae3555 100644 --- a/go-apps/meep-gis-engine/server/README.md +++ b/go-apps/meep-gis-engine/server/README.md @@ -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-11-13T09:24:33.151-05:00 +- Build date: 2021-01-14T11:46:05.611-05:00 ### Running the server diff --git a/go-apps/meep-loc-serv/api/swagger.yaml b/go-apps/meep-loc-serv/api/swagger.yaml index 9ad86acb9..056747f65 100644 --- a/go-apps/meep-loc-serv/api/swagger.yaml +++ b/go-apps/meep-loc-serv/api/swagger.yaml @@ -11,7 +11,8 @@ info:

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations -

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_" +

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +

    AdvantEDGE supports a selected subset of Location API endpoints (see below)" license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" @@ -19,14 +20,15 @@ externalDocs: description: "ETSI MEC013 V2.1.1 Location Service API" url: "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf" servers: - - url: 'https://localhost/location/v2' + - url: 'https://localhost/sandboxname/location/v2' tags: - name: 'location' +- name: 'unsupported' paths: /queries/distance: get: tags: - - 'location' + - 'unsupported' summary: 'UE Distance Lookup of a specific UE' description: 'UE Distance Lookup between terminals or a terminal and a location' operationId: distanceGET @@ -205,7 +207,7 @@ paths: /subscriptions/area/circle: get: tags: - - 'location' + - 'unsupported' summary: 'Retrieves all active subscriptions to area change notifications' description: 'This operation is used for retrieving all active subscriptions to area change notifications.' operationId: areaCircleSubListGET @@ -235,7 +237,7 @@ paths: resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/area/circle' post: tags: - - 'location' + - 'unsupported' summary: 'Creates a subscription for area change notification' description: 'Creates a subscription to the Location Service for an area change notification.' operationId: areaCircleSubPOST @@ -333,7 +335,7 @@ paths: /subscriptions/area/circle/{subscriptionId}: get: tags: - - 'location' + - 'unsupported' summary: 'Retrieve subscription information' description: 'Get subscription information.' operationId: areaCircleSubGET @@ -376,7 +378,7 @@ paths: x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' + - 'unsupported' summary: 'Updates a subscription information' description: 'Updates a subscription.' operationId: areaCircleSubPUT @@ -445,7 +447,7 @@ paths: x-swagger-router-controller: 'subscriptions' delete: tags: - - 'location' + - 'unsupported' summary: 'Cancel a subscription' description: 'Method to delete a subscription.' operationId: areaCircleSubDELETE @@ -466,7 +468,7 @@ paths: /subscriptions/distance: get: tags: - - 'location' + - 'unsupported' summary: 'Retrieves all active subscriptions to distance change notifications' description: 'This operation is used for retrieving all active subscriptions to a distance change notifications.' operationId: distanceSubListGET @@ -497,7 +499,7 @@ paths: resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/distance' post: tags: - - 'location' + - 'unsupported' summary: 'Creates a subscription for distance change notification' description: 'Creates a subscription to the Location Service for a distance change notification.' operationId: distanceSubPOST @@ -607,7 +609,7 @@ paths: /subscriptions/distance/{subscriptionId}: get: tags: - - 'location' + - 'unsupported' summary: 'Retrieve subscription information' description: 'Get subscription information.' operationId: distanceSubGET @@ -651,7 +653,7 @@ paths: x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' + - 'unsupported' summary: 'Updates a subscription information' description: 'Updates a subscription.' operationId: distanceSubPUT @@ -722,7 +724,7 @@ paths: x-swagger-router-controller: 'subscriptions' delete: tags: - - 'location' + - 'unsupported' summary: 'Cancel a subscription' description: 'Method to delete a subscription.' operationId: distanceSubDELETE @@ -743,7 +745,7 @@ paths: /subscriptions/periodic: get: tags: - - 'location' + - 'unsupported' summary: 'Retrieves all active subscriptions to periodic notifications' description: 'This operation is used for retrieving all active subscriptions to periodic notifications.' operationId: periodicSubListGET @@ -768,7 +770,7 @@ paths: resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/periodic' post: tags: - - 'location' + - 'unsupported' summary: 'Creates a subscription for periodic notification' description: 'Creates a subscription to the Location Service for a periodic notification.' operationId: periodicSubPOST @@ -855,7 +857,7 @@ paths: /subscriptions/periodic/{subscriptionId}: get: tags: - - 'location' + - 'unsupported' summary: 'Retrieve subscription information' description: 'Get subscription information.' operationId: periodicSubGET @@ -893,7 +895,7 @@ paths: x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' + - 'unsupported' summary: 'Updates a subscription information' description: 'Updates a subscription.' operationId: periodicSubPUT @@ -952,7 +954,7 @@ paths: x-swagger-router-controller: "subscriptions" delete: tags: - - 'location' + - 'unsupported' summary: 'Cancel a subscription' description: 'Method to delete a subscription.' operationId: periodicSubDELETE diff --git a/go-apps/meep-loc-serv/server/README.md b/go-apps/meep-loc-serv/server/README.md index 691a3a363..123a6ceb4 100644 --- a/go-apps/meep-loc-serv/server/README.md +++ b/go-apps/meep-loc-serv/server/README.md @@ -1,6 +1,6 @@ # Go API Server for server -Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) ## Overview This server was generated by the [swagger-codegen] @@ -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: 2.1.1 -- Build date: 2020-11-15T22:25:50.214337-05:00[America/Toronto] +- Build date: 2021-01-14T11:46:07.164-05:00[America/New_York] ### Running the server diff --git a/go-apps/meep-loc-serv/server/model_access_point_info.go b/go-apps/meep-loc-serv/server/model_access_point_info.go index 84bcd733d..2c391951f 100644 --- a/go-apps/meep-loc-serv/server/model_access_point_info.go +++ b/go-apps/meep-loc-serv/server/model_access_point_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_access_point_list.go b/go-apps/meep-loc-serv/server/model_access_point_list.go index 538284eef..bab6ee822 100644 --- a/go-apps/meep-loc-serv/server/model_access_point_list.go +++ b/go-apps/meep-loc-serv/server/model_access_point_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_callback_reference.go b/go-apps/meep-loc-serv/server/model_callback_reference.go index eee702580..c96ecfada 100644 --- a/go-apps/meep-loc-serv/server/model_callback_reference.go +++ b/go-apps/meep-loc-serv/server/model_callback_reference.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_circle_notification_subscription.go b/go-apps/meep-loc-serv/server/model_circle_notification_subscription.go index 99581d9ac..59962ab46 100644 --- a/go-apps/meep-loc-serv/server/model_circle_notification_subscription.go +++ b/go-apps/meep-loc-serv/server/model_circle_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_distance_criteria.go b/go-apps/meep-loc-serv/server/model_distance_criteria.go index 12d267481..5879655d7 100644 --- a/go-apps/meep-loc-serv/server/model_distance_criteria.go +++ b/go-apps/meep-loc-serv/server/model_distance_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_distance_notification_subscription.go b/go-apps/meep-loc-serv/server/model_distance_notification_subscription.go index 0369c4296..e3f0c151e 100644 --- a/go-apps/meep-loc-serv/server/model_distance_notification_subscription.go +++ b/go-apps/meep-loc-serv/server/model_distance_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_access_point_info.go b/go-apps/meep-loc-serv/server/model_inline_access_point_info.go index 8c67f302e..2b409ef96 100644 --- a/go-apps/meep-loc-serv/server/model_inline_access_point_info.go +++ b/go-apps/meep-loc-serv/server/model_inline_access_point_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_access_point_list.go b/go-apps/meep-loc-serv/server/model_inline_access_point_list.go index 558ecd5f3..60fd7897e 100644 --- a/go-apps/meep-loc-serv/server/model_inline_access_point_list.go +++ b/go-apps/meep-loc-serv/server/model_inline_access_point_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_circle_notification_subscription.go b/go-apps/meep-loc-serv/server/model_inline_circle_notification_subscription.go index 3dec3e9d7..6aa9e502f 100644 --- a/go-apps/meep-loc-serv/server/model_inline_circle_notification_subscription.go +++ b/go-apps/meep-loc-serv/server/model_inline_circle_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_distance_notification_subscription.go b/go-apps/meep-loc-serv/server/model_inline_distance_notification_subscription.go index 508c4296d..4028231ab 100644 --- a/go-apps/meep-loc-serv/server/model_inline_distance_notification_subscription.go +++ b/go-apps/meep-loc-serv/server/model_inline_distance_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_notification_subscription_list.go b/go-apps/meep-loc-serv/server/model_inline_notification_subscription_list.go index 387de7f75..ea8349f34 100644 --- a/go-apps/meep-loc-serv/server/model_inline_notification_subscription_list.go +++ b/go-apps/meep-loc-serv/server/model_inline_notification_subscription_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_periodic_notification_subscription.go b/go-apps/meep-loc-serv/server/model_inline_periodic_notification_subscription.go index 0e3a29c2f..45d463413 100644 --- a/go-apps/meep-loc-serv/server/model_inline_periodic_notification_subscription.go +++ b/go-apps/meep-loc-serv/server/model_inline_periodic_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_problem_details.go b/go-apps/meep-loc-serv/server/model_inline_problem_details.go index 81db91fbc..61eb643c7 100644 --- a/go-apps/meep-loc-serv/server/model_inline_problem_details.go +++ b/go-apps/meep-loc-serv/server/model_inline_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_problem_details_required.go b/go-apps/meep-loc-serv/server/model_inline_problem_details_required.go index 2f6653e16..bf6f225f4 100644 --- a/go-apps/meep-loc-serv/server/model_inline_problem_details_required.go +++ b/go-apps/meep-loc-serv/server/model_inline_problem_details_required.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_subscription_notification.go b/go-apps/meep-loc-serv/server/model_inline_subscription_notification.go index a28a32525..2c3ce8851 100644 --- a/go-apps/meep-loc-serv/server/model_inline_subscription_notification.go +++ b/go-apps/meep-loc-serv/server/model_inline_subscription_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_terminal_distance.go b/go-apps/meep-loc-serv/server/model_inline_terminal_distance.go index 65c5659b4..2f09a6247 100644 --- a/go-apps/meep-loc-serv/server/model_inline_terminal_distance.go +++ b/go-apps/meep-loc-serv/server/model_inline_terminal_distance.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_user_list.go b/go-apps/meep-loc-serv/server/model_inline_user_list.go index 9784e3cbd..c17fc3f33 100644 --- a/go-apps/meep-loc-serv/server/model_inline_user_list.go +++ b/go-apps/meep-loc-serv/server/model_inline_user_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_user_tracking_subscription.go b/go-apps/meep-loc-serv/server/model_inline_user_tracking_subscription.go index 6399f65bc..9aef84215 100644 --- a/go-apps/meep-loc-serv/server/model_inline_user_tracking_subscription.go +++ b/go-apps/meep-loc-serv/server/model_inline_user_tracking_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_zonal_presence_notification.go b/go-apps/meep-loc-serv/server/model_inline_zonal_presence_notification.go index a118ae6c9..8115ad1cc 100644 --- a/go-apps/meep-loc-serv/server/model_inline_zonal_presence_notification.go +++ b/go-apps/meep-loc-serv/server/model_inline_zonal_presence_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_zonal_traffic_subscription.go b/go-apps/meep-loc-serv/server/model_inline_zonal_traffic_subscription.go index 655d98d68..995b91431 100644 --- a/go-apps/meep-loc-serv/server/model_inline_zonal_traffic_subscription.go +++ b/go-apps/meep-loc-serv/server/model_inline_zonal_traffic_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_zone_info.go b/go-apps/meep-loc-serv/server/model_inline_zone_info.go index c5e9b748d..47300ddb7 100644 --- a/go-apps/meep-loc-serv/server/model_inline_zone_info.go +++ b/go-apps/meep-loc-serv/server/model_inline_zone_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_zone_list.go b/go-apps/meep-loc-serv/server/model_inline_zone_list.go index 50c43c516..b813a2067 100644 --- a/go-apps/meep-loc-serv/server/model_inline_zone_list.go +++ b/go-apps/meep-loc-serv/server/model_inline_zone_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_zone_status_notification.go b/go-apps/meep-loc-serv/server/model_inline_zone_status_notification.go index 534651308..4e888d307 100644 --- a/go-apps/meep-loc-serv/server/model_inline_zone_status_notification.go +++ b/go-apps/meep-loc-serv/server/model_inline_zone_status_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_inline_zone_status_subscription.go b/go-apps/meep-loc-serv/server/model_inline_zone_status_subscription.go index 62f663bee..44359791e 100644 --- a/go-apps/meep-loc-serv/server/model_inline_zone_status_subscription.go +++ b/go-apps/meep-loc-serv/server/model_inline_zone_status_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_link.go b/go-apps/meep-loc-serv/server/model_link.go index 31df4f271..dbb24059c 100644 --- a/go-apps/meep-loc-serv/server/model_link.go +++ b/go-apps/meep-loc-serv/server/model_link.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_location_info.go b/go-apps/meep-loc-serv/server/model_location_info.go index f55050b07..86f6bf9e6 100644 --- a/go-apps/meep-loc-serv/server/model_location_info.go +++ b/go-apps/meep-loc-serv/server/model_location_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_location_info_velocity.go b/go-apps/meep-loc-serv/server/model_location_info_velocity.go index d05ecfd29..6efd71c35 100644 --- a/go-apps/meep-loc-serv/server/model_location_info_velocity.go +++ b/go-apps/meep-loc-serv/server/model_location_info_velocity.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_notification_format.go b/go-apps/meep-loc-serv/server/model_notification_format.go index cc4185531..56effdac7 100644 --- a/go-apps/meep-loc-serv/server/model_notification_format.go +++ b/go-apps/meep-loc-serv/server/model_notification_format.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_notification_subscription_list.go b/go-apps/meep-loc-serv/server/model_notification_subscription_list.go index 9f0ab7cc0..fd79f3bf6 100644 --- a/go-apps/meep-loc-serv/server/model_notification_subscription_list.go +++ b/go-apps/meep-loc-serv/server/model_notification_subscription_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_periodic_notification_subscription.go b/go-apps/meep-loc-serv/server/model_periodic_notification_subscription.go index 7f3ff10f1..27071cf05 100644 --- a/go-apps/meep-loc-serv/server/model_periodic_notification_subscription.go +++ b/go-apps/meep-loc-serv/server/model_periodic_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_problem_details.go b/go-apps/meep-loc-serv/server/model_problem_details.go index abce2f245..be3ff617c 100644 --- a/go-apps/meep-loc-serv/server/model_problem_details.go +++ b/go-apps/meep-loc-serv/server/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_retrieval_status.go b/go-apps/meep-loc-serv/server/model_retrieval_status.go index eb25c2d53..ae71f19d3 100644 --- a/go-apps/meep-loc-serv/server/model_retrieval_status.go +++ b/go-apps/meep-loc-serv/server/model_retrieval_status.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_service_error.go b/go-apps/meep-loc-serv/server/model_service_error.go index f4b9fd9f3..5d714b5f7 100644 --- a/go-apps/meep-loc-serv/server/model_service_error.go +++ b/go-apps/meep-loc-serv/server/model_service_error.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_subscription_cancellation_notification.go b/go-apps/meep-loc-serv/server/model_subscription_cancellation_notification.go index 4462dcf74..85045f9ef 100644 --- a/go-apps/meep-loc-serv/server/model_subscription_cancellation_notification.go +++ b/go-apps/meep-loc-serv/server/model_subscription_cancellation_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_subscription_notification.go b/go-apps/meep-loc-serv/server/model_subscription_notification.go index 604168558..02bc9d152 100644 --- a/go-apps/meep-loc-serv/server/model_subscription_notification.go +++ b/go-apps/meep-loc-serv/server/model_subscription_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_terminal_distance.go b/go-apps/meep-loc-serv/server/model_terminal_distance.go index 3de75ae2d..bf86fd549 100644 --- a/go-apps/meep-loc-serv/server/model_terminal_distance.go +++ b/go-apps/meep-loc-serv/server/model_terminal_distance.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_terminal_location.go b/go-apps/meep-loc-serv/server/model_terminal_location.go index 4358391f2..8fb459c1c 100644 --- a/go-apps/meep-loc-serv/server/model_terminal_location.go +++ b/go-apps/meep-loc-serv/server/model_terminal_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_time_stamp.go b/go-apps/meep-loc-serv/server/model_time_stamp.go index 47fe22b1f..a058ebd14 100644 --- a/go-apps/meep-loc-serv/server/model_time_stamp.go +++ b/go-apps/meep-loc-serv/server/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_user_info.go b/go-apps/meep-loc-serv/server/model_user_info.go index 75c315a74..243bd8296 100644 --- a/go-apps/meep-loc-serv/server/model_user_info.go +++ b/go-apps/meep-loc-serv/server/model_user_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_user_list.go b/go-apps/meep-loc-serv/server/model_user_list.go index 6195291e8..4feae33be 100644 --- a/go-apps/meep-loc-serv/server/model_user_list.go +++ b/go-apps/meep-loc-serv/server/model_user_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_user_tracking_subscription.go b/go-apps/meep-loc-serv/server/model_user_tracking_subscription.go index f1aa00cc2..2d5b83927 100644 --- a/go-apps/meep-loc-serv/server/model_user_tracking_subscription.go +++ b/go-apps/meep-loc-serv/server/model_user_tracking_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_zonal_presence_notification.go b/go-apps/meep-loc-serv/server/model_zonal_presence_notification.go index 7ca8cbfa4..202be2305 100644 --- a/go-apps/meep-loc-serv/server/model_zonal_presence_notification.go +++ b/go-apps/meep-loc-serv/server/model_zonal_presence_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_zonal_traffic_subscription.go b/go-apps/meep-loc-serv/server/model_zonal_traffic_subscription.go index 9d5959fc8..e2620c2dc 100644 --- a/go-apps/meep-loc-serv/server/model_zonal_traffic_subscription.go +++ b/go-apps/meep-loc-serv/server/model_zonal_traffic_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_zone_info.go b/go-apps/meep-loc-serv/server/model_zone_info.go index bfaaebbbf..d6be90b60 100644 --- a/go-apps/meep-loc-serv/server/model_zone_info.go +++ b/go-apps/meep-loc-serv/server/model_zone_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_zone_list.go b/go-apps/meep-loc-serv/server/model_zone_list.go index b7821c6b1..3fa52b78e 100644 --- a/go-apps/meep-loc-serv/server/model_zone_list.go +++ b/go-apps/meep-loc-serv/server/model_zone_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_zone_status_notification.go b/go-apps/meep-loc-serv/server/model_zone_status_notification.go index 311af238e..04f1219a2 100644 --- a/go-apps/meep-loc-serv/server/model_zone_status_notification.go +++ b/go-apps/meep-loc-serv/server/model_zone_status_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_zone_status_subscription.go b/go-apps/meep-loc-serv/server/model_zone_status_subscription.go index 2c4c20019..8053ab65b 100644 --- a/go-apps/meep-loc-serv/server/model_zone_status_subscription.go +++ b/go-apps/meep-loc-serv/server/model_zone_status_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-metrics-engine/api/v2/swagger.yaml b/go-apps/meep-metrics-engine/api/v2/swagger.yaml index 750a40b3e..a8b33e740 100644 --- a/go-apps/meep-metrics-engine/api/v2/swagger.yaml +++ b/go-apps/meep-metrics-engine/api/v2/swagger.yaml @@ -13,7 +13,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/metrics/v2" +basePath: "/sandboxname/metrics/v2" tags: - name: "Metrics" - name: "Subscriptions" diff --git a/go-apps/meep-metrics-engine/server/v2/README.md b/go-apps/meep-metrics-engine/server/v2/README.md index 0102e98be..01feb42b8 100644 --- a/go-apps/meep-metrics-engine/server/v2/README.md +++ b/go-apps/meep-metrics-engine/server/v2/README.md @@ -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-11-13T09:24:30.822-05:00 +- Build date: 2021-01-14T11:46:00.276-05:00 ### Running the server diff --git a/go-apps/meep-mg-manager/api/swagger.yaml b/go-apps/meep-mg-manager/api/swagger.yaml index 8ce89741d..cc10601bb 100644 --- a/go-apps/meep-mg-manager/api/swagger.yaml +++ b/go-apps/meep-mg-manager/api/swagger.yaml @@ -15,7 +15,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/mgm/v1" +basePath: "/sandboxname/mgm/v1" tags: - name: "Membership" - name: "State Transfer" diff --git a/go-apps/meep-mg-manager/server/README.md b/go-apps/meep-mg-manager/server/README.md index 494bd13da..cd2839345 100644 --- a/go-apps/meep-mg-manager/server/README.md +++ b/go-apps/meep-mg-manager/server/README.md @@ -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-11-13T09:24:26.894-05:00 +- Build date: 2021-01-14T11:45:53.035-05:00 ### Running the server diff --git a/go-apps/meep-mon-engine/server/README.md b/go-apps/meep-mon-engine/server/README.md index 645e4e3a8..9ef82d3b8 100644 --- a/go-apps/meep-mon-engine/server/README.md +++ b/go-apps/meep-mon-engine/server/README.md @@ -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-11-13T09:24:25.568-05:00 +- Build date: 2021-01-14T11:45:50.640-05:00 ### Running the server diff --git a/go-apps/meep-platform-ctrl/server/README.md b/go-apps/meep-platform-ctrl/server/README.md index 1287a9b0e..c09a86628 100644 --- a/go-apps/meep-platform-ctrl/server/README.md +++ b/go-apps/meep-platform-ctrl/server/README.md @@ -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-12-09T09:06:59.942-05:00 +- Build date: 2021-01-14T11:45:18.742-05:00 ### Running the server diff --git a/go-apps/meep-rnis/api/swagger.yaml b/go-apps/meep-rnis/api/swagger.yaml index 2c7a2fde4..6dea6ed33 100644 --- a/go-apps/meep-rnis/api/swagger.yaml +++ b/go-apps/meep-rnis/api/swagger.yaml @@ -10,7 +10,12 @@ info:

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network -

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_" +

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types. +

    Supported subscriptions: +

    - CellChangeSubscription +

    - RabEstSubscription +

    - RabRelSubscription" license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" @@ -18,9 +23,10 @@ externalDocs: description: ETSI GS MEC 012 Radio Network Information API, V2.1.1 url: 'http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_mec012v020101p.pdf' servers: - - url: 'https://localhost/rni/v2' + - url: 'https://localhost/sandboxname/rni/v2' tags: - name: 'rni' +- name: 'unsupported' paths: /queries/rab_info: get: @@ -94,7 +100,7 @@ paths: /queries/s1_bearer_info: get: tags: - - 'rni' + - 'unsupported' summary: 'Retrieve S1-U bearer information related to specific UE(s)' description: 'Queries information about the S1 bearer(s)' operationId: s1_bearer_infoGET @@ -129,7 +135,7 @@ paths: /queries/layer2_meas: get: tags: - - 'rni' + - 'unsupported' summary: 'Retrieve information on layer 2 measurements' description: 'Queries information about the layer 2 measurements.' operationId: layer2_meas_infoGET diff --git a/go-apps/meep-rnis/server/README.md b/go-apps/meep-rnis/server/README.md index 34b7a2db2..edb2f18e9 100644 --- a/go-apps/meep-rnis/server/README.md +++ b/go-apps/meep-rnis/server/README.md @@ -1,6 +1,6 @@ # Go API Server for server -Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription ## Overview This server was generated by the [swagger-codegen] @@ -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: 2.1.1 -- Build date: 2020-11-15T22:25:52.983598-05:00[America/Toronto] +- Build date: 2021-01-14T11:46:11.824-05:00[America/New_York] ### Running the server diff --git a/go-apps/meep-rnis/server/model_associate_id.go b/go-apps/meep-rnis/server/model_associate_id.go index a39036a0b..8bc91e516 100644 --- a/go-apps/meep-rnis/server/model_associate_id.go +++ b/go-apps/meep-rnis/server/model_associate_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_notification.go b/go-apps/meep-rnis/server/model_ca_reconf_notification.go index 497cc0f9b..e6c7a5310 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_notification.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go b/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go index 1b159d8dd..cf98adcca 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go b/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go index e6ec7a211..6588463d9 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_subscription.go b/go-apps/meep-rnis/server/model_ca_reconf_subscription.go index 6c3339802..706ae63a0 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_subscription.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go b/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go index f3c856ce8..49e21aa80 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go b/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go index eeead1c26..45209ab8d 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_notification.go b/go-apps/meep-rnis/server/model_cell_change_notification.go index 9befd3326..ee0bd578d 100644 --- a/go-apps/meep-rnis/server/model_cell_change_notification.go +++ b/go-apps/meep-rnis/server/model_cell_change_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go b/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go index ad03a3757..7d025ef8a 100644 --- a/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go +++ b/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_subscription.go b/go-apps/meep-rnis/server/model_cell_change_subscription.go index 150eaa36f..7cc4b7938 100644 --- a/go-apps/meep-rnis/server/model_cell_change_subscription.go +++ b/go-apps/meep-rnis/server/model_cell_change_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go b/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go index 9dc34162f..f2d6a3421 100644 --- a/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go +++ b/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ecgi.go b/go-apps/meep-rnis/server/model_ecgi.go index 1d9947111..bf62e2b5f 100644 --- a/go-apps/meep-rnis/server/model_ecgi.go +++ b/go-apps/meep-rnis/server/model_ecgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_expiry_notification.go b/go-apps/meep-rnis/server/model_expiry_notification.go index f86efad33..21182080a 100644 --- a/go-apps/meep-rnis/server/model_expiry_notification.go +++ b/go-apps/meep-rnis/server/model_expiry_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_expiry_notification__links.go b/go-apps/meep-rnis/server/model_expiry_notification__links.go index 674f85477..c88bb14c3 100644 --- a/go-apps/meep-rnis/server/model_expiry_notification__links.go +++ b/go-apps/meep-rnis/server/model_expiry_notification__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_inline_notification.go b/go-apps/meep-rnis/server/model_inline_notification.go index 55745c279..16d2294af 100644 --- a/go-apps/meep-rnis/server/model_inline_notification.go +++ b/go-apps/meep-rnis/server/model_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_inline_subscription.go b/go-apps/meep-rnis/server/model_inline_subscription.go index 90e94943e..c2e645813 100644 --- a/go-apps/meep-rnis/server/model_inline_subscription.go +++ b/go-apps/meep-rnis/server/model_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_l2_meas.go b/go-apps/meep-rnis/server/model_l2_meas.go index f33819d5c..4250bdd70 100644 --- a/go-apps/meep-rnis/server/model_l2_meas.go +++ b/go-apps/meep-rnis/server/model_l2_meas.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_l2_meas_cell_info.go b/go-apps/meep-rnis/server/model_l2_meas_cell_info.go index 625480aec..8a6a4f75c 100644 --- a/go-apps/meep-rnis/server/model_l2_meas_cell_info.go +++ b/go-apps/meep-rnis/server/model_l2_meas_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go b/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go index 12a6e6aaa..3ae37c9c4 100644 --- a/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go +++ b/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_link_type.go b/go-apps/meep-rnis/server/model_link_type.go index c97ab1da8..e793606e3 100644 --- a/go-apps/meep-rnis/server/model_link_type.go +++ b/go-apps/meep-rnis/server/model_link_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go b/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go index 0a9cb8974..b2b5caa60 100644 --- a/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go +++ b/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go index 6434070a0..a828aa8f7 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go index 6948de1e8..75b6a77ac 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go index 7cba347ef..1aa6254ad 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go index 379528433..0e6de968c 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go index f87d444c5..ca7e36fd9 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go index 5d8d3ffb4..2a8b66e41 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go index fa201d012..24b83d759 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go index a7d07d0b9..2c4bf9d17 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go index c283e1ff1..9a56619da 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go index 043e4358b..31ea543a9 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go index f740658bf..72e671ec2 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go index 2473e7dc5..316c44f38 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_ta_notification.go b/go-apps/meep-rnis/server/model_meas_ta_notification.go index 8a92a226f..acaf5051b 100644 --- a/go-apps/meep-rnis/server/model_meas_ta_notification.go +++ b/go-apps/meep-rnis/server/model_meas_ta_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_ta_subscription.go b/go-apps/meep-rnis/server/model_meas_ta_subscription.go index d708b58ac..eaa33fed3 100644 --- a/go-apps/meep-rnis/server/model_meas_ta_subscription.go +++ b/go-apps/meep-rnis/server/model_meas_ta_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_n_rcgi.go b/go-apps/meep-rnis/server/model_n_rcgi.go index 823276e41..9b75fbcfc 100644 --- a/go-apps/meep-rnis/server/model_n_rcgi.go +++ b/go-apps/meep-rnis/server/model_n_rcgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go index 45b4e4dd6..f62139c45 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go index e132c535c..b1ebd23eb 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go index 3400ef70a..0795f64d0 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go index e1b954c3b..7a7129ae3 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go index dca62624b..88c58cdff 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go index 5c02de309..d70e2af63 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go index cdccbdfd8..e55937b8a 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go index b4dc842b9..e0a6b0dc1 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_plmn.go b/go-apps/meep-rnis/server/model_plmn.go index fa53b5b5d..2d7f71fce 100644 --- a/go-apps/meep-rnis/server/model_plmn.go +++ b/go-apps/meep-rnis/server/model_plmn.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_plmn_info.go b/go-apps/meep-rnis/server/model_plmn_info.go index d7448fdcf..54e06c349 100644 --- a/go-apps/meep-rnis/server/model_plmn_info.go +++ b/go-apps/meep-rnis/server/model_plmn_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_problem_details.go b/go-apps/meep-rnis/server/model_problem_details.go index 04f1563c3..d5dd4fdcc 100644 --- a/go-apps/meep-rnis/server/model_problem_details.go +++ b/go-apps/meep-rnis/server/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification.go b/go-apps/meep-rnis/server/model_rab_est_notification.go index c90dd385d..594532b93 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go index 33f8e6d26..da8d89e5e 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go index 00cf645d3..8fb2a2596 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go b/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go index 24a56f59b..af13633dc 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_subscription.go b/go-apps/meep-rnis/server/model_rab_est_subscription.go index b9cee6a10..4215cf739 100644 --- a/go-apps/meep-rnis/server/model_rab_est_subscription.go +++ b/go-apps/meep-rnis/server/model_rab_est_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go b/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go index 2b493b29a..201f6af6b 100644 --- a/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go +++ b/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info.go b/go-apps/meep-rnis/server/model_rab_info.go index 6106afdef..7ceeaea2e 100644 --- a/go-apps/meep-rnis/server/model_rab_info.go +++ b/go-apps/meep-rnis/server/model_rab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go b/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go index fe529542e..3dd1009ba 100644 --- a/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go +++ b/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info_erab_info.go b/go-apps/meep-rnis/server/model_rab_info_erab_info.go index 7cd65f9fe..d415f8d7c 100644 --- a/go-apps/meep-rnis/server/model_rab_info_erab_info.go +++ b/go-apps/meep-rnis/server/model_rab_info_erab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info_ue_info.go b/go-apps/meep-rnis/server/model_rab_info_ue_info.go index 7521dd69c..087a4a686 100644 --- a/go-apps/meep-rnis/server/model_rab_info_ue_info.go +++ b/go-apps/meep-rnis/server/model_rab_info_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_notification.go b/go-apps/meep-rnis/server/model_rab_mod_notification.go index e0f189091..e5dcd0244 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_notification.go +++ b/go-apps/meep-rnis/server/model_rab_mod_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go index 1ab25254c..5fb83ad1b 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go +++ b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go index cc014e5e3..077f56e6f 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go +++ b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_subscription.go b/go-apps/meep-rnis/server/model_rab_mod_subscription.go index 273af55d3..1c86f707b 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_subscription.go +++ b/go-apps/meep-rnis/server/model_rab_mod_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go b/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go index f501b2006..73359d7b2 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go +++ b/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_rel_notification.go b/go-apps/meep-rnis/server/model_rab_rel_notification.go index 67d1a64ae..81d01fc2f 100644 --- a/go-apps/meep-rnis/server/model_rab_rel_notification.go +++ b/go-apps/meep-rnis/server/model_rab_rel_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go b/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go index 90f666db0..cbe8c7eea 100644 --- a/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go +++ b/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_rel_subscription.go b/go-apps/meep-rnis/server/model_rab_rel_subscription.go index 0246525d9..96682403e 100644 --- a/go-apps/meep-rnis/server/model_rab_rel_subscription.go +++ b/go-apps/meep-rnis/server/model_rab_rel_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go b/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go index 2eef89253..5e68cdc46 100644 --- a/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go +++ b/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go index b3adad654..8239c66dd 100644 --- a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go +++ b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go index c00db0cfe..1e3d68ea7 100644 --- a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go +++ b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_ssb_index.go b/go-apps/meep-rnis/server/model_results_per_ssb_index.go index bf833e8f2..7dc459809 100644 --- a/go-apps/meep-rnis/server/model_results_per_ssb_index.go +++ b/go-apps/meep-rnis/server/model_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go b/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go index 1ab191347..c2163e95b 100644 --- a/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go +++ b/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go b/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go index d93435086..eec945652 100644 --- a/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go +++ b/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rs_index_results.go b/go-apps/meep-rnis/server/model_rs_index_results.go index 6dbc26d23..6acc163c3 100644 --- a/go-apps/meep-rnis/server/model_rs_index_results.go +++ b/go-apps/meep-rnis/server/model_rs_index_results.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info.go index 35a4683f8..ad0084f3f 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go index 66b0c4f6b..8142074cc 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go index aaa59a0ea..0e7fd3d95 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go index 4ca437bde..4b88f3ccf 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go index 377aff75d..fd55a4d63 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_notification.go b/go-apps/meep-rnis/server/model_s1_bearer_notification.go index 36398fd47..f5531227f 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_notification.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go b/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go index 458c10c44..bfd4a9852 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_subscription.go b/go-apps/meep-rnis/server/model_s1_bearer_subscription.go index d6b87d478..09434e86f 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_subscription.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go b/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go index 9508f946a..4396462ae 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_subscription_link_list.go b/go-apps/meep-rnis/server/model_subscription_link_list.go index eaa37d748..c92603ba6 100644 --- a/go-apps/meep-rnis/server/model_subscription_link_list.go +++ b/go-apps/meep-rnis/server/model_subscription_link_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_subscription_link_list__links.go b/go-apps/meep-rnis/server/model_subscription_link_list__links.go index 8535a00cc..8da288df5 100644 --- a/go-apps/meep-rnis/server/model_subscription_link_list__links.go +++ b/go-apps/meep-rnis/server/model_subscription_link_list__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go b/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go index dc3828d1c..1a1aa199e 100644 --- a/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go +++ b/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_time_stamp.go b/go-apps/meep-rnis/server/model_time_stamp.go index 9d1dd6587..40d850f32 100644 --- a/go-apps/meep-rnis/server/model_time_stamp.go +++ b/go-apps/meep-rnis/server/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-sandbox-ctrl/api/swagger.yaml b/go-apps/meep-sandbox-ctrl/api/swagger.yaml index 353327e64..dd047def7 100644 --- a/go-apps/meep-sandbox-ctrl/api/swagger.yaml +++ b/go-apps/meep-sandbox-ctrl/api/swagger.yaml @@ -14,7 +14,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/sandbox-ctrl/v1" +basePath: "/sandboxname/sandbox-ctrl/v1" tags: - name: "Active Scenario" - name: "Events" diff --git a/go-apps/meep-sandbox-ctrl/entrypoint.sh b/go-apps/meep-sandbox-ctrl/entrypoint.sh index 8f5289db8..a8ad5e5f5 100644 --- a/go-apps/meep-sandbox-ctrl/entrypoint.sh +++ b/go-apps/meep-sandbox-ctrl/entrypoint.sh @@ -10,15 +10,16 @@ echo "USER_SWAGGER_SANDBOX: ${USER_SWAGGER_SANDBOX}" # OAS2: Set relative path to sandbox name + endpoint path (origin will be derived from browser URL) # OAS3: Set full path to provided Host URL + sandbox name + endpoint path setBasepath() { - # OAS2 - echo "Prepending [${MEEP_SANDBOX_NAME}] to basepath in: $1" - sed -i 's,basePath: \"/\?,basePath: \"/'${MEEP_SANDBOX_NAME}'/,' $1; - # OAS3 hostName=$(echo "${MEEP_HOST_URL}" | sed -E 's/^\s*.*:\/\///g') - newHostName=${hostName}/${MEEP_SANDBOX_NAME} - echo "Replacing [localhost] with ${newHostName} to url in: $1" - sed -i "s,localhost,${newHostName},g" $1; + #newHostName=${hostName}/${MEEP_SANDBOX_NAME} + echo "Replacing [localhost] with ${hostName} to url in: $1" + sed -i "s,localhost,${hostName},g" $1; + + # OAS2 and OAS3 + echo "Replacing [sandboxname] with ${MEEP_SANDBOX_NAME} to basepath or url in: $1" + #sed -i 's,basePath: \"/\?,basePath: \"/'${MEEP_SANDBOX_NAME}'/,' $1; + sed -i "s,sandboxname,${MEEP_SANDBOX_NAME},g" $1; } # Set baspath for AdvantEDGE Swagger API files diff --git a/go-apps/meep-sandbox-ctrl/server/README.md b/go-apps/meep-sandbox-ctrl/server/README.md index 7f43c90ec..dc6957d59 100644 --- a/go-apps/meep-sandbox-ctrl/server/README.md +++ b/go-apps/meep-sandbox-ctrl/server/README.md @@ -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-11-13T09:24:24.230-05:00 +- Build date: 2021-01-14T11:45:48.426-05:00 ### Running the server diff --git a/go-apps/meep-wais/api/swagger.yaml b/go-apps/meep-wais/api/swagger.yaml index 2cad3a075..069cdaac9 100644 --- a/go-apps/meep-wais/api/swagger.yaml +++ b/go-apps/meep-wais/api/swagger.yaml @@ -10,7 +10,10 @@ info:

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network -

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_" +

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +

    AdvantEDGE supports a selected subset of WAI API subscription types. +

    Supported subscriptions: +

    - AssocStaSubscription" license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" @@ -18,7 +21,7 @@ externalDocs: description: ETSI MEC028 V2.1.1 WLAN Information API url: 'http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_mec028v020101p.pdf' servers: - - url: 'https://localhost/wai/v2' + - url: 'https://localhost/sandboxname/wai/v2' tags: - name: "wai" paths: diff --git a/go-apps/meep-wais/server/README.md b/go-apps/meep-wais/server/README.md index b4a52d9aa..dafd005cd 100644 --- a/go-apps/meep-wais/server/README.md +++ b/go-apps/meep-wais/server/README.md @@ -1,6 +1,6 @@ # Go API Server for server -WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription ## Overview This server was generated by the [swagger-codegen] @@ -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: 2.1.1 -- Build date: 2020-11-16T10:03:15.079-05:00[America/New_York] +- Build date: 2021-01-14T11:46:17.024-05:00[America/New_York] ### Running the server diff --git a/go-apps/meep-wais/server/model_ap_associated.go b/go-apps/meep-wais/server/model_ap_associated.go index 02a2ce760..0ee6200f9 100644 --- a/go-apps/meep-wais/server/model_ap_associated.go +++ b/go-apps/meep-wais/server/model_ap_associated.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_ap_identity.go b/go-apps/meep-wais/server/model_ap_identity.go index 7991b03a6..212dcc74f 100644 --- a/go-apps/meep-wais/server/model_ap_identity.go +++ b/go-apps/meep-wais/server/model_ap_identity.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_ap_info.go b/go-apps/meep-wais/server/model_ap_info.go index a1523cb14..4ff5b1c1b 100644 --- a/go-apps/meep-wais/server/model_ap_info.go +++ b/go-apps/meep-wais/server/model_ap_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_ap_location.go b/go-apps/meep-wais/server/model_ap_location.go index e4fc0a68f..2fa5bb956 100644 --- a/go-apps/meep-wais/server/model_ap_location.go +++ b/go-apps/meep-wais/server/model_ap_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_assoc_sta_notification.go b/go-apps/meep-wais/server/model_assoc_sta_notification.go index b2d7267f3..e733cf0fb 100644 --- a/go-apps/meep-wais/server/model_assoc_sta_notification.go +++ b/go-apps/meep-wais/server/model_assoc_sta_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_assoc_sta_subscription.go b/go-apps/meep-wais/server/model_assoc_sta_subscription.go index f5d6842ef..521572c58 100644 --- a/go-apps/meep-wais/server/model_assoc_sta_subscription.go +++ b/go-apps/meep-wais/server/model_assoc_sta_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_assoc_sta_subscription__links.go b/go-apps/meep-wais/server/model_assoc_sta_subscription__links.go index 6894632e9..b7dd64a48 100644 --- a/go-apps/meep-wais/server/model_assoc_sta_subscription__links.go +++ b/go-apps/meep-wais/server/model_assoc_sta_subscription__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_associated_stations.go b/go-apps/meep-wais/server/model_associated_stations.go index 178b3f0be..f98eb38cb 100644 --- a/go-apps/meep-wais/server/model_associated_stations.go +++ b/go-apps/meep-wais/server/model_associated_stations.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_beacon_report.go b/go-apps/meep-wais/server/model_beacon_report.go index dba369b43..e3099c5e1 100644 --- a/go-apps/meep-wais/server/model_beacon_report.go +++ b/go-apps/meep-wais/server/model_beacon_report.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_beacon_request_config.go b/go-apps/meep-wais/server/model_beacon_request_config.go index 4574bd3c3..c9a3b3018 100644 --- a/go-apps/meep-wais/server/model_beacon_request_config.go +++ b/go-apps/meep-wais/server/model_beacon_request_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_bss_load.go b/go-apps/meep-wais/server/model_bss_load.go index 0a61aecb0..02164b392 100644 --- a/go-apps/meep-wais/server/model_bss_load.go +++ b/go-apps/meep-wais/server/model_bss_load.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_channel_load_config.go b/go-apps/meep-wais/server/model_channel_load_config.go index c4f5f9add..af37f8b97 100644 --- a/go-apps/meep-wais/server/model_channel_load_config.go +++ b/go-apps/meep-wais/server/model_channel_load_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_civic_location.go b/go-apps/meep-wais/server/model_civic_location.go index 98b7bb62a..cbccdbb6d 100644 --- a/go-apps/meep-wais/server/model_civic_location.go +++ b/go-apps/meep-wais/server/model_civic_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_dmg_capabilities.go b/go-apps/meep-wais/server/model_dmg_capabilities.go index cff030c96..a209b83fa 100644 --- a/go-apps/meep-wais/server/model_dmg_capabilities.go +++ b/go-apps/meep-wais/server/model_dmg_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_edmg_capabilities.go b/go-apps/meep-wais/server/model_edmg_capabilities.go index 47ada2ff7..72ecb0ca0 100644 --- a/go-apps/meep-wais/server/model_edmg_capabilities.go +++ b/go-apps/meep-wais/server/model_edmg_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_ext_bss_load.go b/go-apps/meep-wais/server/model_ext_bss_load.go index 5292725aa..3807fac95 100644 --- a/go-apps/meep-wais/server/model_ext_bss_load.go +++ b/go-apps/meep-wais/server/model_ext_bss_load.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_geo_location.go b/go-apps/meep-wais/server/model_geo_location.go index fa1ca106f..b3bf76b34 100644 --- a/go-apps/meep-wais/server/model_geo_location.go +++ b/go-apps/meep-wais/server/model_geo_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_he_capabilities.go b/go-apps/meep-wais/server/model_he_capabilities.go index 4859fa6f7..971516515 100644 --- a/go-apps/meep-wais/server/model_he_capabilities.go +++ b/go-apps/meep-wais/server/model_he_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_ht_capabilities.go b/go-apps/meep-wais/server/model_ht_capabilities.go index a88e9d372..097e08007 100644 --- a/go-apps/meep-wais/server/model_ht_capabilities.go +++ b/go-apps/meep-wais/server/model_ht_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_inline_notification.go b/go-apps/meep-wais/server/model_inline_notification.go index 8f08d6f69..5de166678 100644 --- a/go-apps/meep-wais/server/model_inline_notification.go +++ b/go-apps/meep-wais/server/model_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_inline_subscription.go b/go-apps/meep-wais/server/model_inline_subscription.go index 7ed42b611..6edcc1d40 100644 --- a/go-apps/meep-wais/server/model_inline_subscription.go +++ b/go-apps/meep-wais/server/model_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_link_type.go b/go-apps/meep-wais/server/model_link_type.go index 6fd193630..3482a2711 100644 --- a/go-apps/meep-wais/server/model_link_type.go +++ b/go-apps/meep-wais/server/model_link_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_measurement_config.go b/go-apps/meep-wais/server/model_measurement_config.go index ec43b3ec5..6402b0a7e 100644 --- a/go-apps/meep-wais/server/model_measurement_config.go +++ b/go-apps/meep-wais/server/model_measurement_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_neighbor_report.go b/go-apps/meep-wais/server/model_neighbor_report.go index 276030415..232cc3d26 100644 --- a/go-apps/meep-wais/server/model_neighbor_report.go +++ b/go-apps/meep-wais/server/model_neighbor_report.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_problem_details.go b/go-apps/meep-wais/server/model_problem_details.go index 28ff435f3..0393e8af3 100644 --- a/go-apps/meep-wais/server/model_problem_details.go +++ b/go-apps/meep-wais/server/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_rssi.go b/go-apps/meep-wais/server/model_rssi.go index 58bfbb830..7c5400b2f 100644 --- a/go-apps/meep-wais/server/model_rssi.go +++ b/go-apps/meep-wais/server/model_rssi.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_data_rate.go b/go-apps/meep-wais/server/model_sta_data_rate.go index 4634e7fae..e585d84e2 100644 --- a/go-apps/meep-wais/server/model_sta_data_rate.go +++ b/go-apps/meep-wais/server/model_sta_data_rate.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_data_rate_notification.go b/go-apps/meep-wais/server/model_sta_data_rate_notification.go index 4cccf8dcf..a52496a09 100644 --- a/go-apps/meep-wais/server/model_sta_data_rate_notification.go +++ b/go-apps/meep-wais/server/model_sta_data_rate_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_data_rate_subscription.go b/go-apps/meep-wais/server/model_sta_data_rate_subscription.go index 61c5788f4..6c6eb8892 100644 --- a/go-apps/meep-wais/server/model_sta_data_rate_subscription.go +++ b/go-apps/meep-wais/server/model_sta_data_rate_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_identity.go b/go-apps/meep-wais/server/model_sta_identity.go index de733e9e2..0d8d474a1 100644 --- a/go-apps/meep-wais/server/model_sta_identity.go +++ b/go-apps/meep-wais/server/model_sta_identity.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_info.go b/go-apps/meep-wais/server/model_sta_info.go index eb4100ad3..7a17a7f86 100644 --- a/go-apps/meep-wais/server/model_sta_info.go +++ b/go-apps/meep-wais/server/model_sta_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_statistics.go b/go-apps/meep-wais/server/model_sta_statistics.go index fa998f23d..731c11ae1 100644 --- a/go-apps/meep-wais/server/model_sta_statistics.go +++ b/go-apps/meep-wais/server/model_sta_statistics.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_sta_statistics_config.go b/go-apps/meep-wais/server/model_sta_statistics_config.go index b0adbe311..dcbfaa099 100644 --- a/go-apps/meep-wais/server/model_sta_statistics_config.go +++ b/go-apps/meep-wais/server/model_sta_statistics_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_statistics_group_data.go b/go-apps/meep-wais/server/model_statistics_group_data.go index 3731fedf6..53e795d61 100644 --- a/go-apps/meep-wais/server/model_statistics_group_data.go +++ b/go-apps/meep-wais/server/model_statistics_group_data.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_subscription_link_list.go b/go-apps/meep-wais/server/model_subscription_link_list.go index 91f4ca182..eed18c7f6 100644 --- a/go-apps/meep-wais/server/model_subscription_link_list.go +++ b/go-apps/meep-wais/server/model_subscription_link_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_subscription_link_list__links.go b/go-apps/meep-wais/server/model_subscription_link_list__links.go index dc9b204a8..5caea87b6 100644 --- a/go-apps/meep-wais/server/model_subscription_link_list__links.go +++ b/go-apps/meep-wais/server/model_subscription_link_list__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_time_stamp.go b/go-apps/meep-wais/server/model_time_stamp.go index e8ce8ba4b..7e328b3a4 100644 --- a/go-apps/meep-wais/server/model_time_stamp.go +++ b/go-apps/meep-wais/server/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_vht_capabilities.go b/go-apps/meep-wais/server/model_vht_capabilities.go index 4c3fd8304..de55428d2 100644 --- a/go-apps/meep-wais/server/model_vht_capabilities.go +++ b/go-apps/meep-wais/server/model_vht_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_wan_metrics.go b/go-apps/meep-wais/server/model_wan_metrics.go index 0979473ed..d4419218f 100644 --- a/go-apps/meep-wais/server/model_wan_metrics.go +++ b/go-apps/meep-wais/server/model_wan_metrics.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_wlan_capabilities.go b/go-apps/meep-wais/server/model_wlan_capabilities.go index 257097e21..2ad3b99e9 100644 --- a/go-apps/meep-wais/server/model_wlan_capabilities.go +++ b/go-apps/meep-wais/server/model_wlan_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-gis-engine-client/README.md b/go-packages/meep-gis-engine-client/README.md index a98dd7dfd..b7ed07bed 100644 --- a/go-packages/meep-gis-engine-client/README.md +++ b/go-packages/meep-gis-engine-client/README.md @@ -17,7 +17,7 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/gis/v1* +All URIs are relative to *https://localhost/sandboxname/gis/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/go-packages/meep-gis-engine-client/api/swagger.yaml b/go-packages/meep-gis-engine-client/api/swagger.yaml index 67c9e7b76..10c6f1867 100644 --- a/go-packages/meep-gis-engine-client/api/swagger.yaml +++ b/go-packages/meep-gis-engine-client/api/swagger.yaml @@ -12,7 +12,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/gis/v1" +basePath: "/sandboxname/gis/v1" tags: - name: "Automation" - name: "Geospatial Data" diff --git a/go-packages/meep-gis-engine-client/configuration.go b/go-packages/meep-gis-engine-client/configuration.go index dd528e11a..758da5d92 100644 --- a/go-packages/meep-gis-engine-client/configuration.go +++ b/go-packages/meep-gis-engine-client/configuration.go @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/gis/v1", + BasePath: "https://localhost/sandboxname/gis/v1", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-gis-engine-client/docs/AutomationApi.md b/go-packages/meep-gis-engine-client/docs/AutomationApi.md index a62a24b01..391415425 100644 --- a/go-packages/meep-gis-engine-client/docs/AutomationApi.md +++ b/go-packages/meep-gis-engine-client/docs/AutomationApi.md @@ -1,6 +1,6 @@ # \AutomationApi -All URIs are relative to *https://localhost/gis/v1* +All URIs are relative to *https://localhost/sandboxname/gis/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md b/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md index 83f8057a7..4c51eaf03 100644 --- a/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md +++ b/go-packages/meep-gis-engine-client/docs/GeospatialDataApi.md @@ -1,6 +1,6 @@ # \GeospatialDataApi -All URIs are relative to *https://localhost/gis/v1* +All URIs are relative to *https://localhost/sandboxname/gis/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-loc-serv-client/README.md b/go-packages/meep-loc-serv-client/README.md index 3b8b08b5c..fd4af556a 100644 --- a/go-packages/meep-loc-serv-client/README.md +++ b/go-packages/meep-loc-serv-client/README.md @@ -1,6 +1,6 @@ # Go API client for client -Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) ## Overview This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. @@ -17,28 +17,12 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/location/v2* +All URIs are relative to *https://localhost/sandboxname/location/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- *LocationApi* | [**ApByIdGET**](docs/LocationApi.md#apbyidget) | **Get** /queries/zones/{zoneId}/accessPoints/{accessPointId} | Radio Node Location Lookup *LocationApi* | [**ApGET**](docs/LocationApi.md#apget) | **Get** /queries/zones/{zoneId}/accessPoints | Radio Node Location Lookup -*LocationApi* | [**AreaCircleSubDELETE**](docs/LocationApi.md#areacirclesubdelete) | **Delete** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription -*LocationApi* | [**AreaCircleSubGET**](docs/LocationApi.md#areacirclesubget) | **Get** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information -*LocationApi* | [**AreaCircleSubListGET**](docs/LocationApi.md#areacirclesublistget) | **Get** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications -*LocationApi* | [**AreaCircleSubPOST**](docs/LocationApi.md#areacirclesubpost) | **Post** /subscriptions/area/circle | Creates a subscription for area change notification -*LocationApi* | [**AreaCircleSubPUT**](docs/LocationApi.md#areacirclesubput) | **Put** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information -*LocationApi* | [**DistanceGET**](docs/LocationApi.md#distanceget) | **Get** /queries/distance | UE Distance Lookup of a specific UE -*LocationApi* | [**DistanceSubDELETE**](docs/LocationApi.md#distancesubdelete) | **Delete** /subscriptions/distance/{subscriptionId} | Cancel a subscription -*LocationApi* | [**DistanceSubGET**](docs/LocationApi.md#distancesubget) | **Get** /subscriptions/distance/{subscriptionId} | Retrieve subscription information -*LocationApi* | [**DistanceSubListGET**](docs/LocationApi.md#distancesublistget) | **Get** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications -*LocationApi* | [**DistanceSubPOST**](docs/LocationApi.md#distancesubpost) | **Post** /subscriptions/distance | Creates a subscription for distance change notification -*LocationApi* | [**DistanceSubPUT**](docs/LocationApi.md#distancesubput) | **Put** /subscriptions/distance/{subscriptionId} | Updates a subscription information -*LocationApi* | [**PeriodicSubDELETE**](docs/LocationApi.md#periodicsubdelete) | **Delete** /subscriptions/periodic/{subscriptionId} | Cancel a subscription -*LocationApi* | [**PeriodicSubGET**](docs/LocationApi.md#periodicsubget) | **Get** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information -*LocationApi* | [**PeriodicSubListGET**](docs/LocationApi.md#periodicsublistget) | **Get** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications -*LocationApi* | [**PeriodicSubPOST**](docs/LocationApi.md#periodicsubpost) | **Post** /subscriptions/periodic | Creates a subscription for periodic notification -*LocationApi* | [**PeriodicSubPUT**](docs/LocationApi.md#periodicsubput) | **Put** /subscriptions/periodic/{subscriptionId} | Updates a subscription information *LocationApi* | [**UserTrackingSubDELETE**](docs/LocationApi.md#usertrackingsubdelete) | **Delete** /subscriptions/userTracking/{subscriptionId} | Cancel a subscription *LocationApi* | [**UserTrackingSubGET**](docs/LocationApi.md#usertrackingsubget) | **Get** /subscriptions/userTracking/{subscriptionId} | Retrieve subscription information *LocationApi* | [**UserTrackingSubListGET**](docs/LocationApi.md#usertrackingsublistget) | **Get** /subscriptions/userTracking | Retrieves all active subscriptions to user tracking notifications @@ -57,6 +41,22 @@ Class | Method | HTTP request | Description *LocationApi* | [**ZoneStatusSubPUT**](docs/LocationApi.md#zonestatussubput) | **Put** /subscriptions/zoneStatus/{subscriptionId} | Updates a subscription information *LocationApi* | [**ZonesGET**](docs/LocationApi.md#zonesget) | **Get** /queries/zones | Zones information Lookup *LocationApi* | [**ZonesGetById**](docs/LocationApi.md#zonesgetbyid) | **Get** /queries/zones/{zoneId} | Zones information Lookup +*UnsupportedApi* | [**AreaCircleSubDELETE**](docs/UnsupportedApi.md#areacirclesubdelete) | **Delete** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription +*UnsupportedApi* | [**AreaCircleSubGET**](docs/UnsupportedApi.md#areacirclesubget) | **Get** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information +*UnsupportedApi* | [**AreaCircleSubListGET**](docs/UnsupportedApi.md#areacirclesublistget) | **Get** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications +*UnsupportedApi* | [**AreaCircleSubPOST**](docs/UnsupportedApi.md#areacirclesubpost) | **Post** /subscriptions/area/circle | Creates a subscription for area change notification +*UnsupportedApi* | [**AreaCircleSubPUT**](docs/UnsupportedApi.md#areacirclesubput) | **Put** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information +*UnsupportedApi* | [**DistanceGET**](docs/UnsupportedApi.md#distanceget) | **Get** /queries/distance | UE Distance Lookup of a specific UE +*UnsupportedApi* | [**DistanceSubDELETE**](docs/UnsupportedApi.md#distancesubdelete) | **Delete** /subscriptions/distance/{subscriptionId} | Cancel a subscription +*UnsupportedApi* | [**DistanceSubGET**](docs/UnsupportedApi.md#distancesubget) | **Get** /subscriptions/distance/{subscriptionId} | Retrieve subscription information +*UnsupportedApi* | [**DistanceSubListGET**](docs/UnsupportedApi.md#distancesublistget) | **Get** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications +*UnsupportedApi* | [**DistanceSubPOST**](docs/UnsupportedApi.md#distancesubpost) | **Post** /subscriptions/distance | Creates a subscription for distance change notification +*UnsupportedApi* | [**DistanceSubPUT**](docs/UnsupportedApi.md#distancesubput) | **Put** /subscriptions/distance/{subscriptionId} | Updates a subscription information +*UnsupportedApi* | [**PeriodicSubDELETE**](docs/UnsupportedApi.md#periodicsubdelete) | **Delete** /subscriptions/periodic/{subscriptionId} | Cancel a subscription +*UnsupportedApi* | [**PeriodicSubGET**](docs/UnsupportedApi.md#periodicsubget) | **Get** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information +*UnsupportedApi* | [**PeriodicSubListGET**](docs/UnsupportedApi.md#periodicsublistget) | **Get** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications +*UnsupportedApi* | [**PeriodicSubPOST**](docs/UnsupportedApi.md#periodicsubpost) | **Post** /subscriptions/periodic | Creates a subscription for periodic notification +*UnsupportedApi* | [**PeriodicSubPUT**](docs/UnsupportedApi.md#periodicsubput) | **Put** /subscriptions/periodic/{subscriptionId} | Updates a subscription information ## Documentation For Models diff --git a/go-packages/meep-loc-serv-client/api/swagger.yaml b/go-packages/meep-loc-serv-client/api/swagger.yaml index ad9b707ea..d4a1fb0e1 100644 --- a/go-packages/meep-loc-serv-client/api/swagger.yaml +++ b/go-packages/meep-loc-serv-client/api/swagger.yaml @@ -8,7 +8,8 @@ info:

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details - available at _your-AdvantEDGE-ip-address/api_ + available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected + subset of Location API endpoints (see below) contact: name: InterDigital AdvantEDGE Support email: AdvantEDGE@InterDigital.com @@ -20,14 +21,15 @@ externalDocs: description: ETSI MEC013 V2.1.1 Location Service API url: http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf servers: -- url: https://localhost/location/v2 +- url: https://localhost/sandboxname/location/v2 tags: - name: location +- name: unsupported paths: /queries/distance: get: tags: - - location + - unsupported summary: UE Distance Lookup of a specific UE description: UE Distance Lookup between terminals or a terminal and a location operationId: distanceGET @@ -485,7 +487,7 @@ paths: /subscriptions/area/circle: get: tags: - - location + - unsupported summary: Retrieves all active subscriptions to area change notifications description: This operation is used for retrieving all active subscriptions to area change notifications. @@ -516,7 +518,7 @@ paths: resourceURL: http://meAppServer.example.com/location/v2/subscriptions/area/circle post: tags: - - location + - unsupported summary: Creates a subscription for area change notification description: Creates a subscription to the Location Service for an area change notification. @@ -644,7 +646,7 @@ paths: /subscriptions/area/circle/{subscriptionId}: get: tags: - - location + - unsupported summary: Retrieve subscription information description: Get subscription information. operationId: areaCircleSubGET @@ -725,7 +727,7 @@ paths: x-swagger-router-controller: subscriptions put: tags: - - location + - unsupported summary: Updates a subscription information description: Updates a subscription. operationId: areaCircleSubPUT @@ -856,7 +858,7 @@ paths: x-swagger-router-controller: subscriptions delete: tags: - - location + - unsupported summary: Cancel a subscription description: Method to delete a subscription. operationId: areaCircleSubDELETE @@ -905,7 +907,7 @@ paths: /subscriptions/distance: get: tags: - - location + - unsupported summary: Retrieves all active subscriptions to distance change notifications description: This operation is used for retrieving all active subscriptions to a distance change notifications. @@ -937,7 +939,7 @@ paths: resourceURL: http://meAppServer.example.com/location/v2/subscriptions/distance post: tags: - - location + - unsupported summary: Creates a subscription for distance change notification description: Creates a subscription to the Location Service for a distance change notification. @@ -1077,7 +1079,7 @@ paths: /subscriptions/distance/{subscriptionId}: get: tags: - - location + - unsupported summary: Retrieve subscription information description: Get subscription information. operationId: distanceSubGET @@ -1159,7 +1161,7 @@ paths: x-swagger-router-controller: subscriptions put: tags: - - location + - unsupported summary: Updates a subscription information description: Updates a subscription. operationId: distanceSubPUT @@ -1292,7 +1294,7 @@ paths: x-swagger-router-controller: subscriptions delete: tags: - - location + - unsupported summary: Cancel a subscription description: Method to delete a subscription. operationId: distanceSubDELETE @@ -1341,7 +1343,7 @@ paths: /subscriptions/periodic: get: tags: - - location + - unsupported summary: Retrieves all active subscriptions to periodic notifications description: This operation is used for retrieving all active subscriptions to periodic notifications. @@ -1367,7 +1369,7 @@ paths: resourceURL: http://meAppServer.example.com/location/v2/subscriptions/periodic post: tags: - - location + - unsupported summary: Creates a subscription for periodic notification description: Creates a subscription to the Location Service for a periodic notification. operationId: periodicSubPOST @@ -1483,7 +1485,7 @@ paths: /subscriptions/periodic/{subscriptionId}: get: tags: - - location + - unsupported summary: Retrieve subscription information description: Get subscription information. operationId: periodicSubGET @@ -1559,7 +1561,7 @@ paths: x-swagger-router-controller: subscriptions put: tags: - - location + - unsupported summary: Updates a subscription information description: Updates a subscription. operationId: periodicSubPUT @@ -1680,7 +1682,7 @@ paths: x-swagger-router-controller: subscriptions delete: tags: - - location + - unsupported summary: Cancel a subscription description: Method to delete a subscription. operationId: periodicSubDELETE diff --git a/go-packages/meep-loc-serv-client/api_location.go b/go-packages/meep-loc-serv-client/api_location.go index cbe03d6a5..011e63b4a 100644 --- a/go-packages/meep-loc-serv-client/api_location.go +++ b/go-packages/meep-loc-serv-client/api_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -371,2254 +371,6 @@ Method to delete a subscription. * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request -*/ -func (a *LocationApiService) AreaCircleSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Delete") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} - -/* -LocationApiService Retrieve subscription information -Get subscription information. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - -@return InlineCircleNotificationSubscription -*/ -func (a *LocationApiService) AreaCircleSubGET(ctx context.Context, subscriptionId string) (InlineCircleNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineCircleNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineCircleNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Retrieves all active subscriptions to area change notifications -This operation is used for retrieving all active subscriptions to area change notifications. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - -@return InlineNotificationSubscriptionList -*/ -func (a *LocationApiService) AreaCircleSubListGET(ctx context.Context) (InlineNotificationSubscriptionList, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineNotificationSubscriptionList - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineNotificationSubscriptionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Creates a subscription for area change notification -Creates a subscription to the Location Service for an area change notification. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param body Subscription to be created - -@return InlineCircleNotificationSubscription -*/ -func (a *LocationApiService) AreaCircleSubPOST(ctx context.Context, body InlineCircleNotificationSubscription) (InlineCircleNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineCircleNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &body - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 201 { - var v InlineCircleNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Updates a subscription information -Updates a subscription. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param body Subscription to be modified - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - -@return InlineCircleNotificationSubscription -*/ -func (a *LocationApiService) AreaCircleSubPUT(ctx context.Context, body InlineCircleNotificationSubscription, subscriptionId string) (InlineCircleNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineCircleNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &body - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineCircleNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 412 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 422 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService UE Distance Lookup of a specific UE -UE Distance Lookup between terminals or a terminal and a location - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param address address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) - * @param optional nil or *DistanceGETOpts - Optional Parameters: - * @param "Requester" (optional.String) - Entity that is requesting the information - * @param "Latitude" (optional.Float32) - Latitude geo position - * @param "Longitude" (optional.Float32) - Longitude geo position - -@return InlineTerminalDistance -*/ - -type DistanceGETOpts struct { - Requester optional.String - Latitude optional.Float32 - Longitude optional.Float32 -} - -func (a *LocationApiService) DistanceGET(ctx context.Context, address []string, localVarOptionals *DistanceGETOpts) (InlineTerminalDistance, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineTerminalDistance - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/queries/distance" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.Requester.IsSet() { - localVarQueryParams.Add("requester", parameterToString(localVarOptionals.Requester.Value(), "")) - } - localVarQueryParams.Add("address", parameterToString(address, "multi")) - if localVarOptionals != nil && localVarOptionals.Latitude.IsSet() { - localVarQueryParams.Add("latitude", parameterToString(localVarOptionals.Latitude.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.Longitude.IsSet() { - localVarQueryParams.Add("longitude", parameterToString(localVarOptionals.Longitude.Value(), "")) - } - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineTerminalDistance - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Cancel a subscription -Method to delete a subscription. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - - -*/ -func (a *LocationApiService) DistanceSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Delete") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/distance/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} - -/* -LocationApiService Retrieve subscription information -Get subscription information. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - -@return InlineDistanceNotificationSubscription -*/ -func (a *LocationApiService) DistanceSubGET(ctx context.Context, subscriptionId string) (InlineDistanceNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineDistanceNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/distance/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineDistanceNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Retrieves all active subscriptions to distance change notifications -This operation is used for retrieving all active subscriptions to a distance change notifications. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - -@return InlineNotificationSubscriptionList -*/ -func (a *LocationApiService) DistanceSubListGET(ctx context.Context) (InlineNotificationSubscriptionList, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineNotificationSubscriptionList - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/distance" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineNotificationSubscriptionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Creates a subscription for distance change notification -Creates a subscription to the Location Service for a distance change notification. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param body Subscription to be created - -@return InlineDistanceNotificationSubscription -*/ -func (a *LocationApiService) DistanceSubPOST(ctx context.Context, body InlineDistanceNotificationSubscription) (InlineDistanceNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineDistanceNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/distance" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &body - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 201 { - var v InlineDistanceNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Updates a subscription information -Updates a subscription. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param body Subscription to be modified - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - -@return InlineDistanceNotificationSubscription -*/ -func (a *LocationApiService) DistanceSubPUT(ctx context.Context, body InlineDistanceNotificationSubscription, subscriptionId string) (InlineDistanceNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineDistanceNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/distance/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &body - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineDistanceNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 412 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 422 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Cancel a subscription -Method to delete a subscription. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - - -*/ -func (a *LocationApiService) PeriodicSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Delete") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarHttpResponse, newErr - } - newErr.model = v - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} - -/* -LocationApiService Retrieve subscription information -Get subscription information. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - -@return InlinePeriodicNotificationSubscription -*/ -func (a *LocationApiService) PeriodicSubGET(ctx context.Context, subscriptionId string) (InlinePeriodicNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlinePeriodicNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlinePeriodicNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Retrieves all active subscriptions to periodic notifications -This operation is used for retrieving all active subscriptions to periodic notifications. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - -@return InlineNotificationSubscriptionList -*/ -func (a *LocationApiService) PeriodicSubListGET(ctx context.Context) (InlineNotificationSubscriptionList, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlineNotificationSubscriptionList - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlineNotificationSubscriptionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Creates a subscription for periodic notification -Creates a subscription to the Location Service for a periodic notification. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param body Subscription to be created - -@return InlinePeriodicNotificationSubscription -*/ -func (a *LocationApiService) PeriodicSubPOST(ctx context.Context, body InlinePeriodicNotificationSubscription) (InlinePeriodicNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlinePeriodicNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &body - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 201 { - var v InlinePeriodicNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Updates a subscription information -Updates a subscription. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param body Subscription to be modified - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - -@return InlinePeriodicNotificationSubscription -*/ -func (a *LocationApiService) PeriodicSubPUT(ctx context.Context, body InlinePeriodicNotificationSubscription, subscriptionId string) (InlinePeriodicNotificationSubscription, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue InlinePeriodicNotificationSubscription - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic/{subscriptionId}" - localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - // body params - localVarPostBody = &body - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v InlinePeriodicNotificationSubscription - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 412 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 422 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -LocationApiService Cancel a subscription -Method to delete a subscription. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request - - */ func (a *LocationApiService) UserTrackingSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { var ( diff --git a/go-packages/meep-loc-serv-client/api_unsupported.go b/go-packages/meep-loc-serv-client/api_unsupported.go new file mode 100644 index 000000000..15eaa5ff1 --- /dev/null +++ b/go-packages/meep-loc-serv-client/api_unsupported.go @@ -0,0 +1,2291 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Location Service REST API + * + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) + * + * API version: 2.1.1 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" + + "github.com/antihax/optional" +) + +// Linger please +var ( + _ context.Context +) + +type UnsupportedApiService service + +/* +UnsupportedApiService Cancel a subscription +Method to delete a subscription. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + + +*/ +func (a *UnsupportedApiService) AreaCircleSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieve subscription information +Get subscription information. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + +@return InlineCircleNotificationSubscription +*/ +func (a *UnsupportedApiService) AreaCircleSubGET(ctx context.Context, subscriptionId string) (InlineCircleNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineCircleNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineCircleNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieves all active subscriptions to area change notifications +This operation is used for retrieving all active subscriptions to area change notifications. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + +@return InlineNotificationSubscriptionList +*/ +func (a *UnsupportedApiService) AreaCircleSubListGET(ctx context.Context) (InlineNotificationSubscriptionList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineNotificationSubscriptionList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineNotificationSubscriptionList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Creates a subscription for area change notification +Creates a subscription to the Location Service for an area change notification. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body Subscription to be created + +@return InlineCircleNotificationSubscription +*/ +func (a *UnsupportedApiService) AreaCircleSubPOST(ctx context.Context, body InlineCircleNotificationSubscription) (InlineCircleNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineCircleNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 201 { + var v InlineCircleNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Updates a subscription information +Updates a subscription. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body Subscription to be modified + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + +@return InlineCircleNotificationSubscription +*/ +func (a *UnsupportedApiService) AreaCircleSubPUT(ctx context.Context, body InlineCircleNotificationSubscription, subscriptionId string) (InlineCircleNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineCircleNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/area/circle/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineCircleNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 412 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 422 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService UE Distance Lookup of a specific UE +UE Distance Lookup between terminals or a terminal and a location + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param address address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) + * @param optional nil or *DistanceGETOpts - Optional Parameters: + * @param "Requester" (optional.String) - Entity that is requesting the information + * @param "Latitude" (optional.Float32) - Latitude geo position + * @param "Longitude" (optional.Float32) - Longitude geo position + +@return InlineTerminalDistance +*/ + +type DistanceGETOpts struct { + Requester optional.String + Latitude optional.Float32 + Longitude optional.Float32 +} + +func (a *UnsupportedApiService) DistanceGET(ctx context.Context, address []string, localVarOptionals *DistanceGETOpts) (InlineTerminalDistance, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineTerminalDistance + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/queries/distance" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.Requester.IsSet() { + localVarQueryParams.Add("requester", parameterToString(localVarOptionals.Requester.Value(), "")) + } + localVarQueryParams.Add("address", parameterToString(address, "multi")) + if localVarOptionals != nil && localVarOptionals.Latitude.IsSet() { + localVarQueryParams.Add("latitude", parameterToString(localVarOptionals.Latitude.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.Longitude.IsSet() { + localVarQueryParams.Add("longitude", parameterToString(localVarOptionals.Longitude.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineTerminalDistance + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Cancel a subscription +Method to delete a subscription. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + + +*/ +func (a *UnsupportedApiService) DistanceSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/distance/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieve subscription information +Get subscription information. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + +@return InlineDistanceNotificationSubscription +*/ +func (a *UnsupportedApiService) DistanceSubGET(ctx context.Context, subscriptionId string) (InlineDistanceNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineDistanceNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/distance/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineDistanceNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieves all active subscriptions to distance change notifications +This operation is used for retrieving all active subscriptions to a distance change notifications. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + +@return InlineNotificationSubscriptionList +*/ +func (a *UnsupportedApiService) DistanceSubListGET(ctx context.Context) (InlineNotificationSubscriptionList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineNotificationSubscriptionList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/distance" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineNotificationSubscriptionList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Creates a subscription for distance change notification +Creates a subscription to the Location Service for a distance change notification. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body Subscription to be created + +@return InlineDistanceNotificationSubscription +*/ +func (a *UnsupportedApiService) DistanceSubPOST(ctx context.Context, body InlineDistanceNotificationSubscription) (InlineDistanceNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineDistanceNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/distance" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 201 { + var v InlineDistanceNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Updates a subscription information +Updates a subscription. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body Subscription to be modified + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + +@return InlineDistanceNotificationSubscription +*/ +func (a *UnsupportedApiService) DistanceSubPUT(ctx context.Context, body InlineDistanceNotificationSubscription, subscriptionId string) (InlineDistanceNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineDistanceNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/distance/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineDistanceNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 412 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 422 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Cancel a subscription +Method to delete a subscription. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + + +*/ +func (a *UnsupportedApiService) PeriodicSubDELETE(ctx context.Context, subscriptionId string) (*http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarHttpResponse, newErr + } + newErr.model = v + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, newErr + } + + return localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieve subscription information +Get subscription information. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + +@return InlinePeriodicNotificationSubscription +*/ +func (a *UnsupportedApiService) PeriodicSubGET(ctx context.Context, subscriptionId string) (InlinePeriodicNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlinePeriodicNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlinePeriodicNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieves all active subscriptions to periodic notifications +This operation is used for retrieving all active subscriptions to periodic notifications. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + +@return InlineNotificationSubscriptionList +*/ +func (a *UnsupportedApiService) PeriodicSubListGET(ctx context.Context) (InlineNotificationSubscriptionList, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlineNotificationSubscriptionList + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlineNotificationSubscriptionList + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Creates a subscription for periodic notification +Creates a subscription to the Location Service for a periodic notification. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body Subscription to be created + +@return InlinePeriodicNotificationSubscription +*/ +func (a *UnsupportedApiService) PeriodicSubPOST(ctx context.Context, body InlinePeriodicNotificationSubscription) (InlinePeriodicNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlinePeriodicNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 201 { + var v InlinePeriodicNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Updates a subscription information +Updates a subscription. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body Subscription to be modified + * @param subscriptionId Subscription Identifier, specifically the \"self\" returned in the subscription request + +@return InlinePeriodicNotificationSubscription +*/ +func (a *UnsupportedApiService) PeriodicSubPUT(ctx context.Context, body InlinePeriodicNotificationSubscription, subscriptionId string) (InlinePeriodicNotificationSubscription, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue InlinePeriodicNotificationSubscription + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/subscriptions/periodic/{subscriptionId}" + localVarPath = strings.Replace(localVarPath, "{"+"subscriptionId"+"}", fmt.Sprintf("%v", subscriptionId), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v InlinePeriodicNotificationSubscription + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 412 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 422 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} diff --git a/go-packages/meep-loc-serv-client/client.go b/go-packages/meep-loc-serv-client/client.go index 7cd1d9368..9b29f80fe 100644 --- a/go-packages/meep-loc-serv-client/client.go +++ b/go-packages/meep-loc-serv-client/client.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -61,6 +61,8 @@ type APIClient struct { // API Services LocationApi *LocationApiService + + UnsupportedApi *UnsupportedApiService } type service struct { @@ -80,6 +82,7 @@ func NewAPIClient(cfg *Configuration) *APIClient { // API Services c.LocationApi = (*LocationApiService)(&c.common) + c.UnsupportedApi = (*UnsupportedApiService)(&c.common) return c } diff --git a/go-packages/meep-loc-serv-client/configuration.go b/go-packages/meep-loc-serv-client/configuration.go index 05e66d41c..6eab8ac53 100644 --- a/go-packages/meep-loc-serv-client/configuration.go +++ b/go-packages/meep-loc-serv-client/configuration.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/location/v2", + BasePath: "https://localhost/sandboxname/location/v2", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-loc-serv-client/docs/LocationApi.md b/go-packages/meep-loc-serv-client/docs/LocationApi.md index c59a2e347..f8fa2b589 100644 --- a/go-packages/meep-loc-serv-client/docs/LocationApi.md +++ b/go-packages/meep-loc-serv-client/docs/LocationApi.md @@ -1,27 +1,11 @@ # \LocationApi -All URIs are relative to *https://localhost/location/v2* +All URIs are relative to *https://localhost/sandboxname/location/v2* Method | HTTP request | Description ------------- | ------------- | ------------- [**ApByIdGET**](LocationApi.md#ApByIdGET) | **Get** /queries/zones/{zoneId}/accessPoints/{accessPointId} | Radio Node Location Lookup [**ApGET**](LocationApi.md#ApGET) | **Get** /queries/zones/{zoneId}/accessPoints | Radio Node Location Lookup -[**AreaCircleSubDELETE**](LocationApi.md#AreaCircleSubDELETE) | **Delete** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription -[**AreaCircleSubGET**](LocationApi.md#AreaCircleSubGET) | **Get** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information -[**AreaCircleSubListGET**](LocationApi.md#AreaCircleSubListGET) | **Get** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications -[**AreaCircleSubPOST**](LocationApi.md#AreaCircleSubPOST) | **Post** /subscriptions/area/circle | Creates a subscription for area change notification -[**AreaCircleSubPUT**](LocationApi.md#AreaCircleSubPUT) | **Put** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information -[**DistanceGET**](LocationApi.md#DistanceGET) | **Get** /queries/distance | UE Distance Lookup of a specific UE -[**DistanceSubDELETE**](LocationApi.md#DistanceSubDELETE) | **Delete** /subscriptions/distance/{subscriptionId} | Cancel a subscription -[**DistanceSubGET**](LocationApi.md#DistanceSubGET) | **Get** /subscriptions/distance/{subscriptionId} | Retrieve subscription information -[**DistanceSubListGET**](LocationApi.md#DistanceSubListGET) | **Get** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications -[**DistanceSubPOST**](LocationApi.md#DistanceSubPOST) | **Post** /subscriptions/distance | Creates a subscription for distance change notification -[**DistanceSubPUT**](LocationApi.md#DistanceSubPUT) | **Put** /subscriptions/distance/{subscriptionId} | Updates a subscription information -[**PeriodicSubDELETE**](LocationApi.md#PeriodicSubDELETE) | **Delete** /subscriptions/periodic/{subscriptionId} | Cancel a subscription -[**PeriodicSubGET**](LocationApi.md#PeriodicSubGET) | **Get** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information -[**PeriodicSubListGET**](LocationApi.md#PeriodicSubListGET) | **Get** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications -[**PeriodicSubPOST**](LocationApi.md#PeriodicSubPOST) | **Post** /subscriptions/periodic | Creates a subscription for periodic notification -[**PeriodicSubPUT**](LocationApi.md#PeriodicSubPUT) | **Put** /subscriptions/periodic/{subscriptionId} | Updates a subscription information [**UserTrackingSubDELETE**](LocationApi.md#UserTrackingSubDELETE) | **Delete** /subscriptions/userTracking/{subscriptionId} | Cancel a subscription [**UserTrackingSubGET**](LocationApi.md#UserTrackingSubGET) | **Get** /subscriptions/userTracking/{subscriptionId} | Retrieve subscription information [**UserTrackingSubListGET**](LocationApi.md#UserTrackingSubListGET) | **Get** /subscriptions/userTracking | Retrieves all active subscriptions to user tracking notifications @@ -108,456 +92,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **AreaCircleSubDELETE** -> AreaCircleSubDELETE(ctx, subscriptionId) -Cancel a subscription - -Method to delete a subscription. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **AreaCircleSubGET** -> InlineCircleNotificationSubscription AreaCircleSubGET(ctx, subscriptionId) -Retrieve subscription information - -Get subscription information. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - -[**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **AreaCircleSubListGET** -> InlineNotificationSubscriptionList AreaCircleSubListGET(ctx, ) -Retrieves all active subscriptions to area change notifications - -This operation is used for retrieving all active subscriptions to area change notifications. - -### Required Parameters -This endpoint does not need any parameter. - -### Return type - -[**InlineNotificationSubscriptionList**](InlineNotificationSubscriptionList.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **AreaCircleSubPOST** -> InlineCircleNotificationSubscription AreaCircleSubPOST(ctx, body) -Creates a subscription for area change notification - -Creates a subscription to the Location Service for an area change notification. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **body** | [**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md)| Subscription to be created | - -### Return type - -[**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **AreaCircleSubPUT** -> InlineCircleNotificationSubscription AreaCircleSubPUT(ctx, body, subscriptionId) -Updates a subscription information - -Updates a subscription. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **body** | [**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md)| Subscription to be modified | - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - -[**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DistanceGET** -> InlineTerminalDistance DistanceGET(ctx, address, optional) -UE Distance Lookup of a specific UE - -UE Distance Lookup between terminals or a terminal and a location - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **address** | [**[]string**](string.md)| address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) | - **optional** | ***DistanceGETOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a DistanceGETOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - - **requester** | **optional.String**| Entity that is requesting the information | - **latitude** | **optional.Float32**| Latitude geo position | - **longitude** | **optional.Float32**| Longitude geo position | - -### Return type - -[**InlineTerminalDistance**](InlineTerminalDistance.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DistanceSubDELETE** -> DistanceSubDELETE(ctx, subscriptionId) -Cancel a subscription - -Method to delete a subscription. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DistanceSubGET** -> InlineDistanceNotificationSubscription DistanceSubGET(ctx, subscriptionId) -Retrieve subscription information - -Get subscription information. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - -[**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DistanceSubListGET** -> InlineNotificationSubscriptionList DistanceSubListGET(ctx, ) -Retrieves all active subscriptions to distance change notifications - -This operation is used for retrieving all active subscriptions to a distance change notifications. - -### Required Parameters -This endpoint does not need any parameter. - -### Return type - -[**InlineNotificationSubscriptionList**](InlineNotificationSubscriptionList.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DistanceSubPOST** -> InlineDistanceNotificationSubscription DistanceSubPOST(ctx, body) -Creates a subscription for distance change notification - -Creates a subscription to the Location Service for a distance change notification. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **body** | [**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md)| Subscription to be created | - -### Return type - -[**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DistanceSubPUT** -> InlineDistanceNotificationSubscription DistanceSubPUT(ctx, body, subscriptionId) -Updates a subscription information - -Updates a subscription. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **body** | [**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md)| Subscription to be modified | - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - -[**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **PeriodicSubDELETE** -> PeriodicSubDELETE(ctx, subscriptionId) -Cancel a subscription - -Method to delete a subscription. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **PeriodicSubGET** -> InlinePeriodicNotificationSubscription PeriodicSubGET(ctx, subscriptionId) -Retrieve subscription information - -Get subscription information. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - -[**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **PeriodicSubListGET** -> InlineNotificationSubscriptionList PeriodicSubListGET(ctx, ) -Retrieves all active subscriptions to periodic notifications - -This operation is used for retrieving all active subscriptions to periodic notifications. - -### Required Parameters -This endpoint does not need any parameter. - -### Return type - -[**InlineNotificationSubscriptionList**](InlineNotificationSubscriptionList.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **PeriodicSubPOST** -> InlinePeriodicNotificationSubscription PeriodicSubPOST(ctx, body) -Creates a subscription for periodic notification - -Creates a subscription to the Location Service for a periodic notification. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **body** | [**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md)| Subscription to be created | - -### Return type - -[**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **PeriodicSubPUT** -> InlinePeriodicNotificationSubscription PeriodicSubPUT(ctx, body, subscriptionId) -Updates a subscription information - -Updates a subscription. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **body** | [**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md)| Subscription to be modified | - **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | - -### Return type - -[**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **UserTrackingSubDELETE** > UserTrackingSubDELETE(ctx, subscriptionId) Cancel a subscription diff --git a/go-packages/meep-loc-serv-client/docs/UnsupportedApi.md b/go-packages/meep-loc-serv-client/docs/UnsupportedApi.md new file mode 100644 index 000000000..20fe24da2 --- /dev/null +++ b/go-packages/meep-loc-serv-client/docs/UnsupportedApi.md @@ -0,0 +1,474 @@ +# \UnsupportedApi + +All URIs are relative to *https://localhost/sandboxname/location/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**AreaCircleSubDELETE**](UnsupportedApi.md#AreaCircleSubDELETE) | **Delete** /subscriptions/area/circle/{subscriptionId} | Cancel a subscription +[**AreaCircleSubGET**](UnsupportedApi.md#AreaCircleSubGET) | **Get** /subscriptions/area/circle/{subscriptionId} | Retrieve subscription information +[**AreaCircleSubListGET**](UnsupportedApi.md#AreaCircleSubListGET) | **Get** /subscriptions/area/circle | Retrieves all active subscriptions to area change notifications +[**AreaCircleSubPOST**](UnsupportedApi.md#AreaCircleSubPOST) | **Post** /subscriptions/area/circle | Creates a subscription for area change notification +[**AreaCircleSubPUT**](UnsupportedApi.md#AreaCircleSubPUT) | **Put** /subscriptions/area/circle/{subscriptionId} | Updates a subscription information +[**DistanceGET**](UnsupportedApi.md#DistanceGET) | **Get** /queries/distance | UE Distance Lookup of a specific UE +[**DistanceSubDELETE**](UnsupportedApi.md#DistanceSubDELETE) | **Delete** /subscriptions/distance/{subscriptionId} | Cancel a subscription +[**DistanceSubGET**](UnsupportedApi.md#DistanceSubGET) | **Get** /subscriptions/distance/{subscriptionId} | Retrieve subscription information +[**DistanceSubListGET**](UnsupportedApi.md#DistanceSubListGET) | **Get** /subscriptions/distance | Retrieves all active subscriptions to distance change notifications +[**DistanceSubPOST**](UnsupportedApi.md#DistanceSubPOST) | **Post** /subscriptions/distance | Creates a subscription for distance change notification +[**DistanceSubPUT**](UnsupportedApi.md#DistanceSubPUT) | **Put** /subscriptions/distance/{subscriptionId} | Updates a subscription information +[**PeriodicSubDELETE**](UnsupportedApi.md#PeriodicSubDELETE) | **Delete** /subscriptions/periodic/{subscriptionId} | Cancel a subscription +[**PeriodicSubGET**](UnsupportedApi.md#PeriodicSubGET) | **Get** /subscriptions/periodic/{subscriptionId} | Retrieve subscription information +[**PeriodicSubListGET**](UnsupportedApi.md#PeriodicSubListGET) | **Get** /subscriptions/periodic | Retrieves all active subscriptions to periodic notifications +[**PeriodicSubPOST**](UnsupportedApi.md#PeriodicSubPOST) | **Post** /subscriptions/periodic | Creates a subscription for periodic notification +[**PeriodicSubPUT**](UnsupportedApi.md#PeriodicSubPUT) | **Put** /subscriptions/periodic/{subscriptionId} | Updates a subscription information + + +# **AreaCircleSubDELETE** +> AreaCircleSubDELETE(ctx, subscriptionId) +Cancel a subscription + +Method to delete a subscription. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **AreaCircleSubGET** +> InlineCircleNotificationSubscription AreaCircleSubGET(ctx, subscriptionId) +Retrieve subscription information + +Get subscription information. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + +[**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **AreaCircleSubListGET** +> InlineNotificationSubscriptionList AreaCircleSubListGET(ctx, ) +Retrieves all active subscriptions to area change notifications + +This operation is used for retrieving all active subscriptions to area change notifications. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineNotificationSubscriptionList**](InlineNotificationSubscriptionList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **AreaCircleSubPOST** +> InlineCircleNotificationSubscription AreaCircleSubPOST(ctx, body) +Creates a subscription for area change notification + +Creates a subscription to the Location Service for an area change notification. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **body** | [**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md)| Subscription to be created | + +### Return type + +[**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **AreaCircleSubPUT** +> InlineCircleNotificationSubscription AreaCircleSubPUT(ctx, body, subscriptionId) +Updates a subscription information + +Updates a subscription. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **body** | [**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md)| Subscription to be modified | + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + +[**InlineCircleNotificationSubscription**](InlineCircleNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DistanceGET** +> InlineTerminalDistance DistanceGET(ctx, address, optional) +UE Distance Lookup of a specific UE + +UE Distance Lookup between terminals or a terminal and a location + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **address** | [**[]string**](string.md)| address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) | + **optional** | ***DistanceGETOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a DistanceGETOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + + **requester** | **optional.String**| Entity that is requesting the information | + **latitude** | **optional.Float32**| Latitude geo position | + **longitude** | **optional.Float32**| Longitude geo position | + +### Return type + +[**InlineTerminalDistance**](InlineTerminalDistance.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DistanceSubDELETE** +> DistanceSubDELETE(ctx, subscriptionId) +Cancel a subscription + +Method to delete a subscription. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DistanceSubGET** +> InlineDistanceNotificationSubscription DistanceSubGET(ctx, subscriptionId) +Retrieve subscription information + +Get subscription information. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + +[**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DistanceSubListGET** +> InlineNotificationSubscriptionList DistanceSubListGET(ctx, ) +Retrieves all active subscriptions to distance change notifications + +This operation is used for retrieving all active subscriptions to a distance change notifications. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineNotificationSubscriptionList**](InlineNotificationSubscriptionList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DistanceSubPOST** +> InlineDistanceNotificationSubscription DistanceSubPOST(ctx, body) +Creates a subscription for distance change notification + +Creates a subscription to the Location Service for a distance change notification. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **body** | [**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md)| Subscription to be created | + +### Return type + +[**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DistanceSubPUT** +> InlineDistanceNotificationSubscription DistanceSubPUT(ctx, body, subscriptionId) +Updates a subscription information + +Updates a subscription. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **body** | [**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md)| Subscription to be modified | + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + +[**InlineDistanceNotificationSubscription**](InlineDistanceNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **PeriodicSubDELETE** +> PeriodicSubDELETE(ctx, subscriptionId) +Cancel a subscription + +Method to delete a subscription. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + + (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **PeriodicSubGET** +> InlinePeriodicNotificationSubscription PeriodicSubGET(ctx, subscriptionId) +Retrieve subscription information + +Get subscription information. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + +[**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **PeriodicSubListGET** +> InlineNotificationSubscriptionList PeriodicSubListGET(ctx, ) +Retrieves all active subscriptions to periodic notifications + +This operation is used for retrieving all active subscriptions to periodic notifications. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**InlineNotificationSubscriptionList**](InlineNotificationSubscriptionList.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **PeriodicSubPOST** +> InlinePeriodicNotificationSubscription PeriodicSubPOST(ctx, body) +Creates a subscription for periodic notification + +Creates a subscription to the Location Service for a periodic notification. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **body** | [**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md)| Subscription to be created | + +### Return type + +[**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **PeriodicSubPUT** +> InlinePeriodicNotificationSubscription PeriodicSubPUT(ctx, body, subscriptionId) +Updates a subscription information + +Updates a subscription. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **body** | [**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md)| Subscription to be modified | + **subscriptionId** | **string**| Subscription Identifier, specifically the \"self\" returned in the subscription request | + +### Return type + +[**InlinePeriodicNotificationSubscription**](InlinePeriodicNotificationSubscription.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-loc-serv-client/model_access_point_info.go b/go-packages/meep-loc-serv-client/model_access_point_info.go index 5d6d2c9e3..be65f78be 100644 --- a/go-packages/meep-loc-serv-client/model_access_point_info.go +++ b/go-packages/meep-loc-serv-client/model_access_point_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_access_point_list.go b/go-packages/meep-loc-serv-client/model_access_point_list.go index a621f0692..86561f0c4 100644 --- a/go-packages/meep-loc-serv-client/model_access_point_list.go +++ b/go-packages/meep-loc-serv-client/model_access_point_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_callback_reference.go b/go-packages/meep-loc-serv-client/model_callback_reference.go index fe493e398..f96a63ef0 100644 --- a/go-packages/meep-loc-serv-client/model_callback_reference.go +++ b/go-packages/meep-loc-serv-client/model_callback_reference.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_circle_notification_subscription.go b/go-packages/meep-loc-serv-client/model_circle_notification_subscription.go index ca8d80f7a..09135e3af 100644 --- a/go-packages/meep-loc-serv-client/model_circle_notification_subscription.go +++ b/go-packages/meep-loc-serv-client/model_circle_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_connection_type.go b/go-packages/meep-loc-serv-client/model_connection_type.go index 0f3e88adf..75fca7002 100644 --- a/go-packages/meep-loc-serv-client/model_connection_type.go +++ b/go-packages/meep-loc-serv-client/model_connection_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_distance_criteria.go b/go-packages/meep-loc-serv-client/model_distance_criteria.go index 11c49dd95..56d37bfb7 100644 --- a/go-packages/meep-loc-serv-client/model_distance_criteria.go +++ b/go-packages/meep-loc-serv-client/model_distance_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_distance_notification_subscription.go b/go-packages/meep-loc-serv-client/model_distance_notification_subscription.go index 6e2a7619d..4bfe0aa11 100644 --- a/go-packages/meep-loc-serv-client/model_distance_notification_subscription.go +++ b/go-packages/meep-loc-serv-client/model_distance_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_entering_leaving_criteria.go b/go-packages/meep-loc-serv-client/model_entering_leaving_criteria.go index 5d649832a..0b07d4bbc 100644 --- a/go-packages/meep-loc-serv-client/model_entering_leaving_criteria.go +++ b/go-packages/meep-loc-serv-client/model_entering_leaving_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_access_point_info.go b/go-packages/meep-loc-serv-client/model_inline_access_point_info.go index 7c8273157..a0314c1ec 100644 --- a/go-packages/meep-loc-serv-client/model_inline_access_point_info.go +++ b/go-packages/meep-loc-serv-client/model_inline_access_point_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_access_point_list.go b/go-packages/meep-loc-serv-client/model_inline_access_point_list.go index f501b4238..584567b37 100644 --- a/go-packages/meep-loc-serv-client/model_inline_access_point_list.go +++ b/go-packages/meep-loc-serv-client/model_inline_access_point_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_circle_notification_subscription.go b/go-packages/meep-loc-serv-client/model_inline_circle_notification_subscription.go index 9f0c581c0..afc69ab95 100644 --- a/go-packages/meep-loc-serv-client/model_inline_circle_notification_subscription.go +++ b/go-packages/meep-loc-serv-client/model_inline_circle_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_distance_notification_subscription.go b/go-packages/meep-loc-serv-client/model_inline_distance_notification_subscription.go index 2d777c38f..0a5998d94 100644 --- a/go-packages/meep-loc-serv-client/model_inline_distance_notification_subscription.go +++ b/go-packages/meep-loc-serv-client/model_inline_distance_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_notification_subscription_list.go b/go-packages/meep-loc-serv-client/model_inline_notification_subscription_list.go index 58231ce50..220bfeea0 100644 --- a/go-packages/meep-loc-serv-client/model_inline_notification_subscription_list.go +++ b/go-packages/meep-loc-serv-client/model_inline_notification_subscription_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_periodic_notification_subscription.go b/go-packages/meep-loc-serv-client/model_inline_periodic_notification_subscription.go index 20bf1bbbf..246834fca 100644 --- a/go-packages/meep-loc-serv-client/model_inline_periodic_notification_subscription.go +++ b/go-packages/meep-loc-serv-client/model_inline_periodic_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_problem_details.go b/go-packages/meep-loc-serv-client/model_inline_problem_details.go index 75396fcf1..77bba2155 100644 --- a/go-packages/meep-loc-serv-client/model_inline_problem_details.go +++ b/go-packages/meep-loc-serv-client/model_inline_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_problem_details_required.go b/go-packages/meep-loc-serv-client/model_inline_problem_details_required.go index e586861af..cd8fd9808 100644 --- a/go-packages/meep-loc-serv-client/model_inline_problem_details_required.go +++ b/go-packages/meep-loc-serv-client/model_inline_problem_details_required.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_subscription_notification.go b/go-packages/meep-loc-serv-client/model_inline_subscription_notification.go index c0ee58f0e..73777857d 100644 --- a/go-packages/meep-loc-serv-client/model_inline_subscription_notification.go +++ b/go-packages/meep-loc-serv-client/model_inline_subscription_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_terminal_distance.go b/go-packages/meep-loc-serv-client/model_inline_terminal_distance.go index ac22fc21f..c7ccf8996 100644 --- a/go-packages/meep-loc-serv-client/model_inline_terminal_distance.go +++ b/go-packages/meep-loc-serv-client/model_inline_terminal_distance.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_user_list.go b/go-packages/meep-loc-serv-client/model_inline_user_list.go index e64fdb0e9..2a7c57abb 100644 --- a/go-packages/meep-loc-serv-client/model_inline_user_list.go +++ b/go-packages/meep-loc-serv-client/model_inline_user_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_user_tracking_subscription.go b/go-packages/meep-loc-serv-client/model_inline_user_tracking_subscription.go index e87b87e0c..d3f9148b7 100644 --- a/go-packages/meep-loc-serv-client/model_inline_user_tracking_subscription.go +++ b/go-packages/meep-loc-serv-client/model_inline_user_tracking_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_zonal_presence_notification.go b/go-packages/meep-loc-serv-client/model_inline_zonal_presence_notification.go index ed5128cdd..8ebc2774a 100644 --- a/go-packages/meep-loc-serv-client/model_inline_zonal_presence_notification.go +++ b/go-packages/meep-loc-serv-client/model_inline_zonal_presence_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_zonal_traffic_subscription.go b/go-packages/meep-loc-serv-client/model_inline_zonal_traffic_subscription.go index 2bee24844..46506a549 100644 --- a/go-packages/meep-loc-serv-client/model_inline_zonal_traffic_subscription.go +++ b/go-packages/meep-loc-serv-client/model_inline_zonal_traffic_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_zone_info.go b/go-packages/meep-loc-serv-client/model_inline_zone_info.go index 3ee1895fd..36f71682f 100644 --- a/go-packages/meep-loc-serv-client/model_inline_zone_info.go +++ b/go-packages/meep-loc-serv-client/model_inline_zone_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_zone_list.go b/go-packages/meep-loc-serv-client/model_inline_zone_list.go index 70ddb3299..b99f4857f 100644 --- a/go-packages/meep-loc-serv-client/model_inline_zone_list.go +++ b/go-packages/meep-loc-serv-client/model_inline_zone_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_zone_status_notification.go b/go-packages/meep-loc-serv-client/model_inline_zone_status_notification.go index cfecc6abd..05a02cd9e 100644 --- a/go-packages/meep-loc-serv-client/model_inline_zone_status_notification.go +++ b/go-packages/meep-loc-serv-client/model_inline_zone_status_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_inline_zone_status_subscription.go b/go-packages/meep-loc-serv-client/model_inline_zone_status_subscription.go index a22c5e04b..e8d70d8ec 100644 --- a/go-packages/meep-loc-serv-client/model_inline_zone_status_subscription.go +++ b/go-packages/meep-loc-serv-client/model_inline_zone_status_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_link.go b/go-packages/meep-loc-serv-client/model_link.go index dbbcd5094..342f30b96 100644 --- a/go-packages/meep-loc-serv-client/model_link.go +++ b/go-packages/meep-loc-serv-client/model_link.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_location_info.go b/go-packages/meep-loc-serv-client/model_location_info.go index 7550773e7..88b37f8d7 100644 --- a/go-packages/meep-loc-serv-client/model_location_info.go +++ b/go-packages/meep-loc-serv-client/model_location_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_location_info_velocity.go b/go-packages/meep-loc-serv-client/model_location_info_velocity.go index 207e421cd..3c500393e 100644 --- a/go-packages/meep-loc-serv-client/model_location_info_velocity.go +++ b/go-packages/meep-loc-serv-client/model_location_info_velocity.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_notification_format.go b/go-packages/meep-loc-serv-client/model_notification_format.go index 93915eb0a..e8d517067 100644 --- a/go-packages/meep-loc-serv-client/model_notification_format.go +++ b/go-packages/meep-loc-serv-client/model_notification_format.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_notification_subscription_list.go b/go-packages/meep-loc-serv-client/model_notification_subscription_list.go index b932ef154..644e05da8 100644 --- a/go-packages/meep-loc-serv-client/model_notification_subscription_list.go +++ b/go-packages/meep-loc-serv-client/model_notification_subscription_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_operation_status.go b/go-packages/meep-loc-serv-client/model_operation_status.go index 33d391b74..c74503846 100644 --- a/go-packages/meep-loc-serv-client/model_operation_status.go +++ b/go-packages/meep-loc-serv-client/model_operation_status.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_periodic_notification_subscription.go b/go-packages/meep-loc-serv-client/model_periodic_notification_subscription.go index 81ea13c22..4d4e6793e 100644 --- a/go-packages/meep-loc-serv-client/model_periodic_notification_subscription.go +++ b/go-packages/meep-loc-serv-client/model_periodic_notification_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_problem_details.go b/go-packages/meep-loc-serv-client/model_problem_details.go index 03e013c8b..3402c4d64 100644 --- a/go-packages/meep-loc-serv-client/model_problem_details.go +++ b/go-packages/meep-loc-serv-client/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_retrieval_status.go b/go-packages/meep-loc-serv-client/model_retrieval_status.go index 9b70f7e19..bf2251274 100644 --- a/go-packages/meep-loc-serv-client/model_retrieval_status.go +++ b/go-packages/meep-loc-serv-client/model_retrieval_status.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_service_error.go b/go-packages/meep-loc-serv-client/model_service_error.go index 3678427a5..24dc741c0 100644 --- a/go-packages/meep-loc-serv-client/model_service_error.go +++ b/go-packages/meep-loc-serv-client/model_service_error.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_subscription_cancellation_notification.go b/go-packages/meep-loc-serv-client/model_subscription_cancellation_notification.go index 6dd1bb5e8..47e6548f1 100644 --- a/go-packages/meep-loc-serv-client/model_subscription_cancellation_notification.go +++ b/go-packages/meep-loc-serv-client/model_subscription_cancellation_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_subscription_notification.go b/go-packages/meep-loc-serv-client/model_subscription_notification.go index 6302068d0..4ad5f2a9f 100644 --- a/go-packages/meep-loc-serv-client/model_subscription_notification.go +++ b/go-packages/meep-loc-serv-client/model_subscription_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_terminal_distance.go b/go-packages/meep-loc-serv-client/model_terminal_distance.go index de89aaf99..6020ff49f 100644 --- a/go-packages/meep-loc-serv-client/model_terminal_distance.go +++ b/go-packages/meep-loc-serv-client/model_terminal_distance.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_terminal_location.go b/go-packages/meep-loc-serv-client/model_terminal_location.go index cf8b007f5..de75c3fdd 100644 --- a/go-packages/meep-loc-serv-client/model_terminal_location.go +++ b/go-packages/meep-loc-serv-client/model_terminal_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_time_stamp.go b/go-packages/meep-loc-serv-client/model_time_stamp.go index 51cdd1e07..0b33a607a 100644 --- a/go-packages/meep-loc-serv-client/model_time_stamp.go +++ b/go-packages/meep-loc-serv-client/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_user_event_type.go b/go-packages/meep-loc-serv-client/model_user_event_type.go index ee545425c..61308ce46 100644 --- a/go-packages/meep-loc-serv-client/model_user_event_type.go +++ b/go-packages/meep-loc-serv-client/model_user_event_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_user_info.go b/go-packages/meep-loc-serv-client/model_user_info.go index b4e5714f2..38142fcf0 100644 --- a/go-packages/meep-loc-serv-client/model_user_info.go +++ b/go-packages/meep-loc-serv-client/model_user_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_user_list.go b/go-packages/meep-loc-serv-client/model_user_list.go index b200034ac..5ebefb743 100644 --- a/go-packages/meep-loc-serv-client/model_user_list.go +++ b/go-packages/meep-loc-serv-client/model_user_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_user_tracking_subscription.go b/go-packages/meep-loc-serv-client/model_user_tracking_subscription.go index 177451568..fbd955491 100644 --- a/go-packages/meep-loc-serv-client/model_user_tracking_subscription.go +++ b/go-packages/meep-loc-serv-client/model_user_tracking_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_zonal_presence_notification.go b/go-packages/meep-loc-serv-client/model_zonal_presence_notification.go index 22fe5df80..e2310c124 100644 --- a/go-packages/meep-loc-serv-client/model_zonal_presence_notification.go +++ b/go-packages/meep-loc-serv-client/model_zonal_presence_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_zonal_traffic_subscription.go b/go-packages/meep-loc-serv-client/model_zonal_traffic_subscription.go index 3e31f5a06..4d6c04eda 100644 --- a/go-packages/meep-loc-serv-client/model_zonal_traffic_subscription.go +++ b/go-packages/meep-loc-serv-client/model_zonal_traffic_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_zone_info.go b/go-packages/meep-loc-serv-client/model_zone_info.go index fed9924b9..6205204e8 100644 --- a/go-packages/meep-loc-serv-client/model_zone_info.go +++ b/go-packages/meep-loc-serv-client/model_zone_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_zone_list.go b/go-packages/meep-loc-serv-client/model_zone_list.go index a81683b0d..d981c5efa 100644 --- a/go-packages/meep-loc-serv-client/model_zone_list.go +++ b/go-packages/meep-loc-serv-client/model_zone_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_zone_status_notification.go b/go-packages/meep-loc-serv-client/model_zone_status_notification.go index 2b6a80ac5..e78567420 100644 --- a/go-packages/meep-loc-serv-client/model_zone_status_notification.go +++ b/go-packages/meep-loc-serv-client/model_zone_status_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/model_zone_status_subscription.go b/go-packages/meep-loc-serv-client/model_zone_status_subscription.go index d5e2a7c65..99686258e 100644 --- a/go-packages/meep-loc-serv-client/model_zone_status_subscription.go +++ b/go-packages/meep-loc-serv-client/model_zone_status_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-loc-serv-client/response.go b/go-packages/meep-loc-serv-client/response.go index 977390513..136d7224a 100644 --- a/go-packages/meep-loc-serv-client/response.go +++ b/go-packages/meep-loc-serv-client/response.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-mg-manager-client/README.md b/go-packages/meep-mg-manager-client/README.md index 047c018dd..9e9d1d5cc 100644 --- a/go-packages/meep-mg-manager-client/README.md +++ b/go-packages/meep-mg-manager-client/README.md @@ -17,7 +17,7 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/mgm/v1* +All URIs are relative to *https://localhost/sandboxname/mgm/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/go-packages/meep-mg-manager-client/api/swagger.yaml b/go-packages/meep-mg-manager-client/api/swagger.yaml index 8ce89741d..cc10601bb 100644 --- a/go-packages/meep-mg-manager-client/api/swagger.yaml +++ b/go-packages/meep-mg-manager-client/api/swagger.yaml @@ -15,7 +15,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/mgm/v1" +basePath: "/sandboxname/mgm/v1" tags: - name: "Membership" - name: "State Transfer" diff --git a/go-packages/meep-mg-manager-client/configuration.go b/go-packages/meep-mg-manager-client/configuration.go index 1ca3bf34f..aa65b5862 100644 --- a/go-packages/meep-mg-manager-client/configuration.go +++ b/go-packages/meep-mg-manager-client/configuration.go @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/mgm/v1", + BasePath: "https://localhost/sandboxname/mgm/v1", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-mg-manager-client/docs/MembershipApi.md b/go-packages/meep-mg-manager-client/docs/MembershipApi.md index 9b36b3fb3..6841aae99 100644 --- a/go-packages/meep-mg-manager-client/docs/MembershipApi.md +++ b/go-packages/meep-mg-manager-client/docs/MembershipApi.md @@ -1,6 +1,6 @@ # \MembershipApi -All URIs are relative to *https://localhost/mgm/v1* +All URIs are relative to *https://localhost/sandboxname/mgm/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-mg-manager-client/docs/StateTransferApi.md b/go-packages/meep-mg-manager-client/docs/StateTransferApi.md index bccf4ef5e..cfa03c4ab 100644 --- a/go-packages/meep-mg-manager-client/docs/StateTransferApi.md +++ b/go-packages/meep-mg-manager-client/docs/StateTransferApi.md @@ -1,6 +1,6 @@ # \StateTransferApi -All URIs are relative to *https://localhost/mgm/v1* +All URIs are relative to *https://localhost/sandboxname/mgm/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-rnis-client/README.md b/go-packages/meep-rnis-client/README.md index 79078f17f..52a8d0a89 100644 --- a/go-packages/meep-rnis-client/README.md +++ b/go-packages/meep-rnis-client/README.md @@ -1,6 +1,6 @@ # Go API client for client -Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription ## Overview This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. @@ -17,19 +17,19 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/rni/v2* +All URIs are relative to *https://localhost/sandboxname/rni/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*RniApi* | [**Layer2MeasInfoGET**](docs/RniApi.md#layer2measinfoget) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements *RniApi* | [**PlmnInfoGET**](docs/RniApi.md#plmninfoget) | **Get** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to *RniApi* | [**RabInfoGET**](docs/RniApi.md#rabinfoget) | **Get** /queries/rab_info | Retrieve information on Radio Access Bearers -*RniApi* | [**S1BearerInfoGET**](docs/RniApi.md#s1bearerinfoget) | **Get** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) *RniApi* | [**SubscriptionLinkListSubscriptionsGET**](docs/RniApi.md#subscriptionlinklistsubscriptionsget) | **Get** /subscriptions | Retrieve information on subscriptions for notifications *RniApi* | [**SubscriptionsDELETE**](docs/RniApi.md#subscriptionsdelete) | **Delete** /subscriptions/{subscriptionId} | Cancel an existing subscription *RniApi* | [**SubscriptionsGET**](docs/RniApi.md#subscriptionsget) | **Get** /subscriptions/{subscriptionId} | Retrieve information on current specific subscription *RniApi* | [**SubscriptionsPOST**](docs/RniApi.md#subscriptionspost) | **Post** /subscriptions | Create a new subscription *RniApi* | [**SubscriptionsPUT**](docs/RniApi.md#subscriptionsput) | **Put** /subscriptions/{subscriptionId} | Modify an existing subscription +*UnsupportedApi* | [**Layer2MeasInfoGET**](docs/UnsupportedApi.md#layer2measinfoget) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements +*UnsupportedApi* | [**S1BearerInfoGET**](docs/UnsupportedApi.md#s1bearerinfoget) | **Get** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) ## Documentation For Models diff --git a/go-packages/meep-rnis-client/api_rni.go b/go-packages/meep-rnis-client/api_rni.go index 5fe6d247d..fd7e0ef51 100644 --- a/go-packages/meep-rnis-client/api_rni.go +++ b/go-packages/meep-rnis-client/api_rni.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -42,370 +42,6 @@ var ( type RniApiService service -/* -RniApiService Retrieve information on layer 2 measurements -Queries information about the layer 2 measurements. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param optional nil or *Layer2MeasInfoGETOpts - Optional Parameters: - * @param "AppInsId" (optional.String) - Application instance identifier - * @param "CellId" (optional.Interface of []string) - Comma separated list of E-UTRAN Cell Identities - * @param "UeIpv4Address" (optional.Interface of []string) - Comma separated list of IE IPv4 addresses as defined for the type for AssociateId - * @param "UeIpv6Address" (optional.Interface of []string) - Comma separated list of IE IPv6 addresses as defined for the type for AssociateId - * @param "NatedIpAddress" (optional.Interface of []string) - Comma separated list of IE NATed IP addresses as defined for the type for AssociateId - * @param "GtpTeid" (optional.Interface of []string) - Comma separated list of GTP TEID addresses as defined for the type for AssociateId - * @param "DlGbrPrbUsageCell" (optional.Int32) - PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlGbrPrbUsageCell" (optional.Int32) - PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlNongbrPrbUsageCell" (optional.Int32) - PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlNongbrPrbUsageCell" (optional.Int32) - PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlTotalPrbUsageCell" (optional.Int32) - PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 - * @param "UlTotalPrbUsageCell" (optional.Int32) - PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 - * @param "ReceivedDedicatedPreamblesCell" (optional.Int32) - Received dedicated preambles in percentage as defined in ETSI TS 136 314 - * @param "ReceivedRandomlySelectedPreamblesLowRangeCell" (optional.Int32) - Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 - * @param "ReceivedRandomlySelectedPreamblesHighRangeCell" (optional.Int32) - Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeDlGbrCell" (optional.Int32) - Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeUlGbrCell" (optional.Int32) - Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeDlNongbrCell" (optional.Int32) - Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeUlNongbrCell" (optional.Int32) - Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 - * @param "DlGbrPdrCell" (optional.Int32) - Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlGbrPdrCell" (optional.Int32) - Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlNongbrPdrCell" (optional.Int32) - Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlNongbrPdrCell" (optional.Int32) - Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlGbrDelayUe" (optional.Int32) - Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlGbrDelayUe" (optional.Int32) - Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlNongbrDelayUe" (optional.Int32) - Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlNongbrDelayUe" (optional.Int32) - Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlGbrPdrUe" (optional.Int32) - Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "UlGbrPdrUe" (optional.Int32) - Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "DlNongbrPdrUe" (optional.Int32) - Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "UlNongbrPdrUe" (optional.Int32) - Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "DlGbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlGbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlGbrDataVolumeUe" (optional.Int32) - Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlGbrDataVolumeUe" (optional.Int32) - Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlNongbrDataVolumeUe" (optional.Int32) - Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlNongbrDataVolumeUe" (optional.Int32) - Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 - -@return L2Meas -*/ - -type Layer2MeasInfoGETOpts struct { - AppInsId optional.String - CellId optional.Interface - UeIpv4Address optional.Interface - UeIpv6Address optional.Interface - NatedIpAddress optional.Interface - GtpTeid optional.Interface - DlGbrPrbUsageCell optional.Int32 - UlGbrPrbUsageCell optional.Int32 - DlNongbrPrbUsageCell optional.Int32 - UlNongbrPrbUsageCell optional.Int32 - DlTotalPrbUsageCell optional.Int32 - UlTotalPrbUsageCell optional.Int32 - ReceivedDedicatedPreamblesCell optional.Int32 - ReceivedRandomlySelectedPreamblesLowRangeCell optional.Int32 - ReceivedRandomlySelectedPreamblesHighRangeCell optional.Int32 - NumberOfActiveUeDlGbrCell optional.Int32 - NumberOfActiveUeUlGbrCell optional.Int32 - NumberOfActiveUeDlNongbrCell optional.Int32 - NumberOfActiveUeUlNongbrCell optional.Int32 - DlGbrPdrCell optional.Int32 - UlGbrPdrCell optional.Int32 - DlNongbrPdrCell optional.Int32 - UlNongbrPdrCell optional.Int32 - DlGbrDelayUe optional.Int32 - UlGbrDelayUe optional.Int32 - DlNongbrDelayUe optional.Int32 - UlNongbrDelayUe optional.Int32 - DlGbrPdrUe optional.Int32 - UlGbrPdrUe optional.Int32 - DlNongbrPdrUe optional.Int32 - UlNongbrPdrUe optional.Int32 - DlGbrThroughputUe optional.Int32 - UlGbrThroughputUe optional.Int32 - DlNongbrThroughputUe optional.Int32 - UlNongbrThroughputUe optional.Int32 - DlGbrDataVolumeUe optional.Int32 - UlGbrDataVolumeUe optional.Int32 - DlNongbrDataVolumeUe optional.Int32 - UlNongbrDataVolumeUe optional.Int32 -} - -func (a *RniApiService) Layer2MeasInfoGET(ctx context.Context, localVarOptionals *Layer2MeasInfoGETOpts) (L2Meas, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue L2Meas - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/queries/layer2_meas" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.AppInsId.IsSet() { - localVarQueryParams.Add("app_ins_id", parameterToString(localVarOptionals.AppInsId.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.CellId.IsSet() { - localVarQueryParams.Add("cell_id", parameterToString(localVarOptionals.CellId.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.UeIpv4Address.IsSet() { - localVarQueryParams.Add("ue_ipv4_address", parameterToString(localVarOptionals.UeIpv4Address.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.UeIpv6Address.IsSet() { - localVarQueryParams.Add("ue_ipv6_address", parameterToString(localVarOptionals.UeIpv6Address.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.NatedIpAddress.IsSet() { - localVarQueryParams.Add("nated_ip_address", parameterToString(localVarOptionals.NatedIpAddress.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.GtpTeid.IsSet() { - localVarQueryParams.Add("gtp_teid", parameterToString(localVarOptionals.GtpTeid.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("dl_gbr_prb_usage_cell", parameterToString(localVarOptionals.DlGbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("ul_gbr_prb_usage_cell", parameterToString(localVarOptionals.UlGbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("dl_nongbr_prb_usage_cell", parameterToString(localVarOptionals.DlNongbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("ul_nongbr_prb_usage_cell", parameterToString(localVarOptionals.UlNongbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlTotalPrbUsageCell.IsSet() { - localVarQueryParams.Add("dl_total_prb_usage_cell", parameterToString(localVarOptionals.DlTotalPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlTotalPrbUsageCell.IsSet() { - localVarQueryParams.Add("ul_total_prb_usage_cell", parameterToString(localVarOptionals.UlTotalPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ReceivedDedicatedPreamblesCell.IsSet() { - localVarQueryParams.Add("received_dedicated_preambles_cell", parameterToString(localVarOptionals.ReceivedDedicatedPreamblesCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.IsSet() { - localVarQueryParams.Add("received_randomly_selected_preambles_low_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.IsSet() { - localVarQueryParams.Add("received_randomly_selected_preambles_high_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlGbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_dl_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlGbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlGbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_ul_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlGbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlNongbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_dl_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlNongbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlNongbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_ul_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlNongbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrPdrCell.IsSet() { - localVarQueryParams.Add("dl_gbr_pdr_cell", parameterToString(localVarOptionals.DlGbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrPdrCell.IsSet() { - localVarQueryParams.Add("ul_gbr_pdr_cell", parameterToString(localVarOptionals.UlGbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrPdrCell.IsSet() { - localVarQueryParams.Add("dl_nongbr_pdr_cell", parameterToString(localVarOptionals.DlNongbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrPdrCell.IsSet() { - localVarQueryParams.Add("ul_nongbr_pdr_cell", parameterToString(localVarOptionals.UlNongbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrDelayUe.IsSet() { - localVarQueryParams.Add("dl_gbr_delay_ue", parameterToString(localVarOptionals.DlGbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrDelayUe.IsSet() { - localVarQueryParams.Add("ul_gbr_delay_ue", parameterToString(localVarOptionals.UlGbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrDelayUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_delay_ue", parameterToString(localVarOptionals.DlNongbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrDelayUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_delay_ue", parameterToString(localVarOptionals.UlNongbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrPdrUe.IsSet() { - localVarQueryParams.Add("dl_gbr_pdr_ue", parameterToString(localVarOptionals.DlGbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrPdrUe.IsSet() { - localVarQueryParams.Add("ul_gbr_pdr_ue", parameterToString(localVarOptionals.UlGbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrPdrUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_pdr_ue", parameterToString(localVarOptionals.DlNongbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrPdrUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_pdr_ue", parameterToString(localVarOptionals.UlNongbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrThroughputUe.IsSet() { - localVarQueryParams.Add("dl_gbr_throughput_ue", parameterToString(localVarOptionals.DlGbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrThroughputUe.IsSet() { - localVarQueryParams.Add("ul_gbr_throughput_ue", parameterToString(localVarOptionals.UlGbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrThroughputUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_throughput_ue", parameterToString(localVarOptionals.DlNongbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrThroughputUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_throughput_ue", parameterToString(localVarOptionals.UlNongbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("dl_gbr_data_volume_ue", parameterToString(localVarOptionals.DlGbrDataVolumeUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("ul_gbr_data_volume_ue", parameterToString(localVarOptionals.UlGbrDataVolumeUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_data_volume_ue", parameterToString(localVarOptionals.DlNongbrDataVolumeUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_data_volume_ue", parameterToString(localVarOptionals.UlNongbrDataVolumeUe.Value(), "")) - } - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json", "application/problem+json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v L2Meas - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 414 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - /* RniApiService Retrieve information on the underlying Mobile Network that the MEC application is associated to Queries information about the Mobile Network @@ -779,199 +415,6 @@ func (a *RniApiService) RabInfoGET(ctx context.Context, localVarOptionals *RabIn return localVarReturnValue, localVarHttpResponse, nil } -/* -RniApiService Retrieve S1-U bearer information related to specific UE(s) -Queries information about the S1 bearer(s) - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param optional nil or *S1BearerInfoGETOpts - Optional Parameters: - * @param "TempUeId" (optional.Interface of []string) - Comma separated list of temporary identifiers allocated for the specific UE as defined in ETSI TS 136 413 - * @param "UeIpv4Address" (optional.Interface of []string) - Comma separated list of IE IPv4 addresses as defined for the type for AssociateId - * @param "UeIpv6Address" (optional.Interface of []string) - Comma separated list of IE IPv6 addresses as defined for the type for AssociateId - * @param "NatedIpAddress" (optional.Interface of []string) - Comma separated list of IE NATed IP addresses as defined for the type for AssociateId - * @param "GtpTeid" (optional.Interface of []string) - Comma separated list of GTP TEID addresses as defined for the type for AssociateId - * @param "CellId" (optional.Interface of []string) - Comma separated list of E-UTRAN Cell Identities - * @param "ErabId" (optional.Interface of []int32) - Comma separated list of E-RAB identifiers - -@return S1BearerInfo -*/ - -type S1BearerInfoGETOpts struct { - TempUeId optional.Interface - UeIpv4Address optional.Interface - UeIpv6Address optional.Interface - NatedIpAddress optional.Interface - GtpTeid optional.Interface - CellId optional.Interface - ErabId optional.Interface -} - -func (a *RniApiService) S1BearerInfoGET(ctx context.Context, localVarOptionals *S1BearerInfoGETOpts) (S1BearerInfo, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue S1BearerInfo - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/queries/s1_bearer_info" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.TempUeId.IsSet() { - localVarQueryParams.Add("temp_ue_id", parameterToString(localVarOptionals.TempUeId.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.UeIpv4Address.IsSet() { - localVarQueryParams.Add("ue_ipv4_address", parameterToString(localVarOptionals.UeIpv4Address.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.UeIpv6Address.IsSet() { - localVarQueryParams.Add("ue_ipv6_address", parameterToString(localVarOptionals.UeIpv6Address.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.NatedIpAddress.IsSet() { - localVarQueryParams.Add("nated_ip_address", parameterToString(localVarOptionals.NatedIpAddress.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.GtpTeid.IsSet() { - localVarQueryParams.Add("gtp_teid", parameterToString(localVarOptionals.GtpTeid.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.CellId.IsSet() { - localVarQueryParams.Add("cell_id", parameterToString(localVarOptionals.CellId.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.ErabId.IsSet() { - localVarQueryParams.Add("erab_id", parameterToString(localVarOptionals.ErabId.Value(), "multi")) - } - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json", "application/problem+json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v S1BearerInfo - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - /* RniApiService Retrieve information on subscriptions for notifications Queries information on subscriptions for notifications diff --git a/go-packages/meep-rnis-client/api_unsupported.go b/go-packages/meep-rnis-client/api_unsupported.go new file mode 100644 index 000000000..50419ec71 --- /dev/null +++ b/go-packages/meep-rnis-client/api_unsupported.go @@ -0,0 +1,599 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Radio Network Information Service REST API + * + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * + * API version: 2.1.1 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package client + +import ( + "context" + "io/ioutil" + "net/http" + "net/url" + "strings" + + "github.com/antihax/optional" +) + +// Linger please +var ( + _ context.Context +) + +type UnsupportedApiService service + +/* +UnsupportedApiService Retrieve information on layer 2 measurements +Queries information about the layer 2 measurements. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *Layer2MeasInfoGETOpts - Optional Parameters: + * @param "AppInsId" (optional.String) - Application instance identifier + * @param "CellId" (optional.Interface of []string) - Comma separated list of E-UTRAN Cell Identities + * @param "UeIpv4Address" (optional.Interface of []string) - Comma separated list of IE IPv4 addresses as defined for the type for AssociateId + * @param "UeIpv6Address" (optional.Interface of []string) - Comma separated list of IE IPv6 addresses as defined for the type for AssociateId + * @param "NatedIpAddress" (optional.Interface of []string) - Comma separated list of IE NATed IP addresses as defined for the type for AssociateId + * @param "GtpTeid" (optional.Interface of []string) - Comma separated list of GTP TEID addresses as defined for the type for AssociateId + * @param "DlGbrPrbUsageCell" (optional.Int32) - PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlGbrPrbUsageCell" (optional.Int32) - PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlNongbrPrbUsageCell" (optional.Int32) - PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlNongbrPrbUsageCell" (optional.Int32) - PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlTotalPrbUsageCell" (optional.Int32) - PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 + * @param "UlTotalPrbUsageCell" (optional.Int32) - PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 + * @param "ReceivedDedicatedPreamblesCell" (optional.Int32) - Received dedicated preambles in percentage as defined in ETSI TS 136 314 + * @param "ReceivedRandomlySelectedPreamblesLowRangeCell" (optional.Int32) - Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 + * @param "ReceivedRandomlySelectedPreamblesHighRangeCell" (optional.Int32) - Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeDlGbrCell" (optional.Int32) - Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeUlGbrCell" (optional.Int32) - Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeDlNongbrCell" (optional.Int32) - Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeUlNongbrCell" (optional.Int32) - Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 + * @param "DlGbrPdrCell" (optional.Int32) - Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlGbrPdrCell" (optional.Int32) - Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlNongbrPdrCell" (optional.Int32) - Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlNongbrPdrCell" (optional.Int32) - Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlGbrDelayUe" (optional.Int32) - Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlGbrDelayUe" (optional.Int32) - Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlNongbrDelayUe" (optional.Int32) - Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlNongbrDelayUe" (optional.Int32) - Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlGbrPdrUe" (optional.Int32) - Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "UlGbrPdrUe" (optional.Int32) - Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "DlNongbrPdrUe" (optional.Int32) - Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "UlNongbrPdrUe" (optional.Int32) - Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "DlGbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlGbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlGbrDataVolumeUe" (optional.Int32) - Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlGbrDataVolumeUe" (optional.Int32) - Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlNongbrDataVolumeUe" (optional.Int32) - Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlNongbrDataVolumeUe" (optional.Int32) - Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 + +@return L2Meas +*/ + +type Layer2MeasInfoGETOpts struct { + AppInsId optional.String + CellId optional.Interface + UeIpv4Address optional.Interface + UeIpv6Address optional.Interface + NatedIpAddress optional.Interface + GtpTeid optional.Interface + DlGbrPrbUsageCell optional.Int32 + UlGbrPrbUsageCell optional.Int32 + DlNongbrPrbUsageCell optional.Int32 + UlNongbrPrbUsageCell optional.Int32 + DlTotalPrbUsageCell optional.Int32 + UlTotalPrbUsageCell optional.Int32 + ReceivedDedicatedPreamblesCell optional.Int32 + ReceivedRandomlySelectedPreamblesLowRangeCell optional.Int32 + ReceivedRandomlySelectedPreamblesHighRangeCell optional.Int32 + NumberOfActiveUeDlGbrCell optional.Int32 + NumberOfActiveUeUlGbrCell optional.Int32 + NumberOfActiveUeDlNongbrCell optional.Int32 + NumberOfActiveUeUlNongbrCell optional.Int32 + DlGbrPdrCell optional.Int32 + UlGbrPdrCell optional.Int32 + DlNongbrPdrCell optional.Int32 + UlNongbrPdrCell optional.Int32 + DlGbrDelayUe optional.Int32 + UlGbrDelayUe optional.Int32 + DlNongbrDelayUe optional.Int32 + UlNongbrDelayUe optional.Int32 + DlGbrPdrUe optional.Int32 + UlGbrPdrUe optional.Int32 + DlNongbrPdrUe optional.Int32 + UlNongbrPdrUe optional.Int32 + DlGbrThroughputUe optional.Int32 + UlGbrThroughputUe optional.Int32 + DlNongbrThroughputUe optional.Int32 + UlNongbrThroughputUe optional.Int32 + DlGbrDataVolumeUe optional.Int32 + UlGbrDataVolumeUe optional.Int32 + DlNongbrDataVolumeUe optional.Int32 + UlNongbrDataVolumeUe optional.Int32 +} + +func (a *UnsupportedApiService) Layer2MeasInfoGET(ctx context.Context, localVarOptionals *Layer2MeasInfoGETOpts) (L2Meas, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue L2Meas + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/queries/layer2_meas" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.AppInsId.IsSet() { + localVarQueryParams.Add("app_ins_id", parameterToString(localVarOptionals.AppInsId.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.CellId.IsSet() { + localVarQueryParams.Add("cell_id", parameterToString(localVarOptionals.CellId.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.UeIpv4Address.IsSet() { + localVarQueryParams.Add("ue_ipv4_address", parameterToString(localVarOptionals.UeIpv4Address.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.UeIpv6Address.IsSet() { + localVarQueryParams.Add("ue_ipv6_address", parameterToString(localVarOptionals.UeIpv6Address.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.NatedIpAddress.IsSet() { + localVarQueryParams.Add("nated_ip_address", parameterToString(localVarOptionals.NatedIpAddress.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.GtpTeid.IsSet() { + localVarQueryParams.Add("gtp_teid", parameterToString(localVarOptionals.GtpTeid.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("dl_gbr_prb_usage_cell", parameterToString(localVarOptionals.DlGbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("ul_gbr_prb_usage_cell", parameterToString(localVarOptionals.UlGbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("dl_nongbr_prb_usage_cell", parameterToString(localVarOptionals.DlNongbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("ul_nongbr_prb_usage_cell", parameterToString(localVarOptionals.UlNongbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlTotalPrbUsageCell.IsSet() { + localVarQueryParams.Add("dl_total_prb_usage_cell", parameterToString(localVarOptionals.DlTotalPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlTotalPrbUsageCell.IsSet() { + localVarQueryParams.Add("ul_total_prb_usage_cell", parameterToString(localVarOptionals.UlTotalPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ReceivedDedicatedPreamblesCell.IsSet() { + localVarQueryParams.Add("received_dedicated_preambles_cell", parameterToString(localVarOptionals.ReceivedDedicatedPreamblesCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.IsSet() { + localVarQueryParams.Add("received_randomly_selected_preambles_low_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.IsSet() { + localVarQueryParams.Add("received_randomly_selected_preambles_high_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlGbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_dl_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlGbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlGbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_ul_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlGbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlNongbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_dl_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlNongbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlNongbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_ul_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlNongbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrPdrCell.IsSet() { + localVarQueryParams.Add("dl_gbr_pdr_cell", parameterToString(localVarOptionals.DlGbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrPdrCell.IsSet() { + localVarQueryParams.Add("ul_gbr_pdr_cell", parameterToString(localVarOptionals.UlGbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrPdrCell.IsSet() { + localVarQueryParams.Add("dl_nongbr_pdr_cell", parameterToString(localVarOptionals.DlNongbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrPdrCell.IsSet() { + localVarQueryParams.Add("ul_nongbr_pdr_cell", parameterToString(localVarOptionals.UlNongbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrDelayUe.IsSet() { + localVarQueryParams.Add("dl_gbr_delay_ue", parameterToString(localVarOptionals.DlGbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrDelayUe.IsSet() { + localVarQueryParams.Add("ul_gbr_delay_ue", parameterToString(localVarOptionals.UlGbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrDelayUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_delay_ue", parameterToString(localVarOptionals.DlNongbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrDelayUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_delay_ue", parameterToString(localVarOptionals.UlNongbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrPdrUe.IsSet() { + localVarQueryParams.Add("dl_gbr_pdr_ue", parameterToString(localVarOptionals.DlGbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrPdrUe.IsSet() { + localVarQueryParams.Add("ul_gbr_pdr_ue", parameterToString(localVarOptionals.UlGbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrPdrUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_pdr_ue", parameterToString(localVarOptionals.DlNongbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrPdrUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_pdr_ue", parameterToString(localVarOptionals.UlNongbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrThroughputUe.IsSet() { + localVarQueryParams.Add("dl_gbr_throughput_ue", parameterToString(localVarOptionals.DlGbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrThroughputUe.IsSet() { + localVarQueryParams.Add("ul_gbr_throughput_ue", parameterToString(localVarOptionals.UlGbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrThroughputUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_throughput_ue", parameterToString(localVarOptionals.DlNongbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrThroughputUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_throughput_ue", parameterToString(localVarOptionals.UlNongbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("dl_gbr_data_volume_ue", parameterToString(localVarOptionals.DlGbrDataVolumeUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("ul_gbr_data_volume_ue", parameterToString(localVarOptionals.UlGbrDataVolumeUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_data_volume_ue", parameterToString(localVarOptionals.DlNongbrDataVolumeUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_data_volume_ue", parameterToString(localVarOptionals.UlNongbrDataVolumeUe.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json", "application/problem+json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v L2Meas + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 414 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +UnsupportedApiService Retrieve S1-U bearer information related to specific UE(s) +Queries information about the S1 bearer(s) + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *S1BearerInfoGETOpts - Optional Parameters: + * @param "TempUeId" (optional.Interface of []string) - Comma separated list of temporary identifiers allocated for the specific UE as defined in ETSI TS 136 413 + * @param "UeIpv4Address" (optional.Interface of []string) - Comma separated list of IE IPv4 addresses as defined for the type for AssociateId + * @param "UeIpv6Address" (optional.Interface of []string) - Comma separated list of IE IPv6 addresses as defined for the type for AssociateId + * @param "NatedIpAddress" (optional.Interface of []string) - Comma separated list of IE NATed IP addresses as defined for the type for AssociateId + * @param "GtpTeid" (optional.Interface of []string) - Comma separated list of GTP TEID addresses as defined for the type for AssociateId + * @param "CellId" (optional.Interface of []string) - Comma separated list of E-UTRAN Cell Identities + * @param "ErabId" (optional.Interface of []int32) - Comma separated list of E-RAB identifiers + +@return S1BearerInfo +*/ + +type S1BearerInfoGETOpts struct { + TempUeId optional.Interface + UeIpv4Address optional.Interface + UeIpv6Address optional.Interface + NatedIpAddress optional.Interface + GtpTeid optional.Interface + CellId optional.Interface + ErabId optional.Interface +} + +func (a *UnsupportedApiService) S1BearerInfoGET(ctx context.Context, localVarOptionals *S1BearerInfoGETOpts) (S1BearerInfo, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue S1BearerInfo + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/queries/s1_bearer_info" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.TempUeId.IsSet() { + localVarQueryParams.Add("temp_ue_id", parameterToString(localVarOptionals.TempUeId.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.UeIpv4Address.IsSet() { + localVarQueryParams.Add("ue_ipv4_address", parameterToString(localVarOptionals.UeIpv4Address.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.UeIpv6Address.IsSet() { + localVarQueryParams.Add("ue_ipv6_address", parameterToString(localVarOptionals.UeIpv6Address.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.NatedIpAddress.IsSet() { + localVarQueryParams.Add("nated_ip_address", parameterToString(localVarOptionals.NatedIpAddress.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.GtpTeid.IsSet() { + localVarQueryParams.Add("gtp_teid", parameterToString(localVarOptionals.GtpTeid.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.CellId.IsSet() { + localVarQueryParams.Add("cell_id", parameterToString(localVarOptionals.CellId.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.ErabId.IsSet() { + localVarQueryParams.Add("erab_id", parameterToString(localVarOptionals.ErabId.Value(), "multi")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json", "application/problem+json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v S1BearerInfo + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} diff --git a/go-packages/meep-rnis-client/client.go b/go-packages/meep-rnis-client/client.go index ed2211100..1278d934c 100644 --- a/go-packages/meep-rnis-client/client.go +++ b/go-packages/meep-rnis-client/client.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -61,6 +61,8 @@ type APIClient struct { // API Services RniApi *RniApiService + + UnsupportedApi *UnsupportedApiService } type service struct { @@ -80,6 +82,7 @@ func NewAPIClient(cfg *Configuration) *APIClient { // API Services c.RniApi = (*RniApiService)(&c.common) + c.UnsupportedApi = (*UnsupportedApiService)(&c.common) return c } diff --git a/go-packages/meep-rnis-client/configuration.go b/go-packages/meep-rnis-client/configuration.go index 3849c98dd..c8874f898 100644 --- a/go-packages/meep-rnis-client/configuration.go +++ b/go-packages/meep-rnis-client/configuration.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/rni/v2", + BasePath: "https://localhost/sandboxname/rni/v2", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-rnis-client/model_associate_id.go b/go-packages/meep-rnis-client/model_associate_id.go index 90ccad2bc..3862f815e 100644 --- a/go-packages/meep-rnis-client/model_associate_id.go +++ b/go-packages/meep-rnis-client/model_associate_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_notification.go b/go-packages/meep-rnis-client/model_ca_reconf_notification.go index f3494e08a..bdc5b1623 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_notification.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go b/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go index cb8096bf4..f5bd05c26 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go b/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go index 02623c61c..a0e4a9da8 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_subscription.go b/go-packages/meep-rnis-client/model_ca_reconf_subscription.go index e6a9fb7ea..7cc9d2196 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_subscription.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go b/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go index eeafb6564..a2a9effaf 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go b/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go index 391d4c498..4df7c75f3 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_notification.go b/go-packages/meep-rnis-client/model_cell_change_notification.go index fd41b5277..051c40fcf 100644 --- a/go-packages/meep-rnis-client/model_cell_change_notification.go +++ b/go-packages/meep-rnis-client/model_cell_change_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go b/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go index 98768b75e..fd18dc35b 100644 --- a/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go +++ b/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_subscription.go b/go-packages/meep-rnis-client/model_cell_change_subscription.go index 4ddf20b8c..2a4821c8b 100644 --- a/go-packages/meep-rnis-client/model_cell_change_subscription.go +++ b/go-packages/meep-rnis-client/model_cell_change_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go b/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go index c4c48f06b..8ad8bf733 100644 --- a/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go +++ b/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ecgi.go b/go-packages/meep-rnis-client/model_ecgi.go index 2bae07673..6ee19f992 100644 --- a/go-packages/meep-rnis-client/model_ecgi.go +++ b/go-packages/meep-rnis-client/model_ecgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_expiry_notification.go b/go-packages/meep-rnis-client/model_expiry_notification.go index 98591342b..f6d4a6f0e 100644 --- a/go-packages/meep-rnis-client/model_expiry_notification.go +++ b/go-packages/meep-rnis-client/model_expiry_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_expiry_notification__links.go b/go-packages/meep-rnis-client/model_expiry_notification__links.go index dc244c304..5149f46dd 100644 --- a/go-packages/meep-rnis-client/model_expiry_notification__links.go +++ b/go-packages/meep-rnis-client/model_expiry_notification__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_inline_notification.go b/go-packages/meep-rnis-client/model_inline_notification.go index e1df2e9ec..7c9c07584 100644 --- a/go-packages/meep-rnis-client/model_inline_notification.go +++ b/go-packages/meep-rnis-client/model_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_l2_meas.go b/go-packages/meep-rnis-client/model_l2_meas.go index 16d1739e9..7fa5c7ac9 100644 --- a/go-packages/meep-rnis-client/model_l2_meas.go +++ b/go-packages/meep-rnis-client/model_l2_meas.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_l2_meas_cell_info.go b/go-packages/meep-rnis-client/model_l2_meas_cell_info.go index 0273b3bf3..0dbedf119 100644 --- a/go-packages/meep-rnis-client/model_l2_meas_cell_info.go +++ b/go-packages/meep-rnis-client/model_l2_meas_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go b/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go index 156e1c2f8..5567cbbcc 100644 --- a/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go +++ b/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_link_type.go b/go-packages/meep-rnis-client/model_link_type.go index 7f5ddc2cc..9ce0f4b58 100644 --- a/go-packages/meep-rnis-client/model_link_type.go +++ b/go-packages/meep-rnis-client/model_link_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go b/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go index 0b0385806..eb25b347f 100644 --- a/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go +++ b/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go index dbdb58eaa..e23a1684f 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go index b0b05d0e2..84c59af3b 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go index 3ba3ce5e4..946661b16 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go index f8bf9c9b2..a35d393ba 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go index 1cd1382e2..ec6bf1393 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go index a5e605ce2..57a021fe1 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go index 6fd4f947f..b71fb6cd6 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go index 9e8365a53..fadf90176 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go index 35c62b9ee..2db4ca2c3 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go index db74d25d9..da90f60f6 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go index 13fd5b457..5cdf9f9a2 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go index 6a59537ce..7da127822 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_ta_notification.go b/go-packages/meep-rnis-client/model_meas_ta_notification.go index 400931022..86f269433 100644 --- a/go-packages/meep-rnis-client/model_meas_ta_notification.go +++ b/go-packages/meep-rnis-client/model_meas_ta_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_ta_subscription.go b/go-packages/meep-rnis-client/model_meas_ta_subscription.go index 8cb836fbb..243cfaedd 100644 --- a/go-packages/meep-rnis-client/model_meas_ta_subscription.go +++ b/go-packages/meep-rnis-client/model_meas_ta_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_n_rcgi.go b/go-packages/meep-rnis-client/model_n_rcgi.go index 40ec3671f..22a81245c 100644 --- a/go-packages/meep-rnis-client/model_n_rcgi.go +++ b/go-packages/meep-rnis-client/model_n_rcgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go index 76d667527..bab8a2ab9 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go index ed5edb226..e5022c2b3 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go index 0a09ca5c3..3ec90c657 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go index b04e9af76..e407ddcac 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go index 1f1966bf0..563db751f 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go index ae7814fe7..807a43661 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go index 84f23e6c6..ca6fda1c1 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go index 79976e26a..e2537180e 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_one_of_inline_notification.go b/go-packages/meep-rnis-client/model_one_of_inline_notification.go index 83f2b1813..0643a9800 100644 --- a/go-packages/meep-rnis-client/model_one_of_inline_notification.go +++ b/go-packages/meep-rnis-client/model_one_of_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_one_of_inline_subscription.go b/go-packages/meep-rnis-client/model_one_of_inline_subscription.go index ce1b490a3..c33ce50d3 100644 --- a/go-packages/meep-rnis-client/model_one_of_inline_subscription.go +++ b/go-packages/meep-rnis-client/model_one_of_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_plmn.go b/go-packages/meep-rnis-client/model_plmn.go index 90e7bc5ed..d457551cf 100644 --- a/go-packages/meep-rnis-client/model_plmn.go +++ b/go-packages/meep-rnis-client/model_plmn.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_plmn_info.go b/go-packages/meep-rnis-client/model_plmn_info.go index b5fda36de..5edcf3beb 100644 --- a/go-packages/meep-rnis-client/model_plmn_info.go +++ b/go-packages/meep-rnis-client/model_plmn_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_problem_details.go b/go-packages/meep-rnis-client/model_problem_details.go index bb376ff2d..e20c06d8f 100644 --- a/go-packages/meep-rnis-client/model_problem_details.go +++ b/go-packages/meep-rnis-client/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification.go b/go-packages/meep-rnis-client/model_rab_est_notification.go index e2180c56b..7247831ac 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go index f2017ab0b..232fd71c0 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go index 22c79d5b8..372681621 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go b/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go index 9457dc06b..5d473bff0 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_subscription.go b/go-packages/meep-rnis-client/model_rab_est_subscription.go index 9da326433..8d3e1c4f4 100644 --- a/go-packages/meep-rnis-client/model_rab_est_subscription.go +++ b/go-packages/meep-rnis-client/model_rab_est_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go b/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go index 90865ae0d..198db021c 100644 --- a/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go +++ b/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info.go b/go-packages/meep-rnis-client/model_rab_info.go index 6e38734ed..8ce8d4b3b 100644 --- a/go-packages/meep-rnis-client/model_rab_info.go +++ b/go-packages/meep-rnis-client/model_rab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go b/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go index 28da6947a..01446b60d 100644 --- a/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go +++ b/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info_erab_info.go b/go-packages/meep-rnis-client/model_rab_info_erab_info.go index 011312ddf..2e2f9f430 100644 --- a/go-packages/meep-rnis-client/model_rab_info_erab_info.go +++ b/go-packages/meep-rnis-client/model_rab_info_erab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info_ue_info.go b/go-packages/meep-rnis-client/model_rab_info_ue_info.go index 3d043129b..6975400f5 100644 --- a/go-packages/meep-rnis-client/model_rab_info_ue_info.go +++ b/go-packages/meep-rnis-client/model_rab_info_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_notification.go b/go-packages/meep-rnis-client/model_rab_mod_notification.go index 97f608443..4358035c6 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_notification.go +++ b/go-packages/meep-rnis-client/model_rab_mod_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go index 913890696..651434594 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go +++ b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go index a63714edf..986816f5a 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go +++ b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_subscription.go b/go-packages/meep-rnis-client/model_rab_mod_subscription.go index df0340772..51c61172e 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_subscription.go +++ b/go-packages/meep-rnis-client/model_rab_mod_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go b/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go index 8fc352432..707e2415a 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go +++ b/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_rel_notification.go b/go-packages/meep-rnis-client/model_rab_rel_notification.go index 5aed305de..50535fd26 100644 --- a/go-packages/meep-rnis-client/model_rab_rel_notification.go +++ b/go-packages/meep-rnis-client/model_rab_rel_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go b/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go index 49bd34b47..c36216600 100644 --- a/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go +++ b/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_rel_subscription.go b/go-packages/meep-rnis-client/model_rab_rel_subscription.go index 67440919c..985a0815a 100644 --- a/go-packages/meep-rnis-client/model_rab_rel_subscription.go +++ b/go-packages/meep-rnis-client/model_rab_rel_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go b/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go index 429970a21..38b0dd158 100644 --- a/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go +++ b/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go index 45b8c2641..0d44f7f62 100644 --- a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go +++ b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go index 50ff35544..6c21c5d9d 100644 --- a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go +++ b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_ssb_index.go b/go-packages/meep-rnis-client/model_results_per_ssb_index.go index d8356641d..01b6af516 100644 --- a/go-packages/meep-rnis-client/model_results_per_ssb_index.go +++ b/go-packages/meep-rnis-client/model_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go b/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go index 7af33bde2..947eb1fcc 100644 --- a/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go +++ b/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go b/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go index 98e69a97e..9d40e635b 100644 --- a/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go +++ b/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rs_index_results.go b/go-packages/meep-rnis-client/model_rs_index_results.go index f425fe30f..37270d5c8 100644 --- a/go-packages/meep-rnis-client/model_rs_index_results.go +++ b/go-packages/meep-rnis-client/model_rs_index_results.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info.go index de3ef0ade..5ca1c0241 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go index d8773fa4e..532aa72cc 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go index 72e46384a..6b96dbe5f 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go index 63ffc1ba6..72d1af6b6 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go index 8251e962d..6a6188251 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_notification.go b/go-packages/meep-rnis-client/model_s1_bearer_notification.go index d250b6852..1e4996b9e 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_notification.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go b/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go index bdc1c77b6..12813ea36 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_subscription.go b/go-packages/meep-rnis-client/model_s1_bearer_subscription.go index d9f920063..48cf0bdb7 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_subscription.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go b/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go index c0a5a8ae1..e2fd70197 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_subscription_link_list.go b/go-packages/meep-rnis-client/model_subscription_link_list.go index 4c57c53f2..e5fc3a41d 100644 --- a/go-packages/meep-rnis-client/model_subscription_link_list.go +++ b/go-packages/meep-rnis-client/model_subscription_link_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_subscription_link_list__links.go b/go-packages/meep-rnis-client/model_subscription_link_list__links.go index 911bbd81f..23aa7a557 100644 --- a/go-packages/meep-rnis-client/model_subscription_link_list__links.go +++ b/go-packages/meep-rnis-client/model_subscription_link_list__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go b/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go index 78ed9498c..8d2ee2a09 100644 --- a/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go +++ b/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_time_stamp.go b/go-packages/meep-rnis-client/model_time_stamp.go index c21e5be03..0cd233519 100644 --- a/go-packages/meep-rnis-client/model_time_stamp.go +++ b/go-packages/meep-rnis-client/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/response.go b/go-packages/meep-rnis-client/response.go index 43db7d680..c26e57480 100644 --- a/go-packages/meep-rnis-client/response.go +++ b/go-packages/meep-rnis-client/response.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-sandbox-ctrl-client/README.md b/go-packages/meep-sandbox-ctrl-client/README.md index f073e8e08..443dc3f64 100644 --- a/go-packages/meep-sandbox-ctrl-client/README.md +++ b/go-packages/meep-sandbox-ctrl-client/README.md @@ -17,7 +17,7 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/go-packages/meep-sandbox-ctrl-client/api/swagger.yaml b/go-packages/meep-sandbox-ctrl-client/api/swagger.yaml index 353327e64..dd047def7 100644 --- a/go-packages/meep-sandbox-ctrl-client/api/swagger.yaml +++ b/go-packages/meep-sandbox-ctrl-client/api/swagger.yaml @@ -14,7 +14,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/sandbox-ctrl/v1" +basePath: "/sandboxname/sandbox-ctrl/v1" tags: - name: "Active Scenario" - name: "Events" diff --git a/go-packages/meep-sandbox-ctrl-client/configuration.go b/go-packages/meep-sandbox-ctrl-client/configuration.go index 19df47eab..ef7afb22a 100644 --- a/go-packages/meep-sandbox-ctrl-client/configuration.go +++ b/go-packages/meep-sandbox-ctrl-client/configuration.go @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/sandbox-ctrl/v1", + BasePath: "https://localhost/sandboxname/sandbox-ctrl/v1", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md b/go-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md index 2bf2de543..7c248d37e 100644 --- a/go-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md +++ b/go-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md @@ -1,6 +1,6 @@ # \ActiveScenarioApi -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md b/go-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md index bd46df33e..0d312502c 100644 --- a/go-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md +++ b/go-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md @@ -1,6 +1,6 @@ # \EventReplayApi -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-sandbox-ctrl-client/docs/EventsApi.md b/go-packages/meep-sandbox-ctrl-client/docs/EventsApi.md index a03c5769a..faeec30bc 100644 --- a/go-packages/meep-sandbox-ctrl-client/docs/EventsApi.md +++ b/go-packages/meep-sandbox-ctrl-client/docs/EventsApi.md @@ -1,6 +1,6 @@ # \EventsApi -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-wais-client/README.md b/go-packages/meep-wais-client/README.md index 0b7481c3d..1ad1a1c1e 100644 --- a/go-packages/meep-wais-client/README.md +++ b/go-packages/meep-wais-client/README.md @@ -1,6 +1,6 @@ # Go API client for client -WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription ## Overview This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. @@ -17,7 +17,7 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/wai/v2* +All URIs are relative to *https://localhost/sandboxname/wai/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/go-packages/meep-wais-client/api_wai.go b/go-packages/meep-wais-client/api_wai.go index 07a6c32e8..c123717e3 100644 --- a/go-packages/meep-wais-client/api_wai.go +++ b/go-packages/meep-wais-client/api_wai.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/client.go b/go-packages/meep-wais-client/client.go index 15a596e47..63d918b2d 100644 --- a/go-packages/meep-wais-client/client.go +++ b/go-packages/meep-wais-client/client.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/configuration.go b/go-packages/meep-wais-client/configuration.go index 4d8ad69ee..9b9080fa1 100644 --- a/go-packages/meep-wais-client/configuration.go +++ b/go-packages/meep-wais-client/configuration.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/wai/v2", + BasePath: "https://localhost/sandboxname/wai/v2", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-wais-client/model_ap_associated.go b/go-packages/meep-wais-client/model_ap_associated.go index ecea38896..413b67fe4 100644 --- a/go-packages/meep-wais-client/model_ap_associated.go +++ b/go-packages/meep-wais-client/model_ap_associated.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_ap_identity.go b/go-packages/meep-wais-client/model_ap_identity.go index 191a6c5cc..425ceb20b 100644 --- a/go-packages/meep-wais-client/model_ap_identity.go +++ b/go-packages/meep-wais-client/model_ap_identity.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_ap_info.go b/go-packages/meep-wais-client/model_ap_info.go index 4020a65f9..07bd580ff 100644 --- a/go-packages/meep-wais-client/model_ap_info.go +++ b/go-packages/meep-wais-client/model_ap_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_ap_location.go b/go-packages/meep-wais-client/model_ap_location.go index a77c38f6c..4805b4581 100644 --- a/go-packages/meep-wais-client/model_ap_location.go +++ b/go-packages/meep-wais-client/model_ap_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_assoc_sta_notification.go b/go-packages/meep-wais-client/model_assoc_sta_notification.go index 14c3b642e..21b34b23e 100644 --- a/go-packages/meep-wais-client/model_assoc_sta_notification.go +++ b/go-packages/meep-wais-client/model_assoc_sta_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_assoc_sta_subscription.go b/go-packages/meep-wais-client/model_assoc_sta_subscription.go index c026b66e8..067d88eb3 100644 --- a/go-packages/meep-wais-client/model_assoc_sta_subscription.go +++ b/go-packages/meep-wais-client/model_assoc_sta_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_assoc_sta_subscription__links.go b/go-packages/meep-wais-client/model_assoc_sta_subscription__links.go index ba9981ba8..69b3519c0 100644 --- a/go-packages/meep-wais-client/model_assoc_sta_subscription__links.go +++ b/go-packages/meep-wais-client/model_assoc_sta_subscription__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_associated_stations.go b/go-packages/meep-wais-client/model_associated_stations.go index 539e38059..a04209c89 100644 --- a/go-packages/meep-wais-client/model_associated_stations.go +++ b/go-packages/meep-wais-client/model_associated_stations.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_beacon_report.go b/go-packages/meep-wais-client/model_beacon_report.go index 6c08164d5..36a77a909 100644 --- a/go-packages/meep-wais-client/model_beacon_report.go +++ b/go-packages/meep-wais-client/model_beacon_report.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_beacon_request_config.go b/go-packages/meep-wais-client/model_beacon_request_config.go index ffcbbebed..43b24ab45 100644 --- a/go-packages/meep-wais-client/model_beacon_request_config.go +++ b/go-packages/meep-wais-client/model_beacon_request_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_bss_load.go b/go-packages/meep-wais-client/model_bss_load.go index e928b0421..092dc7ef4 100644 --- a/go-packages/meep-wais-client/model_bss_load.go +++ b/go-packages/meep-wais-client/model_bss_load.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_channel_load_config.go b/go-packages/meep-wais-client/model_channel_load_config.go index 247db3c9e..9ba691ca4 100644 --- a/go-packages/meep-wais-client/model_channel_load_config.go +++ b/go-packages/meep-wais-client/model_channel_load_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_civic_location.go b/go-packages/meep-wais-client/model_civic_location.go index 3d0d38bb8..16eaef177 100644 --- a/go-packages/meep-wais-client/model_civic_location.go +++ b/go-packages/meep-wais-client/model_civic_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_dmg_capabilities.go b/go-packages/meep-wais-client/model_dmg_capabilities.go index d78c7fd0e..480d480a8 100644 --- a/go-packages/meep-wais-client/model_dmg_capabilities.go +++ b/go-packages/meep-wais-client/model_dmg_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_edmg_capabilities.go b/go-packages/meep-wais-client/model_edmg_capabilities.go index 09a24309a..a2c04958f 100644 --- a/go-packages/meep-wais-client/model_edmg_capabilities.go +++ b/go-packages/meep-wais-client/model_edmg_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_ext_bss_load.go b/go-packages/meep-wais-client/model_ext_bss_load.go index 3136376db..19d31e805 100644 --- a/go-packages/meep-wais-client/model_ext_bss_load.go +++ b/go-packages/meep-wais-client/model_ext_bss_load.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_geo_location.go b/go-packages/meep-wais-client/model_geo_location.go index 8c0839296..0f108e7a3 100644 --- a/go-packages/meep-wais-client/model_geo_location.go +++ b/go-packages/meep-wais-client/model_geo_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_he_capabilities.go b/go-packages/meep-wais-client/model_he_capabilities.go index cb8bddf3d..a0592dd82 100644 --- a/go-packages/meep-wais-client/model_he_capabilities.go +++ b/go-packages/meep-wais-client/model_he_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_ht_capabilities.go b/go-packages/meep-wais-client/model_ht_capabilities.go index 7476fb47c..b699a9d59 100644 --- a/go-packages/meep-wais-client/model_ht_capabilities.go +++ b/go-packages/meep-wais-client/model_ht_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_inline_notification.go b/go-packages/meep-wais-client/model_inline_notification.go index f98ec8289..9835566b6 100644 --- a/go-packages/meep-wais-client/model_inline_notification.go +++ b/go-packages/meep-wais-client/model_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_link_type.go b/go-packages/meep-wais-client/model_link_type.go index f02bf6e97..eef5ffebd 100644 --- a/go-packages/meep-wais-client/model_link_type.go +++ b/go-packages/meep-wais-client/model_link_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_measurement_config.go b/go-packages/meep-wais-client/model_measurement_config.go index d932ac6ae..a321da3f9 100644 --- a/go-packages/meep-wais-client/model_measurement_config.go +++ b/go-packages/meep-wais-client/model_measurement_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_neighbor_report.go b/go-packages/meep-wais-client/model_neighbor_report.go index b12895b11..ea05e4d53 100644 --- a/go-packages/meep-wais-client/model_neighbor_report.go +++ b/go-packages/meep-wais-client/model_neighbor_report.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_one_of_inline_notification.go b/go-packages/meep-wais-client/model_one_of_inline_notification.go index f49a4a161..18efb1748 100644 --- a/go-packages/meep-wais-client/model_one_of_inline_notification.go +++ b/go-packages/meep-wais-client/model_one_of_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_one_of_inline_subscription.go b/go-packages/meep-wais-client/model_one_of_inline_subscription.go index e213130de..66d36dfba 100644 --- a/go-packages/meep-wais-client/model_one_of_inline_subscription.go +++ b/go-packages/meep-wais-client/model_one_of_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_problem_details.go b/go-packages/meep-wais-client/model_problem_details.go index 26c98fafd..d84f3fb00 100644 --- a/go-packages/meep-wais-client/model_problem_details.go +++ b/go-packages/meep-wais-client/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_rssi.go b/go-packages/meep-wais-client/model_rssi.go index 15ccff259..951e84d4f 100644 --- a/go-packages/meep-wais-client/model_rssi.go +++ b/go-packages/meep-wais-client/model_rssi.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_data_rate.go b/go-packages/meep-wais-client/model_sta_data_rate.go index 374625d83..3db6f98a2 100644 --- a/go-packages/meep-wais-client/model_sta_data_rate.go +++ b/go-packages/meep-wais-client/model_sta_data_rate.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_data_rate_notification.go b/go-packages/meep-wais-client/model_sta_data_rate_notification.go index efdf9888f..73111c320 100644 --- a/go-packages/meep-wais-client/model_sta_data_rate_notification.go +++ b/go-packages/meep-wais-client/model_sta_data_rate_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_data_rate_subscription.go b/go-packages/meep-wais-client/model_sta_data_rate_subscription.go index 19c1832b8..29a4bceb9 100644 --- a/go-packages/meep-wais-client/model_sta_data_rate_subscription.go +++ b/go-packages/meep-wais-client/model_sta_data_rate_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_identity.go b/go-packages/meep-wais-client/model_sta_identity.go index eaf9bb154..1b9b3045e 100644 --- a/go-packages/meep-wais-client/model_sta_identity.go +++ b/go-packages/meep-wais-client/model_sta_identity.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_info.go b/go-packages/meep-wais-client/model_sta_info.go index 0b5e0888d..442141927 100644 --- a/go-packages/meep-wais-client/model_sta_info.go +++ b/go-packages/meep-wais-client/model_sta_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_statistics.go b/go-packages/meep-wais-client/model_sta_statistics.go index 0159b04b4..d9393eb33 100644 --- a/go-packages/meep-wais-client/model_sta_statistics.go +++ b/go-packages/meep-wais-client/model_sta_statistics.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_sta_statistics_config.go b/go-packages/meep-wais-client/model_sta_statistics_config.go index 842b16d7f..46e992be4 100644 --- a/go-packages/meep-wais-client/model_sta_statistics_config.go +++ b/go-packages/meep-wais-client/model_sta_statistics_config.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_statistics_group_data.go b/go-packages/meep-wais-client/model_statistics_group_data.go index 31309c5bd..1f7540158 100644 --- a/go-packages/meep-wais-client/model_statistics_group_data.go +++ b/go-packages/meep-wais-client/model_statistics_group_data.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_subscription_link_list.go b/go-packages/meep-wais-client/model_subscription_link_list.go index bd62f1495..22109d8c0 100644 --- a/go-packages/meep-wais-client/model_subscription_link_list.go +++ b/go-packages/meep-wais-client/model_subscription_link_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_subscription_link_list__links.go b/go-packages/meep-wais-client/model_subscription_link_list__links.go index 94fc24498..fbee02fec 100644 --- a/go-packages/meep-wais-client/model_subscription_link_list__links.go +++ b/go-packages/meep-wais-client/model_subscription_link_list__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_time_stamp.go b/go-packages/meep-wais-client/model_time_stamp.go index 1928eed90..dc4847116 100644 --- a/go-packages/meep-wais-client/model_time_stamp.go +++ b/go-packages/meep-wais-client/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_vht_capabilities.go b/go-packages/meep-wais-client/model_vht_capabilities.go index 885433c17..b5dfff757 100644 --- a/go-packages/meep-wais-client/model_vht_capabilities.go +++ b/go-packages/meep-wais-client/model_vht_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_wan_metrics.go b/go-packages/meep-wais-client/model_wan_metrics.go index a3db2985a..2ba46599b 100644 --- a/go-packages/meep-wais-client/model_wan_metrics.go +++ b/go-packages/meep-wais-client/model_wan_metrics.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/model_wlan_capabilities.go b/go-packages/meep-wais-client/model_wlan_capabilities.go index b3dfb6bf1..630912931 100644 --- a/go-packages/meep-wais-client/model_wlan_capabilities.go +++ b/go-packages/meep-wais-client/model_wlan_capabilities.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-wais-client/response.go b/go-packages/meep-wais-client/response.go index 8438a7861..2cf1b9fe8 100644 --- a/go-packages/meep-wais-client/response.go +++ b/go-packages/meep-wais-client/response.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/js-packages/meep-gis-engine-client/README.md b/js-packages/meep-gis-engine-client/README.md index 30a51b403..0b9f71376 100644 --- a/js-packages/meep-gis-engine-client/README.md +++ b/js-packages/meep-gis-engine-client/README.md @@ -110,7 +110,7 @@ api.getAutomationState(callback); ## Documentation for API Endpoints -All URIs are relative to *https://localhost/gis/v1* +All URIs are relative to *https://localhost/sandboxname/gis/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/js-packages/meep-gis-engine-client/docs/AutomationApi.md b/js-packages/meep-gis-engine-client/docs/AutomationApi.md index 4b630f757..137233fd8 100644 --- a/js-packages/meep-gis-engine-client/docs/AutomationApi.md +++ b/js-packages/meep-gis-engine-client/docs/AutomationApi.md @@ -1,6 +1,6 @@ # AdvantEdgeGisEngineRestApi.AutomationApi -All URIs are relative to *https://localhost/gis/v1* +All URIs are relative to *https://localhost/sandboxname/gis/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-gis-engine-client/docs/GeospatialDataApi.md b/js-packages/meep-gis-engine-client/docs/GeospatialDataApi.md index 82d115821..1302de239 100644 --- a/js-packages/meep-gis-engine-client/docs/GeospatialDataApi.md +++ b/js-packages/meep-gis-engine-client/docs/GeospatialDataApi.md @@ -1,6 +1,6 @@ # AdvantEdgeGisEngineRestApi.GeospatialDataApi -All URIs are relative to *https://localhost/gis/v1* +All URIs are relative to *https://localhost/sandboxname/gis/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-gis-engine-client/src/ApiClient.js b/js-packages/meep-gis-engine-client/src/ApiClient.js index 838abf02b..6ee0a64ed 100644 --- a/js-packages/meep-gis-engine-client/src/ApiClient.js +++ b/js-packages/meep-gis-engine-client/src/ApiClient.js @@ -61,9 +61,9 @@ /** * The base URL against which to resolve every API call's (relative) path. * @type {String} - * @default https://localhost/gis/v1 + * @default https://localhost/sandboxname/gis/v1 */ - this.basePath = 'https://localhost/gis/v1'.replace(/\/+$/, ''); + this.basePath = 'https://localhost/sandboxname/gis/v1'.replace(/\/+$/, ''); /** * The authentication methods to be included for all API calls. diff --git a/js-packages/meep-metrics-engine-client/README.md b/js-packages/meep-metrics-engine-client/README.md index fec053bd1..ee50cc812 100644 --- a/js-packages/meep-metrics-engine-client/README.md +++ b/js-packages/meep-metrics-engine-client/README.md @@ -113,7 +113,7 @@ api.postEventQuery(params, callback); ## Documentation for API Endpoints -All URIs are relative to *https://localhost/metrics/v2* +All URIs are relative to *https://localhost/sandboxname/metrics/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/js-packages/meep-metrics-engine-client/docs/MetricsApi.md b/js-packages/meep-metrics-engine-client/docs/MetricsApi.md index 3275659cb..5cd49558d 100644 --- a/js-packages/meep-metrics-engine-client/docs/MetricsApi.md +++ b/js-packages/meep-metrics-engine-client/docs/MetricsApi.md @@ -1,6 +1,6 @@ # AdvantEdgeMetricsServiceRestApi.MetricsApi -All URIs are relative to *https://localhost/metrics/v2* +All URIs are relative to *https://localhost/sandboxname/metrics/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-metrics-engine-client/docs/SubscriptionsApi.md b/js-packages/meep-metrics-engine-client/docs/SubscriptionsApi.md index 89ac8f30e..123f1380a 100644 --- a/js-packages/meep-metrics-engine-client/docs/SubscriptionsApi.md +++ b/js-packages/meep-metrics-engine-client/docs/SubscriptionsApi.md @@ -1,6 +1,6 @@ # AdvantEdgeMetricsServiceRestApi.SubscriptionsApi -All URIs are relative to *https://localhost/metrics/v2* +All URIs are relative to *https://localhost/sandboxname/metrics/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-metrics-engine-client/src/ApiClient.js b/js-packages/meep-metrics-engine-client/src/ApiClient.js index dc7275e04..69a8b9765 100644 --- a/js-packages/meep-metrics-engine-client/src/ApiClient.js +++ b/js-packages/meep-metrics-engine-client/src/ApiClient.js @@ -61,9 +61,9 @@ /** * The base URL against which to resolve every API call's (relative) path. * @type {String} - * @default https://localhost/metrics/v2 + * @default https://localhost/sandboxname/metrics/v2 */ - this.basePath = 'https://localhost/metrics/v2'.replace(/\/+$/, ''); + this.basePath = 'https://localhost/sandboxname/metrics/v2'.replace(/\/+$/, ''); /** * The authentication methods to be included for all API calls. diff --git a/js-packages/meep-sandbox-ctrl-client/README.md b/js-packages/meep-sandbox-ctrl-client/README.md index 68913cf15..b73c9567c 100644 --- a/js-packages/meep-sandbox-ctrl-client/README.md +++ b/js-packages/meep-sandbox-ctrl-client/README.md @@ -116,7 +116,7 @@ api.activateScenario(name, opts, callback); ## Documentation for API Endpoints -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/js-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md b/js-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md index 2cb4be82b..c1766ce1c 100644 --- a/js-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md +++ b/js-packages/meep-sandbox-ctrl-client/docs/ActiveScenarioApi.md @@ -1,6 +1,6 @@ # AdvantEdgeSandboxControllerRestApi.ActiveScenarioApi -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md b/js-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md index eba44a2fe..f3fac7e08 100644 --- a/js-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md +++ b/js-packages/meep-sandbox-ctrl-client/docs/EventReplayApi.md @@ -1,6 +1,6 @@ # AdvantEdgeSandboxControllerRestApi.EventReplayApi -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-sandbox-ctrl-client/docs/EventsApi.md b/js-packages/meep-sandbox-ctrl-client/docs/EventsApi.md index 4e0ebeffb..02b8a598d 100644 --- a/js-packages/meep-sandbox-ctrl-client/docs/EventsApi.md +++ b/js-packages/meep-sandbox-ctrl-client/docs/EventsApi.md @@ -1,6 +1,6 @@ # AdvantEdgeSandboxControllerRestApi.EventsApi -All URIs are relative to *https://localhost/sandbox-ctrl/v1* +All URIs are relative to *https://localhost/sandboxname/sandbox-ctrl/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/js-packages/meep-sandbox-ctrl-client/src/ApiClient.js b/js-packages/meep-sandbox-ctrl-client/src/ApiClient.js index a60031335..08d9c86f8 100644 --- a/js-packages/meep-sandbox-ctrl-client/src/ApiClient.js +++ b/js-packages/meep-sandbox-ctrl-client/src/ApiClient.js @@ -61,9 +61,9 @@ /** * The base URL against which to resolve every API call's (relative) path. * @type {String} - * @default https://localhost/sandbox-ctrl/v1 + * @default https://localhost/sandboxname/sandbox-ctrl/v1 */ - this.basePath = 'https://localhost/sandbox-ctrl/v1'.replace(/\/+$/, ''); + this.basePath = 'https://localhost/sandboxname/sandbox-ctrl/v1'.replace(/\/+$/, ''); /** * The authentication methods to be included for all API calls. -- GitLab From a0eb351c4bd208a98b604d55e617275a3a0cba06 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Wed, 20 Jan 2021 20:23:46 -0500 Subject: [PATCH 019/194] meas rep ue and nr meas rep ue --- go-apps/meep-rnis/sbi/rnis-sbi.go | 122 +++- go-apps/meep-rnis/server/convert.go | 66 ++ go-apps/meep-rnis/server/rnis.go | 985 ++++++++++++++++++++++++-- go-apps/meep-rnis/server/rnis_test.go | 537 +++++++++++++- test/system/rnis-system-test.yaml | 31 + test/system/rnis_test.go | 513 +++++++++++++- 6 files changed, 2175 insertions(+), 79 deletions(-) diff --git a/go-apps/meep-rnis/sbi/rnis-sbi.go b/go-apps/meep-rnis/sbi/rnis-sbi.go index 3830fc2b3..974a0ed47 100755 --- a/go-apps/meep-rnis/sbi/rnis-sbi.go +++ b/go-apps/meep-rnis/sbi/rnis-sbi.go @@ -31,7 +31,9 @@ const moduleName string = "meep-rnis-sbi" type SbiCfg struct { SandboxName string RedisAddr string - UeDataCb func(string, string, string, string, bool) + UeDataCb func(string, string, string, string, string, bool) + MeasInfoCb func(string, string, []string, []int32, []int32) + PoaInfoCb func(string, string, string, string, string) AppEcgiInfoCb func(string, string, string, string) DomainDataCb func(string, string, string, string) ScenarioNameCb func(string) @@ -45,7 +47,9 @@ type RnisSbi struct { activeModel *mod.Model gisCache *gc.GisCache refreshTicker *time.Ticker - updateUeDataCB func(string, string, string, string, bool) + updateUeDataCB func(string, string, string, string, string, bool) + updateMeasInfoCB func(string, string, []string, []int32, []int32) + updatePoaInfoCB func(string, string, string, string, string) updateAppEcgiInfoCB func(string, string, string, string) updateDomainDataCB func(string, string, string, string) updateScenarioNameCB func(string) @@ -64,6 +68,8 @@ func Init(cfg SbiCfg) (err error) { sbi = new(RnisSbi) sbi.sandboxName = cfg.SandboxName sbi.updateUeDataCB = cfg.UeDataCb + sbi.updateMeasInfoCB = cfg.MeasInfoCb + sbi.updatePoaInfoCB = cfg.PoaInfoCb sbi.updateAppEcgiInfoCB = cfg.AppEcgiInfoCb sbi.updateDomainDataCB = cfg.DomainDataCb sbi.updateScenarioNameCB = cfg.ScenarioNameCb @@ -234,6 +240,7 @@ func processActiveScenarioUpdate() { mnc := "" mcc := "" cellId := "" + nrcellId := "" erabIdValid := false if domain.CellularDomainConfig != nil { mnc = domain.CellularDomainConfig.Mnc @@ -242,26 +249,28 @@ func processActiveScenarioUpdate() { } switch poa.Type_ { case mod.NodeTypePoa4G: + //using the default cellId if no poa4GConfig is set if poa.Poa4GConfig != nil { if poa.Poa4GConfig.CellId != "" { cellId = poa.Poa4GConfig.CellId } } erabIdValid = true - /*no support for RNIS on 5G elements anymore + /*no support for RNIS on 5G elements anymore, but need the info for meas_rep_ue*/ case mod.NodeTypePoa5G: + //clearing the cellId filled by the domain since it does not apply to 5G elements + cellId = "" if poa.Poa5GConfig != nil { if poa.Poa5GConfig.CellId != "" { - cellId = poa.Poa5GConfig.CellId + nrcellId = poa.Poa5GConfig.CellId } } - */ default: //empty cells for POAs not supporting RNIS cellId = "" } - sbi.updateUeDataCB(name, mnc, mcc, cellId, erabIdValid) + sbi.updateUeDataCB(name, mnc, mcc, cellId, nrcellId, erabIdValid) } } } @@ -277,7 +286,7 @@ func processActiveScenarioUpdate() { } } if !found { - sbi.updateUeDataCB(prevUeName, "", "", "", false) + sbi.updateUeDataCB(prevUeName, "", "", "", "", false) log.Info("Ue removed : ", prevUeName) } } @@ -355,26 +364,91 @@ func processActiveScenarioUpdate() { log.Info("App removed : ", prevApp) } } + + // Update POA Cellular and Wifi info + poaTypeList := [4]string{mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi, mod.NodeTypePoa} + for _, poaType := range poaTypeList { + + poaNameList := sbi.activeModel.GetNodeNames(poaType) + for _, name := range poaNameList { + node := sbi.activeModel.GetNode(name) + if node != nil { + nl := node.(*dataModel.NetworkLocation) + + mnc := "" + mcc := "" + cellId := "" + + switch poaType { + case mod.NodeTypePoa4G, mod.NodeTypePoa5G: + poaParent := sbi.activeModel.GetNodeParent(name) + if zone, ok := poaParent.(*dataModel.Zone); ok { + zoneParent := sbi.activeModel.GetNodeParent(zone.Name) + if domain, ok := zoneParent.(*dataModel.Domain); ok { + if domain.CellularDomainConfig != nil { + mnc = domain.CellularDomainConfig.Mnc + mcc = domain.CellularDomainConfig.Mcc + cellId = domain.CellularDomainConfig.DefaultCellId + } + } + } + if nl.Poa4GConfig != nil { + cellId = nl.Poa4GConfig.CellId + } else { + if nl.Poa5GConfig != nil { + cellId = nl.Poa5GConfig.CellId + } + } + + sbi.updatePoaInfoCB(name, poaType, mnc, mcc, cellId) + } + } + } + } } func refreshMeasurements() { - // // Update UE measurements - // ueMeasMap, _ := sbi.gisCache.GetAllMeasurements() - // ueNameList := sbi.activeModel.GetNodeNames("UE") - // for _, name := range ueNameList { - // // Ignore disconnected UEs - // if !isUeConnected(name) { - // continue - // } - - // // TODO - Update RSRP & RSRQ in RNIS - // if ueMeas, found := ueMeasMap[name]; found { - // log.Debug("UE Measurements for ", name, ":") - // for poaName, meas := range ueMeas.Measurements { - // log.Debug(" ", poaName, ": ", fmt.Sprintf("%+v", *meas)) - // } - // } - // } + // Update UE measurements + ueMeasMap, _ := sbi.gisCache.GetAllMeasurements() + ueNameList := sbi.activeModel.GetNodeNames("UE") + for _, name := range ueNameList { + // Ignore disconnected UEs + if !isUeConnected(name) { + sbi.updateMeasInfoCB(name, "", nil, nil, nil) + continue + } + + ueParent := sbi.activeModel.GetNodeParent(name) + if poa, ok := ueParent.(*dataModel.NetworkLocation); ok { + poaNames, rsrps, rsrqs := getMeas(name, "", ueMeasMap) + sbi.updateMeasInfoCB(name, poa.Name, poaNames, rsrps, rsrqs) + } else { + sbi.updateMeasInfoCB(name, "", nil, nil, nil) + } + } +} + +func getMeas(ue string, poaName string, ueMeasMap map[string]*gc.UeMeasurement) ([]string, []int32, []int32) { + var poaNames []string + var rsrps []int32 + var rsrqs []int32 + + if ueMeas, ueFound := ueMeasMap[ue]; ueFound { + if poaName == "" { + for poaName, meas := range ueMeas.Measurements { + poaNames = append(poaNames, poaName) + rsrps = append(rsrps, int32(meas.Rsrp)) + rsrqs = append(rsrqs, int32(meas.Rsrq)) + } + } else { + if meas, poaFound := ueMeas.Measurements[poaName]; poaFound { + poaNames = append(poaNames, poaName) + rsrps = append(rsrps, int32(meas.Rsrp)) + rsrqs = append(rsrqs, int32(meas.Rsrq)) + } + } + } + return poaNames, rsrps, rsrqs } func isUeConnected(name string) bool { diff --git a/go-apps/meep-rnis/server/convert.go b/go-apps/meep-rnis/server/convert.go index 6db761b53..8417ff17f 100755 --- a/go-apps/meep-rnis/server/convert.go +++ b/go-apps/meep-rnis/server/convert.go @@ -44,6 +44,28 @@ func convertEcgiToJson(obj *Ecgi) string { return string(jsonInfo) } +func convertJsonToPoaInfo(jsonInfo string) *PoaInfo { + + var obj PoaInfo + err := json.Unmarshal([]byte(jsonInfo), &obj) + if err != nil { + log.Error(err.Error()) + return nil + } + return &obj +} + +func convertPoaInfoToJson(obj *PoaInfo) string { + + jsonInfo, err := json.Marshal(*obj) + if err != nil { + log.Error(err.Error()) + return "" + } + + return string(jsonInfo) +} + func convertJsonToUeData(jsonData string) *UeData { var obj UeData @@ -176,3 +198,47 @@ func convertRabRelSubscriptionToJson(obj *RabRelSubscription) string { return string(jsonInfo) } + +func convertJsonToMeasRepUeSubscription(jsonInfo string) *MeasRepUeSubscription { + + var obj MeasRepUeSubscription + err := json.Unmarshal([]byte(jsonInfo), &obj) + if err != nil { + log.Error(err.Error()) + return nil + } + return &obj +} + +func convertMeasRepUeSubscriptionToJson(obj *MeasRepUeSubscription) string { + + jsonInfo, err := json.Marshal(*obj) + if err != nil { + log.Error(err.Error()) + return "" + } + + return string(jsonInfo) +} + +func convertJsonToNrMeasRepUeSubscription(jsonInfo string) *NrMeasRepUeSubscription { + + var obj NrMeasRepUeSubscription + err := json.Unmarshal([]byte(jsonInfo), &obj) + if err != nil { + log.Error(err.Error()) + return nil + } + return &obj +} + +func convertNrMeasRepUeSubscriptionToJson(obj *NrMeasRepUeSubscription) string { + + jsonInfo, err := json.Marshal(*obj) + if err != nil { + log.Error(err.Error()) + return "" + } + + return string(jsonInfo) +} diff --git a/go-apps/meep-rnis/server/rnis.go b/go-apps/meep-rnis/server/rnis.go index 33d9f9a6e..55621fe3f 100644 --- a/go-apps/meep-rnis/server/rnis.go +++ b/go-apps/meep-rnis/server/rnis.go @@ -51,19 +51,29 @@ var influxAddr string = "http://meep-influxdb.default.svc.cluster.local:8086" const cellChangeSubscriptionType = "cell_change" const rabEstSubscriptionType = "rab_est" const rabRelSubscriptionType = "rab_rel" +const measRepUeSubscriptionType = "meas_rep_ue" +const nrMeasRepUeSubscriptionType = "nr_meas_rep_ue" +const poaType4G = "POA-4G" +const poaType5G = "POA-5G" var ccSubscriptionMap = map[int]*CellChangeSubscription{} var reSubscriptionMap = map[int]*RabEstSubscription{} var rrSubscriptionMap = map[int]*RabRelSubscription{} +var mrSubscriptionMap = map[int]*MeasRepUeSubscription{} +var nrMrSubscriptionMap = map[int]*NrMeasRepUeSubscription{} var subscriptionExpiryMap = map[int][]int{} var currentStoreName = "" const CELL_CHANGE_SUBSCRIPTION = "CellChangeSubscription" const RAB_EST_SUBSCRIPTION = "RabEstSubscription" const RAB_REL_SUBSCRIPTION = "RabRelSubscription" +const MEAS_REP_UE_SUBSCRIPTION = "MeasRepUeSubscription" +const NR_MEAS_REP_UE_SUBSCRIPTION = "NrMeasRepUeSubscription" const CELL_CHANGE_NOTIFICATION = "CellChangeNotification" const RAB_EST_NOTIFICATION = "RabEstNotification" const RAB_REL_NOTIFICATION = "RabRelNotification" +const MEAS_REP_UE_NOTIFICATION = "MeasRepUeNotification" +const NR_MEAS_REP_UE_NOTIFICATION = "NrMeasRepUeNotification" var RNIS_DB = 5 @@ -77,6 +87,11 @@ var mutex sync.Mutex var expiryTicker *time.Ticker +var periodicTriggerTicker *time.Ticker +var periodicNrTriggerTicker *time.Ticker +var periodicTriggerIntervals = 1 +var periodicNrTriggerIntervals = 1 + var nextSubscriptionIdAvailable int var nextAvailableErabId int @@ -91,10 +106,25 @@ type RabInfoData struct { } type UeData struct { - Name string `json:"name"` - ErabId int32 `json:"erabId"` - Ecgi *Ecgi `json:"ecgi"` - Qci int32 `json:"qci"` + Name string `json:"name"` + ErabId int32 `json:"erabId"` + Ecgi *Ecgi `json:"ecgi"` + Nrcgi *NRcgi `json:"nrcgi"` + Qci int32 `json:"qci"` + ParentPoaName string `json:"parentPoaName"` + InRangePoas []InRangePoa `json:"inRangePoas"` +} + +type InRangePoa struct { + Name string `json:"name"` + Rsrp int32 `json:"rsrp"` + Rsrq int32 `json:"rsrq"` +} + +type PoaInfo struct { + Type string `json:"type"` + Ecgi Ecgi `json:"ecgi"` + Nrcgi NRcgi `json:"nrcgi"` } type DomainData struct { @@ -170,11 +200,27 @@ func Init() (err error) { } }() + periodicTriggerTicker = time.NewTicker(time.Duration(periodicTriggerIntervals) * time.Second) + go func() { + for range periodicTriggerTicker.C { + checkMrPeriodicTrigger(int32(TRIGGER_PERIODICAL_REPORT_STRONGEST_CELLS)) + } + }() + + periodicNrTriggerTicker = time.NewTicker(time.Duration(periodicNrTriggerIntervals) * time.Second) + go func() { + for range periodicNrTriggerTicker.C { + checkNrMrPeriodicTrigger(int32(TRIGGER_NR_NR_PERIODICAL)) + } + }() + // Initialize SBI sbiCfg := sbi.SbiCfg{ SandboxName: sandboxName, RedisAddr: redisAddr, UeDataCb: updateUeData, + MeasInfoCb: updateMeasInfo, + PoaInfoCb: updatePoaInfo, AppEcgiInfoCb: updateAppEcgiInfo, DomainDataCb: updateDomainData, ScenarioNameCb: updateStoreName, @@ -200,6 +246,9 @@ func reInit() { _ = rc.ForEachJSONEntry(keyName, repopulateCcSubscriptionMap, nil) _ = rc.ForEachJSONEntry(keyName, repopulateReSubscriptionMap, nil) _ = rc.ForEachJSONEntry(keyName, repopulateRrSubscriptionMap, nil) + _ = rc.ForEachJSONEntry(keyName, repopulateMrSubscriptionMap, nil) + _ = rc.ForEachJSONEntry(keyName, repopulateNrMrSubscriptionMap, nil) + } // Run - Start RNIS @@ -212,7 +261,7 @@ func Stop() (err error) { return sbi.Stop() } -func updateUeData(name string, mnc string, mcc string, cellId string, erabIdValid bool) { +func updateUeData(name string, mnc string, mcc string, cellId string, nrcellId string, erabIdValid bool) { var plmn Plmn var newEcgi Ecgi @@ -221,8 +270,13 @@ func updateUeData(name string, mnc string, mcc string, cellId string, erabIdVali newEcgi.CellId = cellId newEcgi.Plmn = &plmn + var newNrcgi NRcgi + newNrcgi.NrcellId = nrcellId + newNrcgi.Plmn = &plmn + var ueData UeData ueData.Ecgi = &newEcgi + ueData.Nrcgi = &newNrcgi ueData.Name = name ueData.Qci = defaultSupportedQci //only supporting one value @@ -231,6 +285,9 @@ func updateUeData(name string, mnc string, mcc string, cellId string, erabIdVali oldPlmnMcc := "" oldCellId := "" var oldErabId int32 = -1 + oldNrPlmnMnc := "" + oldNrPlmnMcc := "" + oldNrCellId := "" //get from DB jsonUeData, _ := rc.JSONGetEntry(baseKey+"UE:"+name, ".") @@ -245,9 +302,15 @@ func updateUeData(name string, mnc string, mcc string, cellId string, erabIdVali oldCellId = ueDataObj.Ecgi.CellId oldErabId = ueDataObj.ErabId } + if ueDataObj.Nrcgi != nil { + oldNrPlmnMnc = ueDataObj.Nrcgi.Plmn.Mnc + oldNrPlmnMcc = ueDataObj.Nrcgi.Plmn.Mcc + oldNrCellId = ueDataObj.Nrcgi.NrcellId + } + } } - //updateDB if changes occur + //updateDB if changes occur (4G section) if newEcgi.Plmn.Mnc != oldPlmnMnc || newEcgi.Plmn.Mcc != oldPlmnMcc || newEcgi.CellId != oldCellId { //allocating a new erabId if entering a 4G environment (using existence of an erabId) @@ -282,9 +345,66 @@ func updateUeData(name string, mnc string, mcc string, cellId string, erabIdVali if oldErabId != -1 && ueData.ErabId == -1 { //sending oldErabId to release and no new 4G cellId checkRrNotificationRegisteredSubscriptions("", assocId, &plmn, oldPlmn, -1, "", oldCellId, oldErabId) } + } else { + //5G section + if newNrcgi.Plmn.Mnc != oldNrPlmnMnc || newNrcgi.Plmn.Mcc != oldNrPlmnMcc || newNrcgi.NrcellId != oldNrCellId { + //update because nrcgi changed + _ = rc.JSONSetEntry(baseKey+"UE:"+name, ".", convertUeDataToJson(&ueData)) + } } } +func updateMeasInfo(name string, parentPoaName string, inRangePoaNames []string, inRangeRsrps []int32, inRangeRsrqs []int32) { + + jsonUeData, _ := rc.JSONGetEntry(baseKey+"UE:"+name, ".") + + if jsonUeData != "" { + ueDataObj := convertJsonToUeData(jsonUeData) + if ueDataObj != nil { + ueDataObj.ParentPoaName = parentPoaName + var inRangePoas []InRangePoa + for index := range inRangePoaNames { + var inRangePoa InRangePoa + inRangePoa.Name = inRangePoaNames[index] + inRangePoa.Rsrp = inRangeRsrps[index] + inRangePoa.Rsrq = inRangeRsrqs[index] + inRangePoas = append(inRangePoas, inRangePoa) + } + ueDataObj.InRangePoas = inRangePoas + } + + _ = rc.JSONSetEntry(baseKey+"UE:"+name, ".", convertUeDataToJson(ueDataObj)) + } +} + +func updatePoaInfo(name string, poaType string, mnc string, mcc string, cellId string) { + + var plmn Plmn + plmn.Mnc = mnc + plmn.Mcc = mcc + + var poaInfo PoaInfo + poaInfo.Type = poaType + + switch poaType { + case poaType4G: + var ecgi Ecgi + ecgi.CellId = cellId + ecgi.Plmn = &plmn + poaInfo.Ecgi = ecgi + case poaType5G: + var nrcgi NRcgi + nrcgi.NrcellId = cellId + nrcgi.Plmn = &plmn + poaInfo.Nrcgi = nrcgi + default: + return + } + + //updateDB + _ = rc.JSONSetEntry(baseKey+"POA:"+name, ".", convertPoaInfoToJson(&poaInfo)) +} + func updateAppEcgiInfo(name string, mnc string, mcc string, cellId string) { var plmn Plmn @@ -487,6 +607,70 @@ func repopulateRrSubscriptionMap(key string, jsonInfo string, userData interface return nil } +func repopulateMrSubscriptionMap(key string, jsonInfo string, userData interface{}) error { + + var subscription MeasRepUeSubscription + + // Format response + err := json.Unmarshal([]byte(jsonInfo), &subscription) + if err != nil { + return err + } + + selfUrl := strings.Split(subscription.Links.Self.Href, "/") + subsIdStr := selfUrl[len(selfUrl)-1] + subsId, _ := strconv.Atoi(subsIdStr) + + mutex.Lock() + defer mutex.Unlock() + + mrSubscriptionMap[subsId] = &subscription + if subscription.ExpiryDeadline != nil { + intList := subscriptionExpiryMap[int(subscription.ExpiryDeadline.Seconds)] + intList = append(intList, subsId) + subscriptionExpiryMap[int(subscription.ExpiryDeadline.Seconds)] = intList + } + + //reinitialisation of next available Id for future subscription request + if subsId >= nextSubscriptionIdAvailable { + nextSubscriptionIdAvailable = subsId + 1 + } + + return nil +} + +func repopulateNrMrSubscriptionMap(key string, jsonInfo string, userData interface{}) error { + + var subscription NrMeasRepUeSubscription + + // Format response + err := json.Unmarshal([]byte(jsonInfo), &subscription) + if err != nil { + return err + } + + selfUrl := strings.Split(subscription.Links.Self.Href, "/") + subsIdStr := selfUrl[len(selfUrl)-1] + subsId, _ := strconv.Atoi(subsIdStr) + + mutex.Lock() + defer mutex.Unlock() + + nrMrSubscriptionMap[subsId] = &subscription + if subscription.ExpiryDeadline != nil { + intList := subscriptionExpiryMap[int(subscription.ExpiryDeadline.Seconds)] + intList = append(intList, subsId) + subscriptionExpiryMap[int(subscription.ExpiryDeadline.Seconds)] = intList + } + + //reinitialisation of next available Id for future subscription request + if subsId >= nextSubscriptionIdAvailable { + nextSubscriptionIdAvailable = subsId + 1 + } + + return nil +} + func isMatchCcFilterCriteriaAppInsId(filterCriteria interface{}, appId string) bool { filter := filterCriteria.(*CellChangeSubscriptionFilterCriteriaAssocHo) @@ -543,6 +727,70 @@ func isMatchCcFilterCriteriaAssociateId(filterCriteria interface{}, assocId *Ass return false } +func isMatchMrFilterCriteriaAssociateId(filterCriteria interface{}, assocId *AssociateId) bool { + filter := filterCriteria.(*MeasRepUeSubscriptionFilterCriteriaAssocTri) + + //if filter criteria is not set, it acts as a wildcard and accepts all + if filter.AssociateId == nil { + return true + } + //if filter accepts something specific but no assocId, then we fail right away + if assocId == nil { + return false + } + for _, filterAssocId := range filter.AssociateId { + if assocId.Type_ == filterAssocId.Type_ && assocId.Value == filterAssocId.Value { + return true + } + } + + return false +} + +func isMatchNrMrFilterCriteriaAssociateId(filterCriteria interface{}, assocId *AssociateId) bool { + filter := filterCriteria.(*NrMeasRepUeSubscriptionFilterCriteriaNrMrs) + + //if filter criteria is not set, it acts as a wildcard and accepts all + if filter.AssociateId == nil { + return true + } + //if filter accepts something specific but no assocId, then we fail right away + if assocId == nil { + return false + } + for _, filterAssocId := range filter.AssociateId { + if assocId.Type_ == filterAssocId.Type_ && assocId.Value == filterAssocId.Value { + return true + } + } + + return false +} + +func isMatchMrFilterCriteriaTrigger(filterCriteria interface{}, trigger int32) bool { + filter := filterCriteria.(*MeasRepUeSubscriptionFilterCriteriaAssocTri) + + for _, filterTrigger := range filter.Trigger { + if trigger == int32(filterTrigger) { + return true + } + } + + return false +} + +func isMatchNrMrFilterCriteriaTrigger(filterCriteria interface{}, trigger int32) bool { + filter := filterCriteria.(*NrMeasRepUeSubscriptionFilterCriteriaNrMrs) + + for _, filterTrigger := range filter.TriggerNr { + if trigger == int32(filterTrigger) { + return true + } + } + + return false +} + /* in v2, AssociateId is not part of the filterCriteria func isMatchRabFilterCriteriaAssociateId(filterCriteria interface{}, assocId *AssociateId) bool { filter := filterCriteria.(*RabEstSubscriptionFilterCriteriaQci) @@ -685,6 +933,90 @@ func isMatchRabRelFilterCriteriaEcgi(filterCriteria interface{}, newPlmn *Plmn, return false } +func isMatchMrFilterCriteriaEcgi(filterCriteria interface{}, newPlmn *Plmn, oldPlmn *Plmn, newCellId string, oldCellId string) bool { + filter := filterCriteria.(*MeasRepUeSubscriptionFilterCriteriaAssocTri) + + //if filter criteria is not set, it acts as a wildcard and accepts all + if filter.Ecgi == nil { + return true + } + + var matchingPlmn bool + for _, ecgi := range filter.Ecgi { + matchingPlmn = false + if ecgi.Plmn == nil { + matchingPlmn = true + } else { + if newPlmn != nil { + if newPlmn.Mnc == ecgi.Plmn.Mnc && newPlmn.Mcc == ecgi.Plmn.Mcc { + matchingPlmn = true + } + } + if oldPlmn != nil { + if oldPlmn.Mnc == ecgi.Plmn.Mnc && oldPlmn.Mcc == ecgi.Plmn.Mcc { + matchingPlmn = true + } + } + } + if matchingPlmn { + if ecgi.CellId == "" { + return true + } + if newCellId == ecgi.CellId { + return true + } + if oldCellId == ecgi.CellId { + return true + } + } + + } + + return false +} + +func isMatchNrMrFilterCriteriaNrcgi(filterCriteria interface{}, newPlmn *Plmn, oldPlmn *Plmn, newCellId string, oldCellId string) bool { + filter := filterCriteria.(*NrMeasRepUeSubscriptionFilterCriteriaNrMrs) + + //if filter criteria is not set, it acts as a wildcard and accepts all + if filter.Nrcgi == nil { + return true + } + + var matchingPlmn bool + for _, nrcgi := range filter.Nrcgi { + matchingPlmn = false + if nrcgi.Plmn == nil { + matchingPlmn = true + } else { + if newPlmn != nil { + if newPlmn.Mnc == nrcgi.Plmn.Mnc && newPlmn.Mcc == nrcgi.Plmn.Mcc { + matchingPlmn = true + } + } + if oldPlmn != nil { + if oldPlmn.Mnc == nrcgi.Plmn.Mnc && oldPlmn.Mcc == nrcgi.Plmn.Mcc { + matchingPlmn = true + } + } + } + if matchingPlmn { + if nrcgi.NrcellId == "" { + return true + } + if newCellId == nrcgi.NrcellId { + return true + } + if oldCellId == nrcgi.NrcellId { + return true + } + } + + } + + return false +} + func isMatchFilterCriteriaAppInsId(subscriptionType string, filterCriteria interface{}, appId string) bool { switch subscriptionType { case cellChangeSubscriptionType: @@ -703,6 +1035,10 @@ func isMatchFilterCriteriaAssociateId(subscriptionType string, filterCriteria in return isMatchCcFilterCriteriaAssociateId(filterCriteria, assocId) case rabEstSubscriptionType, rabRelSubscriptionType: return true //not part of filter anymore in v2 + case measRepUeSubscriptionType: + return isMatchMrFilterCriteriaAssociateId(filterCriteria, assocId) + case nrMeasRepUeSubscriptionType: + return isMatchNrMrFilterCriteriaAssociateId(filterCriteria, assocId) } return true } @@ -715,6 +1051,26 @@ func isMatchFilterCriteriaEcgi(subscriptionType string, filterCriteria interface return isMatchRabFilterCriteriaEcgi(filterCriteria, newPlmn, oldPlmn, newCellId, oldCellId) case rabRelSubscriptionType: return isMatchRabRelFilterCriteriaEcgi(filterCriteria, newPlmn, oldPlmn, newCellId, oldCellId) + case measRepUeSubscriptionType: + return isMatchMrFilterCriteriaEcgi(filterCriteria, newPlmn, oldPlmn, newCellId, oldCellId) + } + return true +} + +func isMatchFilterCriteriaNrcgi(subscriptionType string, filterCriteria interface{}, newPlmn *Plmn, oldPlmn *Plmn, newCellId string, oldCellId string) bool { + switch subscriptionType { + case nrMeasRepUeSubscriptionType: + return isMatchNrMrFilterCriteriaNrcgi(filterCriteria, newPlmn, oldPlmn, newCellId, oldCellId) + } + return true +} + +func isMatchFilterCriteriaTrigger(subscriptionType string, filterCriteria interface{}, trigger int32) bool { + switch subscriptionType { + case measRepUeSubscriptionType: + return isMatchMrFilterCriteriaTrigger(filterCriteria, trigger) + case nrMeasRepUeSubscriptionType: + return isMatchNrMrFilterCriteriaTrigger(filterCriteria, trigger) } return true } @@ -874,78 +1230,344 @@ func checkReNotificationRegisteredSubscriptions(appId string, assocId *Associate } } -func checkRrNotificationRegisteredSubscriptions(appId string, assocId *AssociateId, newPlmn *Plmn, oldPlmn *Plmn, qci int32, newCellId string, oldCellId string, erabId int32) { +func checkRrNotificationRegisteredSubscriptions(appId string, assocId *AssociateId, newPlmn *Plmn, oldPlmn *Plmn, qci int32, newCellId string, oldCellId string, erabId int32) { + + //checking filters only if we were connected to a POA-4G and now disconnecting from one + //condition to be disconnecting from a POA-4G: 1) has an empty new plmn 2) has empty cellId + if newPlmn != nil && newCellId != "" { + return + } + + mutex.Lock() + defer mutex.Unlock() + //check all that applies + for subsId, sub := range rrSubscriptionMap { + + if sub != nil { + + //verifying every criteria of the filter + match := isMatchFilterCriteriaAppInsId(rabRelSubscriptionType, sub.FilterCriteriaQci, appId) + + if match { + match = isMatchFilterCriteriaAssociateId(rabRelSubscriptionType, sub.FilterCriteriaQci, assocId) + } + + if match { + match = isMatchFilterCriteriaEcgi(rabRelSubscriptionType, sub.FilterCriteriaQci, nil, oldPlmn, newCellId, oldCellId) + } + + if match { + match = isMatchRabRelFilterCriteriaErabId(sub.FilterCriteriaQci, erabId) + } + //we ignore qci + + if match { + subsIdStr := strconv.Itoa(subsId) + jsonInfo, _ := rc.JSONGetEntry(baseKey+"subscriptions:"+subsIdStr, ".") + if jsonInfo == "" { + return + } + + subscription := convertJsonToRabRelSubscription(jsonInfo) + log.Info("Sending RNIS notification ", subscription.CallbackReference) + + var notif RabRelNotification + notif.NotificationType = RAB_REL_NOTIFICATION + + var oldEcgi Ecgi + + var notifOldPlmn Plmn + notifOldPlmn.Mnc = oldPlmn.Mnc + notifOldPlmn.Mcc = oldPlmn.Mcc + oldEcgi.Plmn = ¬ifOldPlmn + oldEcgi.CellId = oldCellId + + var notifAssociateId AssociateId + notifAssociateId.Type_ = assocId.Type_ + notifAssociateId.Value = assocId.Value + + seconds := time.Now().Unix() + var timeStamp TimeStamp + timeStamp.Seconds = int32(seconds) + + var erabRelInfo RabRelNotificationErabReleaseInfo + erabRelInfo.ErabId = erabId + notif.TimeStamp = &timeStamp + notif.Ecgi = &oldEcgi + notif.ErabReleaseInfo = &erabRelInfo + notif.AssociateId = append(notif.AssociateId, notifAssociateId) + + sendRrNotification(subscription.CallbackReference, notif) + log.Info("Rab_release Notification" + "(" + subsIdStr + ")") + } + } + } +} + +func checkMrPeriodicTrigger(trigger int32) { + + //only check if there is at least one subscription + if len(mrSubscriptionMap) >= 1 { + keyName := baseKey + "UE:*" + err := rc.ForEachJSONEntry(keyName, checkMrNotificationRegisteredSubscriptions, int32(trigger)) + if err != nil { + log.Error(err.Error()) + return + } + } +} + +func checkMrNotificationRegisteredSubscriptions(key string, jsonInfo string, extraInfo interface{}) error { + trigger := extraInfo.(int32) + // Retrieve user info from DB + var ueData UeData + err := json.Unmarshal([]byte(jsonInfo), &ueData) + if err != nil { + return err + } + + if ueData.Ecgi == nil || ueData.Ecgi.CellId == "" { + //that ue is not on a 4G poa + return nil + } + + mutex.Lock() + defer mutex.Unlock() + //check all that applies + for subsId, sub := range mrSubscriptionMap { + if sub != nil { + //verifying every criteria of the filter + //no check for appId + //match := isMatchFilterCriteriaAppInsId(measRepUeSubscriptionType, sub.FilterCriteriaAssocTri, appId) + + assocId := new(AssociateId) + assocId.Type_ = 1 //UE_IPV4_ADDRESS + subKeys := strings.Split(key, ":") + assocId.Value = subKeys[len(subKeys)-1] + + match := isMatchFilterCriteriaAssociateId(measRepUeSubscriptionType, sub.FilterCriteriaAssocTri, assocId) + + if match { + if ueData.Ecgi != nil { + match = isMatchFilterCriteriaEcgi(measRepUeSubscriptionType, sub.FilterCriteriaAssocTri, ueData.Ecgi.Plmn, nil, ueData.Ecgi.CellId, "") + } else { + match = false + } + } + + if match { + match = isMatchFilterCriteriaTrigger(measRepUeSubscriptionType, sub.FilterCriteriaAssocTri, trigger) + } + + if match { + subsIdStr := strconv.Itoa(subsId) + jsonInfo, _ := rc.JSONGetEntry(baseKey+"subscriptions:"+subsIdStr, ".") + if jsonInfo == "" { + return nil + } + + subscription := convertJsonToMeasRepUeSubscription(jsonInfo) + log.Info("Sending RNIS notification ", subscription.CallbackReference) + + var notif MeasRepUeNotification + notif.NotificationType = MEAS_REP_UE_NOTIFICATION + + seconds := time.Now().Unix() + var timeStamp TimeStamp + timeStamp.Seconds = int32(seconds) + + notif.TimeStamp = &timeStamp + notif.Ecgi = ueData.Ecgi + triggerObj := Trigger(trigger) + notif.Trigger = &triggerObj + + notif.AssociateId = append(notif.AssociateId, *assocId) + + //adding the data of all reachable cells + for _, poa := range ueData.InRangePoas { + if poa.Name == ueData.ParentPoaName { + notif.Rsrp = poa.Rsrp + notif.Rsrq = poa.Rsrq + } else { + jsonInfo, _ := rc.JSONGetEntry(baseKey+"POA:"+poa.Name, ".") + if jsonInfo == "" { + log.Info("POA cannot be found in: ", baseKey+"POA:"+poa.Name) + continue + } + + poaInfo := convertJsonToPoaInfo(jsonInfo) + + switch poaInfo.Type { + case poaType4G: + var neighborCell MeasRepUeNotificationEutranNeighbourCellMeasInfo + neighborCell.Rsrp = poa.Rsrp + neighborCell.Rsrq = poa.Rsrq + neighborCell.Ecgi = &poaInfo.Ecgi + notif.EutranNeighbourCellMeasInfo = append(notif.EutranNeighbourCellMeasInfo, neighborCell) + case poaType5G: + var neighborCell MeasRepUeNotificationNewRadioMeasNeiInfo + neighborCell.NrNCellRsrp = poa.Rsrp + neighborCell.NrNCellRsrq = poa.Rsrq + + var measRepUeNotificationNrNCellInfo MeasRepUeNotificationNrNCellInfo + measRepUeNotificationNrNCellInfo.NrNCellPlmn = append(measRepUeNotificationNrNCellInfo.NrNCellPlmn, *poaInfo.Nrcgi.Plmn) + measRepUeNotificationNrNCellInfo.NrNCellGId = poaInfo.Nrcgi.NrcellId + neighborCell.NrNCellInfo = append(neighborCell.NrNCellInfo, measRepUeNotificationNrNCellInfo) + notif.NewRadioMeasNeiInfo = append(notif.NewRadioMeasNeiInfo, neighborCell) + default: + } + + } + } + + go sendMrNotification(subscription.CallbackReference, notif) + log.Info("Meas_Rep_Ue Notification" + "(" + subsIdStr + ")") + } + } + } + return nil +} + +func checkNrMrPeriodicTrigger(trigger int32) { + + //only check if there is at least one subscription + if len(nrMrSubscriptionMap) >= 1 { + keyName := baseKey + "UE:*" + err := rc.ForEachJSONEntry(keyName, checkNrMrNotificationRegisteredSubscriptions, int32(trigger)) + if err != nil { + log.Error(err.Error()) + return + } + } +} + +func checkNrMrNotificationRegisteredSubscriptions(key string, jsonInfo string, extraInfo interface{}) error { + trigger := extraInfo.(int32) - //checking filters only if we were connected to a POA-4G and now disconnecting from one - //condition to be disconnecting from a POA-4G: 1) has an empty new plmn 2) has empty cellId - if newPlmn != nil && newCellId != "" { - return + // Retrieve user info from DB + var ueData UeData + err := json.Unmarshal([]byte(jsonInfo), &ueData) + if err != nil { + return err + } + + if ueData.Nrcgi == nil || ueData.Nrcgi.NrcellId == "" { + //that ue is not on a 5G poa + return nil } mutex.Lock() defer mutex.Unlock() //check all that applies - for subsId, sub := range rrSubscriptionMap { - + for subsId, sub := range nrMrSubscriptionMap { if sub != nil { - //verifying every criteria of the filter - match := isMatchFilterCriteriaAppInsId(rabRelSubscriptionType, sub.FilterCriteriaQci, appId) + //no check for appId + //match := isMatchFilterCriteriaAppInsId(measRepUeSubscriptionType, sub.FilterCriteriaAssocTri, appId) - if match { - match = isMatchFilterCriteriaAssociateId(rabRelSubscriptionType, sub.FilterCriteriaQci, assocId) - } + assocId := new(AssociateId) + assocId.Type_ = 1 //UE_IPV4_ADDRESS + subKeys := strings.Split(key, ":") + assocId.Value = subKeys[len(subKeys)-1] + + match := isMatchFilterCriteriaAssociateId(nrMeasRepUeSubscriptionType, sub.FilterCriteriaNrMrs, assocId) if match { - match = isMatchFilterCriteriaEcgi(rabRelSubscriptionType, sub.FilterCriteriaQci, nil, oldPlmn, newCellId, oldCellId) + + if ueData.Nrcgi != nil { + match = isMatchFilterCriteriaNrcgi(nrMeasRepUeSubscriptionType, sub.FilterCriteriaNrMrs, ueData.Nrcgi.Plmn, nil, ueData.Nrcgi.NrcellId, "") + } else { + match = false + } } if match { - match = isMatchRabRelFilterCriteriaErabId(sub.FilterCriteriaQci, erabId) + match = isMatchFilterCriteriaTrigger(nrMeasRepUeSubscriptionType, sub.FilterCriteriaNrMrs, trigger) } - //we ignore qci if match { + subsIdStr := strconv.Itoa(subsId) jsonInfo, _ := rc.JSONGetEntry(baseKey+"subscriptions:"+subsIdStr, ".") if jsonInfo == "" { - return + return nil } - subscription := convertJsonToRabRelSubscription(jsonInfo) + subscription := convertJsonToNrMeasRepUeSubscription(jsonInfo) log.Info("Sending RNIS notification ", subscription.CallbackReference) - var notif RabRelNotification - notif.NotificationType = RAB_REL_NOTIFICATION - - var oldEcgi Ecgi - - var notifOldPlmn Plmn - notifOldPlmn.Mnc = oldPlmn.Mnc - notifOldPlmn.Mcc = oldPlmn.Mcc - oldEcgi.Plmn = ¬ifOldPlmn - oldEcgi.CellId = oldCellId - - var notifAssociateId AssociateId - notifAssociateId.Type_ = assocId.Type_ - notifAssociateId.Value = assocId.Value + var notif NrMeasRepUeNotification + notif.NotificationType = NR_MEAS_REP_UE_NOTIFICATION seconds := time.Now().Unix() var timeStamp TimeStamp timeStamp.Seconds = int32(seconds) - var erabRelInfo RabRelNotificationErabReleaseInfo - erabRelInfo.ErabId = erabId notif.TimeStamp = &timeStamp - notif.Ecgi = &oldEcgi - notif.ErabReleaseInfo = &erabRelInfo - notif.AssociateId = append(notif.AssociateId, notifAssociateId) - sendRrNotification(subscription.CallbackReference, notif) - log.Info("Rab_release Notification" + "(" + subsIdStr + ")") + var nrMeasRepUeNotificationServCellMeasInfo NrMeasRepUeNotificationServCellMeasInfo + nrMeasRepUeNotificationServCellMeasInfo.Nrcgi = ueData.Nrcgi + notif.ServCellMeasInfo = append(notif.ServCellMeasInfo, nrMeasRepUeNotificationServCellMeasInfo) + + triggerObj := TriggerNr(trigger) + notif.TriggerNr = &triggerObj + + notif.AssociateId = append(notif.AssociateId, *assocId) + + strongestRsrp := int32(0) + //adding the data of all reachable cells + for _, poa := range ueData.InRangePoas { + if poa.Name == ueData.ParentPoaName { + var measQuantityResultsNr MeasQuantityResultsNr + measQuantityResultsNr.Rsrp = poa.Rsrp + measQuantityResultsNr.Rsrq = poa.Rsrq + var nrMeasRepUeNotificationSCell NrMeasRepUeNotificationSCell + nrMeasRepUeNotificationSCell.MeasQuantityResultsSsbCell = &measQuantityResultsNr + notif.ServCellMeasInfo[0].SCell = &nrMeasRepUeNotificationSCell + } else { + jsonInfo, _ := rc.JSONGetEntry(baseKey+"POA:"+poa.Name, ".") + if jsonInfo == "" { + log.Info("POA cannot be found in: ", baseKey+"POA:"+poa.Name) + continue + } + + poaInfo := convertJsonToPoaInfo(jsonInfo) + + switch poaInfo.Type { + case poaType5G: + var neighborCell NrMeasRepUeNotificationNrNeighCellMeasInfo + //not using nrcgi but nrcellId, error in the spec... but going along + neighborCell.Nrcgi = poaInfo.Nrcgi.NrcellId + var measQuantityResultsNr MeasQuantityResultsNr + measQuantityResultsNr.Rsrp = poa.Rsrp + measQuantityResultsNr.Rsrq = poa.Rsrq + neighborCell.MeasQuantityResultsSsbCell = &measQuantityResultsNr + + if poa.Rsrp >= strongestRsrp { + var nrMeasRepUeNotificationNCell NrMeasRepUeNotificationNCell + nrMeasRepUeNotificationNCell.MeasQuantityResultsSsbCell = &measQuantityResultsNr + notif.ServCellMeasInfo[0].NCell = &nrMeasRepUeNotificationNCell + } + + notif.NrNeighCellMeasInfo = append(notif.NrNeighCellMeasInfo, neighborCell) + case poaType4G: + var neighborCell NrMeasRepUeNotificationEutraNeighCellMeasInfo + neighborCell.Rsrp = poa.Rsrp + neighborCell.Rsrq = poa.Rsrq + neighborCell.Ecgi = &poaInfo.Ecgi + notif.EutraNeighCellMeasInfo = append(notif.EutraNeighCellMeasInfo, neighborCell) + default: + } + + } + } + + go sendNrMrNotification(subscription.CallbackReference, notif) + log.Info("Nr_Meas_Rep_Ue Notification" + "(" + subsIdStr + ")") } } } + return nil } func sendCcNotification(notifyUrl string, notification CellChangeNotification) { @@ -1002,6 +1624,42 @@ func sendRrNotification(notifyUrl string, notification RabRelNotification) { defer resp.Body.Close() } +func sendMrNotification(notifyUrl string, notification MeasRepUeNotification) { + + startTime := time.Now() + + jsonNotif, err := json.Marshal(notification) + if err != nil { + log.Error(err.Error()) + } + + resp, err := http.Post(notifyUrl, "application/json", bytes.NewBuffer(jsonNotif)) + _ = httpLog.LogTx(notifyUrl, "POST", string(jsonNotif), resp, startTime) + if err != nil { + log.Error(err) + return + } + defer resp.Body.Close() +} + +func sendNrMrNotification(notifyUrl string, notification NrMeasRepUeNotification) { + + startTime := time.Now() + + jsonNotif, err := json.Marshal(notification) + if err != nil { + log.Error(err.Error()) + } + + resp, err := http.Post(notifyUrl, "application/json", bytes.NewBuffer(jsonNotif)) + _ = httpLog.LogTx(notifyUrl, "POST", string(jsonNotif), resp, startTime) + if err != nil { + log.Error(err) + return + } + defer resp.Body.Close() +} + func sendExpiryNotification(notifyUrl string, notification ExpiryNotification) { startTime := time.Now() @@ -1075,6 +1733,28 @@ func subscriptionsGet(w http.ResponseWriter, r *http.Request) { jsonResponse, err = json.Marshal(subscription) + case MEAS_REP_UE_SUBSCRIPTION: + var subscription MeasRepUeSubscription + err = json.Unmarshal([]byte(jsonRespDB), &subscription) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + jsonResponse, err = json.Marshal(subscription) + + case NR_MEAS_REP_UE_SUBSCRIPTION: + var subscription NrMeasRepUeSubscription + err = json.Unmarshal([]byte(jsonRespDB), &subscription) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + jsonResponse, err = json.Marshal(subscription) + default: log.Error("Unknown subscription type") w.WriteHeader(http.StatusBadRequest) @@ -1222,6 +1902,68 @@ func subscriptionsPost(w http.ResponseWriter, r *http.Request) { jsonResponse, err = json.Marshal(subscription) + case MEAS_REP_UE_SUBSCRIPTION: + var subscription MeasRepUeSubscription + err = json.Unmarshal(bodyBytes, &subscription) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + subscription.Links = link + + if subscription.FilterCriteriaAssocTri == nil { + log.Error("FilterCriteriaAssocTri should not be null for this subscription type") + http.Error(w, "FilterCriteriaAssocTri should not be null for this subscription type", http.StatusBadRequest) + return + } + + for _, ecgi := range subscription.FilterCriteriaAssocTri.Ecgi { + if ecgi.Plmn == nil || ecgi.CellId == "" { + log.Error("For non null ecgi, plmn and cellId are mandatory") + http.Error(w, "For non null ecgi, plmn and cellId are mandatory", http.StatusBadRequest) + return + } + } + + //registration + registerMr(&subscription, subsIdStr) + _ = rc.JSONSetEntry(baseKey+"subscriptions:"+subsIdStr, ".", convertMeasRepUeSubscriptionToJson(&subscription)) + + jsonResponse, err = json.Marshal(subscription) + + case NR_MEAS_REP_UE_SUBSCRIPTION: + var subscription NrMeasRepUeSubscription + err = json.Unmarshal(bodyBytes, &subscription) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + subscription.Links = link + + if subscription.FilterCriteriaNrMrs == nil { + log.Error("FilterCriteriaNrMrs should not be null for this subscription type") + http.Error(w, "FilterCriteriaNrMrs should not be null for this subscription type", http.StatusBadRequest) + return + } + + for _, nrcgi := range subscription.FilterCriteriaNrMrs.Nrcgi { + if nrcgi.Plmn == nil || nrcgi.NrcellId == "" { + log.Error("For non null nrcgi, plmn and cellId are mandatory") + http.Error(w, "For non null nrcgi, plmn and cellId are mandatory", http.StatusBadRequest) + return + } + } + + //registration + registerNrMr(&subscription, subsIdStr) + _ = rc.JSONSetEntry(baseKey+"subscriptions:"+subsIdStr, ".", convertNrMeasRepUeSubscriptionToJson(&subscription)) + + jsonResponse, err = json.Marshal(subscription) + default: nextSubscriptionIdAvailable-- w.WriteHeader(http.StatusBadRequest) @@ -1353,6 +2095,50 @@ func subscriptionsPut(w http.ResponseWriter, r *http.Request) { alreadyRegistered = true jsonResponse, err = json.Marshal(subscription) } + case MEAS_REP_UE_SUBSCRIPTION: + var subscription MeasRepUeSubscription + err = json.Unmarshal(bodyBytes, &subscription) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + if subscription.FilterCriteriaAssocTri == nil { + log.Error("FilterCriteriaAssocTri should not be null for this subscription type") + http.Error(w, "FilterCriteriaAssocTri should not be null for this subscription type", http.StatusBadRequest) + return + } + + //registration + if isSubscriptionIdRegisteredMr(subsIdStr) { + registerMr(&subscription, subsIdStr) + _ = rc.JSONSetEntry(baseKey+"subscriptions:"+subsIdStr, ".", convertMeasRepUeSubscriptionToJson(&subscription)) + alreadyRegistered = true + jsonResponse, err = json.Marshal(subscription) + } + case NR_MEAS_REP_UE_SUBSCRIPTION: + var subscription NrMeasRepUeSubscription + err = json.Unmarshal(bodyBytes, &subscription) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + if subscription.FilterCriteriaNrMrs == nil { + log.Error("FilterCriteriaNrMrs should not be null for this subscription type") + http.Error(w, "FilterCriteriaNrMrs should not be null for this subscription type", http.StatusBadRequest) + return + } + + //registration + if isSubscriptionIdRegisteredNrMr(subsIdStr) { + registerNrMr(&subscription, subsIdStr) + _ = rc.JSONSetEntry(baseKey+"subscriptions:"+subsIdStr, ".", convertNrMeasRepUeSubscriptionToJson(&subscription)) + alreadyRegistered = true + jsonResponse, err = json.Marshal(subscription) + } default: w.WriteHeader(http.StatusBadRequest) return @@ -1433,6 +2219,34 @@ func isSubscriptionIdRegisteredRr(subsIdStr string) bool { return returnVal } +func isSubscriptionIdRegisteredMr(subsIdStr string) bool { + var returnVal bool + subsId, _ := strconv.Atoi(subsIdStr) + mutex.Lock() + defer mutex.Unlock() + + if mrSubscriptionMap[subsId] != nil { + returnVal = true + } else { + returnVal = false + } + return returnVal +} + +func isSubscriptionIdRegisteredNrMr(subsIdStr string) bool { + var returnVal bool + subsId, _ := strconv.Atoi(subsIdStr) + mutex.Lock() + defer mutex.Unlock() + + if nrMrSubscriptionMap[subsId] != nil { + returnVal = true + } else { + returnVal = false + } + return returnVal +} + func registerCc(cellChangeSubscription *CellChangeSubscription, subsIdStr string) { subsId, _ := strconv.Atoi(subsIdStr) mutex.Lock() @@ -1478,6 +2292,36 @@ func registerRr(rabRelSubscription *RabRelSubscription, subsIdStr string) { log.Info("New registration: ", subsId, " type: ", rabRelSubscriptionType) } +func registerMr(measRepUeSubscription *MeasRepUeSubscription, subsIdStr string) { + subsId, _ := strconv.Atoi(subsIdStr) + mutex.Lock() + defer mutex.Unlock() + + mrSubscriptionMap[subsId] = measRepUeSubscription + if measRepUeSubscription.ExpiryDeadline != nil { + //get current list of subscription meant to expire at this time + intList := subscriptionExpiryMap[int(measRepUeSubscription.ExpiryDeadline.Seconds)] + intList = append(intList, subsId) + subscriptionExpiryMap[int(measRepUeSubscription.ExpiryDeadline.Seconds)] = intList + } + log.Info("New registration: ", subsId, " type: ", measRepUeSubscriptionType) +} + +func registerNrMr(nrMeasRepUeSubscription *NrMeasRepUeSubscription, subsIdStr string) { + subsId, _ := strconv.Atoi(subsIdStr) + mutex.Lock() + defer mutex.Unlock() + + nrMrSubscriptionMap[subsId] = nrMeasRepUeSubscription + if nrMeasRepUeSubscription.ExpiryDeadline != nil { + //get current list of subscription meant to expire at this time + intList := subscriptionExpiryMap[int(nrMeasRepUeSubscription.ExpiryDeadline.Seconds)] + intList = append(intList, subsId) + subscriptionExpiryMap[int(nrMeasRepUeSubscription.ExpiryDeadline.Seconds)] = intList + } + log.Info("New registration: ", subsId, " type: ", nrMeasRepUeSubscriptionType) +} + func deregisterCc(subsIdStr string, mutexTaken bool) { subsId, _ := strconv.Atoi(subsIdStr) if !mutexTaken { @@ -1510,12 +2354,37 @@ func deregisterRr(subsIdStr string, mutexTaken bool) { log.Info("Deregistration: ", subsId, " type: ", rabRelSubscriptionType) } +func deregisterMr(subsIdStr string, mutexTaken bool) { + subsId, _ := strconv.Atoi(subsIdStr) + if !mutexTaken { + mutex.Lock() + defer mutex.Unlock() + } + + mrSubscriptionMap[subsId] = nil + log.Info("Deregistration: ", subsId, " type: ", measRepUeSubscriptionType) +} + +func deregisterNrMr(subsIdStr string, mutexTaken bool) { + subsId, _ := strconv.Atoi(subsIdStr) + if !mutexTaken { + mutex.Lock() + defer mutex.Unlock() + } + + nrMrSubscriptionMap[subsId] = nil + log.Info("Deregistration: ", subsId, " type: ", nrMeasRepUeSubscriptionType) +} + func delSubscription(keyPrefix string, subsId string, mutexTaken bool) error { err := rc.JSONDelEntry(keyPrefix+":"+subsId, ".") deregisterCc(subsId, mutexTaken) deregisterRe(subsId, mutexTaken) deregisterRr(subsId, mutexTaken) + deregisterMr(subsId, mutexTaken) + deregisterNrMr(subsId, mutexTaken) + return err } @@ -1677,6 +2546,7 @@ func rabInfoGet(w http.ResponseWriter, r *http.Request) { rabInfo.TimeStamp = &timeStamp // Send response + jsonResponse, err := json.Marshal(rabInfo) if err != nil { log.Error(err.Error()) @@ -1685,6 +2555,7 @@ func rabInfoGet(w http.ResponseWriter, r *http.Request) { } w.WriteHeader(http.StatusOK) fmt.Fprintf(w, string(jsonResponse)) + } func populateRabInfo(key string, jsonInfo string, rabInfoData interface{}) error { @@ -1845,6 +2716,30 @@ func createSubscriptionLinkList(subType string) *SubscriptionLinkList { } } + //loop through meas_rep_ue map + if subType == "" || subType == "meas_rep_ue" { + for _, mrSubscription := range mrSubscriptionMap { + if mrSubscription != nil { + var subscription SubscriptionLinkListLinksSubscription + subscription.Href = mrSubscription.Links.Self.Href + subscription.SubscriptionType = MEAS_REP_UE_SUBSCRIPTION + subscriptionLinkList.Links.Subscription = append(subscriptionLinkList.Links.Subscription, subscription) + } + } + } + + //loop through nr_meas_rep_ue map + if subType == "" || subType == "nr_meas_rep_ue" { + for _, nrMrSubscription := range nrMrSubscriptionMap { + if nrMrSubscription != nil { + var subscription SubscriptionLinkListLinksSubscription + subscription.Href = nrMrSubscription.Links.Self.Href + subscription.SubscriptionType = NR_MEAS_REP_UE_SUBSCRIPTION + subscriptionLinkList.Links.Subscription = append(subscriptionLinkList.Links.Subscription, subscription) + } + } + } + //no other maps to go through return subscriptionLinkList @@ -1882,6 +2777,8 @@ func cleanUp() { ccSubscriptionMap = map[int]*CellChangeSubscription{} reSubscriptionMap = map[int]*RabEstSubscription{} rrSubscriptionMap = map[int]*RabRelSubscription{} + mrSubscriptionMap = map[int]*MeasRepUeSubscription{} + nrMrSubscriptionMap = map[int]*NrMeasRepUeSubscription{} subscriptionExpiryMap = map[int][]int{} updateStoreName("") diff --git a/go-apps/meep-rnis/server/rnis_test.go b/go-apps/meep-rnis/server/rnis_test.go index f653e7e4b..6c0f1dd36 100644 --- a/go-apps/meep-rnis/server/rnis_test.go +++ b/go-apps/meep-rnis/server/rnis_test.go @@ -680,6 +680,120 @@ func TestFailSubscriptionRabRel(t *testing.T) { terminateScenario() } +func TestSuccessSubscriptionMeasRepUe(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initializeVars() + err := Init() + if err != nil { + t.Fatalf("Error initializing test basic procedure") + } + err = Run() + if err != nil { + t.Fatalf("Error running test basic procedure") + } + fmt.Println("Set a scenario") + initialiseScenario(testScenario) + //post + expectedGetResp := testSubscriptionMeasRepUePost(t) + //get + testSubscriptionGet(t, strconv.Itoa(nextSubscriptionIdAvailable-1), expectedGetResp) + //put + expectedGetResp = testSubscriptionMeasRepUePut(t, strconv.Itoa(nextSubscriptionIdAvailable-1), true) + //get + testSubscriptionGet(t, strconv.Itoa(nextSubscriptionIdAvailable-1), expectedGetResp) + //delete + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-1), true) + terminateScenario() +} + +func TestFailSubscriptionMeasRepUe(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initializeVars() + + err := Init() + if err != nil { + t.Fatalf("Error initializing test basic procedure") + } + err = Run() + if err != nil { + t.Fatalf("Error running test basic procedure") + } + + fmt.Println("Set a scenario") + initialiseScenario(testScenario) + + //get + testSubscriptionGet(t, strconv.Itoa(nextSubscriptionIdAvailable), "") + + //put + _ = testSubscriptionMeasRepUePut(t, strconv.Itoa(nextSubscriptionIdAvailable), false) + + //delete + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable), false) + terminateScenario() +} + +func TestSuccessSubscriptionNrMeasRepUe(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initializeVars() + err := Init() + if err != nil { + t.Fatalf("Error initializing test basic procedure") + } + err = Run() + if err != nil { + t.Fatalf("Error running test basic procedure") + } + fmt.Println("Set a scenario") + initialiseScenario(testScenario) + //post + expectedGetResp := testSubscriptionNrMeasRepUePost(t) + //get + testSubscriptionGet(t, strconv.Itoa(nextSubscriptionIdAvailable-1), expectedGetResp) + //put + expectedGetResp = testSubscriptionNrMeasRepUePut(t, strconv.Itoa(nextSubscriptionIdAvailable-1), true) + //get + testSubscriptionGet(t, strconv.Itoa(nextSubscriptionIdAvailable-1), expectedGetResp) + //delete + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-1), true) + terminateScenario() +} + +func TestFailSubscriptionNrMeasRepUe(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initializeVars() + + err := Init() + if err != nil { + t.Fatalf("Error initializing test basic procedure") + } + err = Run() + if err != nil { + t.Fatalf("Error running test basic procedure") + } + + fmt.Println("Set a scenario") + initialiseScenario(testScenario) + + //get + testSubscriptionGet(t, strconv.Itoa(nextSubscriptionIdAvailable), "") + + //put + _ = testSubscriptionNrMeasRepUePut(t, strconv.Itoa(nextSubscriptionIdAvailable), false) + + //delete + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable), false) + terminateScenario() +} + func TestSubscriptionsListGet(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) @@ -705,11 +819,19 @@ func TestSubscriptionsListGet(t *testing.T) { _ = testSubscriptionRabEstPost(t) _ = testSubscriptionRabRelPost(t) _ = testSubscriptionRabRelPost(t) + _ = testSubscriptionMeasRepUePost(t) + _ = testSubscriptionMeasRepUePost(t) + _ = testSubscriptionNrMeasRepUePost(t) + _ = testSubscriptionNrMeasRepUePost(t) //get list testSubscriptionListGet(t) //delete + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-10), true) + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-9), true) + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-8), true) + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-7), true) testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-6), true) testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-5), true) testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-4), true) @@ -724,7 +846,7 @@ func testSubscriptionListGet(t *testing.T) { /****************************** * expected response section ******************************/ - expectedSubscriptionNb := 6 + expectedSubscriptionNb := 10 /****************************** * request vars section @@ -1219,6 +1341,262 @@ func testSubscriptionRabRelPut(t *testing.T, subscriptionId string, expectSucces } } +func testSubscriptionMeasRepUePost(t *testing.T) string { + + /****************************** + * expected response section + ******************************/ + expectedEcgi1 := Ecgi{"1234567", &Plmn{"111", "222"}} + expectedEcgi := []Ecgi{expectedEcgi1} + expectedAssocId1 := AssociateId{1, "2.2.2.2"} + expectedAssocId := []AssociateId{expectedAssocId1} + expectedFilter := MeasRepUeSubscriptionFilterCriteriaAssocTri{"myApp", expectedAssocId, expectedEcgi, []Trigger{1}} + expectedCallBackRef := "myCallbakRef" + expectedLinkType := LinkType{"/" + testScenarioName + "/rni/v2/subscriptions/" + strconv.Itoa(nextSubscriptionIdAvailable)} + //expectedExpiry := TimeStamp{0, 1988599770} + expectedResponse := MeasRepUeSubscription{&CaReconfSubscriptionLinks{&expectedLinkType}, expectedCallBackRef, nil, &expectedFilter, MEAS_REP_UE_SUBSCRIPTION} + + expectedResponseStr, err := json.Marshal(expectedResponse) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request vars section + ******************************/ + + /****************************** + * request body section + ******************************/ + + //filter is not exactly the same in response and request + subscriptionPost1 := MeasRepUeSubscription{nil, expectedCallBackRef, nil, &expectedFilter, MEAS_REP_UE_SUBSCRIPTION} + + body, err := json.Marshal(subscriptionPost1) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request queries section + ******************************/ + + /****************************** + * request execution section + ******************************/ + + mr, err := sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), nil, nil, http.StatusCreated, SubscriptionsPOST) + if err != nil { + t.Fatalf("Failed to get expected response") + } + + var respBody MeasRepUeSubscription + err = json.Unmarshal([]byte(mr), &respBody) + if err != nil { + t.Fatalf("Failed to get expected response") + } + if mr != string(expectedResponseStr) { + t.Fatalf("Failed to get expected response") + } + return string(expectedResponseStr) +} + +func testSubscriptionMeasRepUePut(t *testing.T, subscriptionId string, expectSuccess bool) string { + + /****************************** + * expected response section + ******************************/ + expectedEcgi1 := Ecgi{"1234567", &Plmn{"111", "222"}} + expectedEcgi := []Ecgi{expectedEcgi1} + expectedAssocId1 := AssociateId{1, "2.2.2.2"} + expectedAssocId := []AssociateId{expectedAssocId1} + expectedFilter := MeasRepUeSubscriptionFilterCriteriaAssocTri{"myApp", expectedAssocId, expectedEcgi, []Trigger{1}} + expectedCallBackRef := "myCallbakRef" + expectedLinkType := LinkType{"/" + testScenarioName + "/rni/v2/subscriptions/" + subscriptionId} + expectedResponse := MeasRepUeSubscription{&CaReconfSubscriptionLinks{&expectedLinkType}, expectedCallBackRef, nil, &expectedFilter, MEAS_REP_UE_SUBSCRIPTION} + + expectedResponseStr, err := json.Marshal(expectedResponse) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request vars section + ******************************/ + vars := make(map[string]string) + vars["subscriptionId"] = subscriptionId + + /****************************** + * request body section + ******************************/ + + subscription1 := MeasRepUeSubscription{&CaReconfSubscriptionLinks{&expectedLinkType}, expectedCallBackRef, nil, &expectedFilter, MEAS_REP_UE_SUBSCRIPTION} + + body, err := json.Marshal(subscription1) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request queries section + ******************************/ + + /****************************** + * request execution section + ******************************/ + + if expectSuccess { + mr, err := sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), vars, nil, http.StatusOK, SubscriptionsPUT) + if err != nil { + t.Fatalf("Failed to get expected response") + } + + var respBody MeasRepUeSubscription + err = json.Unmarshal([]byte(mr), &respBody) + if err != nil { + t.Fatalf("Failed to get expected response") + } + if mr != string(expectedResponseStr) { + t.Fatalf("Failed to get expected response") + } + return string(expectedResponseStr) + } else { + _, err = sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), vars, nil, http.StatusNotFound, SubscriptionsPUT) + if err != nil { + t.Fatalf("Failed to get expected response") + } + return "" + } +} + +func testSubscriptionNrMeasRepUePost(t *testing.T) string { + + /****************************** + * expected response section + ******************************/ + expectedNrcgi1 := NRcgi{"1234567", &Plmn{"111", "222"}} + expectedNrcgi := []NRcgi{expectedNrcgi1} + expectedAssocId1 := AssociateId{1, "2.2.2.2"} + expectedAssocId := []AssociateId{expectedAssocId1} + expectedFilter := NrMeasRepUeSubscriptionFilterCriteriaNrMrs{"myApp", expectedAssocId, expectedNrcgi, []TriggerNr{1}} + expectedCallBackRef := "myCallbakRef" + expectedLinkType := LinkType{"/" + testScenarioName + "/rni/v2/subscriptions/" + strconv.Itoa(nextSubscriptionIdAvailable)} + //expectedExpiry := TimeStamp{0, 1988599770} + expectedResponse := NrMeasRepUeSubscription{&CaReconfSubscriptionLinks{&expectedLinkType}, expectedCallBackRef, nil, &expectedFilter, NR_MEAS_REP_UE_SUBSCRIPTION} + + expectedResponseStr, err := json.Marshal(expectedResponse) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request vars section + ******************************/ + + /****************************** + * request body section + ******************************/ + + //filter is not exactly the same in response and request + subscriptionPost1 := NrMeasRepUeSubscription{nil, expectedCallBackRef, nil, &expectedFilter, NR_MEAS_REP_UE_SUBSCRIPTION} + + body, err := json.Marshal(subscriptionPost1) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request queries section + ******************************/ + + /****************************** + * request execution section + ******************************/ + + nrMr, err := sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), nil, nil, http.StatusCreated, SubscriptionsPOST) + if err != nil { + t.Fatalf("Failed to get expected response") + } + + var respBody NrMeasRepUeSubscription + err = json.Unmarshal([]byte(nrMr), &respBody) + if err != nil { + t.Fatalf("Failed to get expected response") + } + if nrMr != string(expectedResponseStr) { + t.Fatalf("Failed to get expected response") + } + return string(expectedResponseStr) +} + +func testSubscriptionNrMeasRepUePut(t *testing.T, subscriptionId string, expectSuccess bool) string { + + /****************************** + * expected response section + ******************************/ + expectedNrcgi1 := NRcgi{"1234567", &Plmn{"111", "222"}} + expectedNrcgi := []NRcgi{expectedNrcgi1} + expectedAssocId1 := AssociateId{1, "2.2.2.2"} + expectedAssocId := []AssociateId{expectedAssocId1} + expectedFilter := NrMeasRepUeSubscriptionFilterCriteriaNrMrs{"myApp", expectedAssocId, expectedNrcgi, []TriggerNr{1}} + expectedCallBackRef := "myCallbakRef" + expectedLinkType := LinkType{"/" + testScenarioName + "/rni/v2/subscriptions/" + subscriptionId} + expectedResponse := NrMeasRepUeSubscription{&CaReconfSubscriptionLinks{&expectedLinkType}, expectedCallBackRef, nil, &expectedFilter, NR_MEAS_REP_UE_SUBSCRIPTION} + + expectedResponseStr, err := json.Marshal(expectedResponse) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request vars section + ******************************/ + vars := make(map[string]string) + vars["subscriptionId"] = subscriptionId + + /****************************** + * request body section + ******************************/ + + subscription1 := NrMeasRepUeSubscription{&CaReconfSubscriptionLinks{&expectedLinkType}, expectedCallBackRef, nil, &expectedFilter, NR_MEAS_REP_UE_SUBSCRIPTION} + + body, err := json.Marshal(subscription1) + if err != nil { + t.Fatalf(err.Error()) + } + + /****************************** + * request queries section + ******************************/ + + /****************************** + * request execution section + ******************************/ + + if expectSuccess { + nrMr, err := sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), vars, nil, http.StatusOK, SubscriptionsPUT) + if err != nil { + t.Fatalf("Failed to get expected response") + } + + var respBody MeasRepUeSubscription + err = json.Unmarshal([]byte(nrMr), &respBody) + if err != nil { + t.Fatalf("Failed to get expected response") + } + if nrMr != string(expectedResponseStr) { + t.Fatalf("Failed to get expected response") + } + return string(expectedResponseStr) + } else { + _, err = sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), vars, nil, http.StatusNotFound, SubscriptionsPUT) + if err != nil { + t.Fatalf("Failed to get expected response") + } + return "" + } +} + func TestSubscriptionCellChangeNotification(t *testing.T) { fmt.Println("--- ", t.Name()) @@ -1651,6 +2029,131 @@ func TestSubscriptionRabRelNotification(t *testing.T) { } +func TestSubscriptionMeasRepUeNotification(t *testing.T) { + + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initializeVars() + + err := Init() + if err != nil { + t.Fatalf("Error initializing test basic procedure") + } + err = Run() + if err != nil { + t.Fatalf("Error running test basic procedure") + } + + fmt.Println("Set a scenario") + initialiseScenario(testScenario) + + //****************************** + // * expected response section + // ****************************** / + expectedPlmnInNotif := Plmn{Mcc: "123", Mnc: "456"} + expectedCellId := "2345678" + expectedEcgi := Ecgi{Plmn: &expectedPlmnInNotif, CellId: expectedCellId} + movingUeAddr := "ue1" //based on the scenario change + expectedAssocIdInNotif1 := AssociateId{Type_: 1, Value: movingUeAddr} + expectedAssocIdInNotif := []AssociateId{expectedAssocIdInNotif1} + expectedTrigger := []Trigger{1} + expectedFilter := MeasRepUeSubscriptionFilterCriteriaAssocTri{Trigger: expectedTrigger} + expectedCallBackRef := "myCallbakRef" + //expectedExpiry := TimeStamp{0, 1988599770} + + //****************************** + // * request vars section + // ****************************** / + + //****************************** + // * request body section + // ****************************** / + + measRepUeSubscriptionPost1 := MeasRepUeSubscription{nil, expectedCallBackRef, nil, &expectedFilter, MEAS_REP_UE_SUBSCRIPTION} + + body, err := json.Marshal(measRepUeSubscriptionPost1) + if err != nil { + t.Fatalf(err.Error()) + } + + //****************************** + // * request queries section + // ****************************** / + + //****************************** + // * request execution section + // ****************************** / + + _, err = sendRequest(http.MethodPost, "/subscriptions", bytes.NewBuffer(body), nil, nil, http.StatusCreated, SubscriptionsPOST) + if err != nil { + t.Fatalf("Failed to get expected response") + } + + // updateScenario("mobility1") + time.Sleep(100 * time.Millisecond) + // updateScenario("mobility2") + + metricStore, err := ms.NewMetricStore(currentStoreName, sandboxName, influxTestAddr, redisTestAddr) + if err != nil { + t.Fatalf("Failed to create a store") + } + + httpLog, err := metricStore.GetHttpMetric(logModuleRNIS, "TX", "", 1) + if err != nil || len(httpLog) != 1 { + t.Fatalf("Failed to get metric") + } + + var notification MeasRepUeNotification + err = json.Unmarshal([]byte(httpLog[0].Body), ¬ification) + if err != nil { + t.Fatalf("Failed to get expected response") + } + + //transform the assocId in string for comparison purpose + jsonResult, err := json.Marshal(notification.AssociateId) + if err != nil { + t.Fatalf(err.Error()) + } + notificationAssocIdStr := string(jsonResult) + + //transform the ecgi in string for comparison purpose + jsonResult, err = json.Marshal(notification.Ecgi) + if err != nil { + t.Fatalf(err.Error()) + } + notificationEcgiStr := string(jsonResult) + + jsonResult, err = json.Marshal(expectedAssocIdInNotif) + if err != nil { + t.Fatalf(err.Error()) + } + expectedAssocIdStr := string(jsonResult) + + jsonResult, err = json.Marshal(expectedEcgi) + if err != nil { + t.Fatalf(err.Error()) + } + expectedEcgiStr := string(jsonResult) + + //only check for ecgi, erabId, erabQosParameters and assocId, other values are dynamic such as the timestamp + if (notificationEcgiStr != expectedEcgiStr) || + notification.Rsrp != 0 || + notification.Rsrq != 0 || + (notificationAssocIdStr != expectedAssocIdStr) { + t.Fatalf("Failed to get expected response") + } + + //cleanup allocated subscription + testSubscriptionDelete(t, strconv.Itoa(nextSubscriptionIdAvailable-1), true) + + //****************************** + // * back to initial state section + // ****************************** / + terminateScenario() + +} + func TestSbi(t *testing.T) { fmt.Println("--- ", t.Name()) @@ -1669,20 +2172,26 @@ func TestSbi(t *testing.T) { ueName := "ue1" appName := "zone1-edge1-iperf" + poaName := "zone1-poa-cell1" /****************************** * expected values section ******************************/ var expectedUeDataStr [2]string var expectedUeData [2]UeData - expectedUeData[INITIAL] = UeData{ueName, 1, &Ecgi{"2345678", &Plmn{"123", "456"}}, 80} - expectedUeData[UPDATED] = UeData{ueName, -1, &Ecgi{"", &Plmn{"123", "456"}}, 80} + expectedUeData[INITIAL] = UeData{ueName, 1, &Ecgi{"2345678", &Plmn{"123", "456"}}, &NRcgi{"", &Plmn{"123", "456"}}, 80, "", nil} + expectedUeData[UPDATED] = UeData{ueName, -1, &Ecgi{"", &Plmn{"123", "456"}}, &NRcgi{"", &Plmn{"123", "456"}}, 80, "", nil} var expectedAppEcgiStr [2]string var expectedAppEcgi [2]Ecgi expectedAppEcgi[INITIAL] = Ecgi{"", &Plmn{"123", "456"}} expectedAppEcgi[UPDATED] = Ecgi{"", &Plmn{"123", "456"}} + var expectedPoaInfoStr [2]string + var expectedPoaInfo [2]PoaInfo + expectedPoaInfo[INITIAL] = PoaInfo{"POA-4G", Ecgi{"2345678", &Plmn{"123", "456"}}, NRcgi{"", nil}} + expectedPoaInfo[UPDATED] = PoaInfo{"POA-4G", Ecgi{"2345678", &Plmn{"123", "456"}}, NRcgi{"", nil}} + j, err := json.Marshal(expectedUeData[INITIAL]) if err != nil { t.Fatalf(err.Error()) @@ -1707,6 +2216,18 @@ func TestSbi(t *testing.T) { } expectedAppEcgiStr[UPDATED] = string(j) + j, err = json.Marshal(expectedPoaInfo[INITIAL]) + if err != nil { + t.Fatalf(err.Error()) + } + expectedPoaInfoStr[INITIAL] = string(j) + + j, err = json.Marshal(expectedPoaInfo[UPDATED]) + if err != nil { + t.Fatalf(err.Error()) + } + expectedPoaInfoStr[UPDATED] = string(j) + /****************************** * execution section ******************************/ @@ -1724,6 +2245,11 @@ func TestSbi(t *testing.T) { t.Fatalf("Failed to get expected response") } + jsonPoaInfo, _ := rc.JSONGetEntry(baseKey+"POA:"+poaName, ".") + if string(jsonPoaInfo) != expectedPoaInfoStr[INITIAL] { + t.Fatalf("Failed to get expected response") + } + updateScenario("mobility1") jsonEcgiInfo, _ = rc.JSONGetEntry(baseKey+"UE:"+ueName, ".") @@ -1737,6 +2263,11 @@ func TestSbi(t *testing.T) { t.Fatalf("Failed to get expected response") } + jsonPoaInfo, _ = rc.JSONGetEntry(baseKey+"POA:"+poaName, ".") + if string(jsonPoaInfo) != expectedPoaInfoStr[UPDATED] { + t.Fatalf("Failed to get expected response") + } + /****************************** * back to initial state section ******************************/ diff --git a/test/system/rnis-system-test.yaml b/test/system/rnis-system-test.yaml index ac2b2225e..1553d57f8 100644 --- a/test/system/rnis-system-test.yaml +++ b/test/system/rnis-system-test.yaml @@ -244,6 +244,37 @@ deployment: linkLatencyVariation: null linkThroughput: null linkPacketLoss: null + - + id: abc18c96-1015-4dee-b32d-cac04ea5db37 + name: ue2 + type: UE + geoData: + eopMode: LOOP + location: null + radius: null + path: null + velocity: null + connected: true + wireless: true + wirelessType: 'wifi,4g,5g,other' + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + macId: '222222222222' + isExternal: null + networkLocationsInRange: null + meta: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null terminalLinkLatency: null terminalLinkLatencyVariation: null terminalLinkThroughput: null diff --git a/test/system/rnis_test.go b/test/system/rnis_test.go index d11df60db..9febc7683 100644 --- a/test/system/rnis_test.go +++ b/test/system/rnis_test.go @@ -83,6 +83,281 @@ func Test_RNIS_load_scenarios(t *testing.T) { } } +func Test_RNIS_periodic_4g_5gNei(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue2" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServing4GEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testSrcServing4GRsrp := int32(97) + testSrcServing4GRsrq := int32(46) + testTrgServing4GEcgi := testSrcServing4GEcgi + testTrgServing4GRsrp := int32(5) + testTrgServing4GRsrq := int32(-15) + test5GPlmn := rnisClient.Plmn{"001", "001"} + test5GPlmnArray := []rnisClient.Plmn{test5GPlmn} + + testTrgNrNCellInfo := rnisClient.MeasRepUeNotificationNrNCellInfo{NrNCellGId: "500000001", NrNCellPlmn: test5GPlmnArray} + testTrgNrNCellInfoArray := [] rnisClient.MeasRepUeNotificationNrNCellInfo{testTrgNrNCellInfo} + testTrgNewRadioMeasNeiInfo := rnisClient.MeasRepUeNotificationNewRadioMeasNeiInfo{NrNCellInfo: testTrgNrNCellInfoArray, NrNCellRsrp: 24, NrNCellRsrq: 24} + + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) + + log.Info("moving asset") + //still connected to 4G but seeing 5G as part of neighbor notification + geMoveAssetCoordinates(testAddress, 7.412917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.MeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateMeasRepUeNotification(&body, &testAssociateId, &testSrcServing4GEcgi, testSrcServing4GRsrp, testSrcServing4GRsrq, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateMeasRepUeNotification(&body, &testAssociateId, &testTrgServing4GEcgi, testTrgServing4GRsrp, testTrgServing4GRsrq, nil, &testTrgNewRadioMeasNeiInfo) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_periodic_4g_4gNei(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue2" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServing4GEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testSrcServing4GRsrp := int32(97) + testSrcServing4GRsrq := int32(46) + testTrgServing4GEcgi := testSrcServing4GEcgi + testTrgServing4GRsrp := int32(5) + testTrgServing4GRsrq := int32(-15) + + testTrgEutranNeighbourCellMeasInfo := rnisClient.MeasRepUeNotificationEutranNeighbourCellMeasInfo{Ecgi: &rnisClient.Ecgi{CellId: "4000002", Plmn: &rnisClient.Plmn{"001", "001"}}, Rsrp: testTrgServing4GRsrp, Rsrq: testTrgServing4GRsrq} + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) + + log.Info("moving asset") + //still connected to 4G but seeing 4G as part of neighbor notification + geMoveAssetCoordinates(testAddress, 7.414917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.MeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateMeasRepUeNotification(&body, &testAssociateId, &testSrcServing4GEcgi, testSrcServing4GRsrp, testSrcServing4GRsrq, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateMeasRepUeNotification(&body, &testAssociateId, &testTrgServing4GEcgi, testTrgServing4GRsrp, testTrgServing4GRsrq, &testTrgEutranNeighbourCellMeasInfo, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_periodic_nr_5g_5gNei(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServingNrcgi := rnisClient.NRcgi{NrcellId: "500000002", Plmn: &rnisClient.Plmn{"001", "001"}} + testSrcServing5GRsrp := int32(127) + testSrcServing5GRsrq := int32(127) + testSrcSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testSrcServing5GRsrp, Rsrq: testSrcServing5GRsrq}} + testSrcServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testSrcServingNrcgi, SCell: &testSrcSCell} + + testTrgServingNrcgi := testSrcServingNrcgi + testTrgServing5GRsrp := int32(24) + testTrgServing5GRsrq := int32(24) + testTrgSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgNCell := rnisClient.NrMeasRepUeNotificationNCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testTrgServingNrcgi, SCell: &testTrgSCell, NCell: &testTrgNCell} + + testTrgNeiNrcgi := "500000003" //not really a nrcgi, its the nrcellid but spec is wrong, so going along + testTrgNei5GRsrp := int32(24) + testTrgNei5GRsrq := int32(24) + + testNrNeighCellMeasInfo := rnisClient.NrMeasRepUeNotificationNrNeighCellMeasInfo{Nrcgi: testTrgNeiNrcgi, MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgNei5GRsrp, Rsrq: testTrgNei5GRsrq}} + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionNrMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) + + log.Info("moving asset") + //still connected to 5G but seeing 5G as part of neighbor notification + geMoveAssetCoordinates(testAddress, 7.420917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.NrMeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateNrMeasRepUeNotification(&body, &testAssociateId, &testSrcServCellMeasInfo, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateNrMeasRepUeNotification(&body, &testAssociateId, &testTrgServCellMeasInfo, &testNrNeighCellMeasInfo, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + +func Test_RNIS_periodic_nr_5g_4gNei(t *testing.T) { + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) + + initialiseRnisTest() + defer clearUpRnisTest() + + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServingNrcgi := rnisClient.NRcgi{NrcellId: "500000002", Plmn: &rnisClient.Plmn{"001", "001"}} + testSrcServing5GRsrp := int32(127) + testSrcServing5GRsrq := int32(127) + testSrcSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testSrcServing5GRsrp, Rsrq: testSrcServing5GRsrq}} + testSrcServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testSrcServingNrcgi, SCell: &testSrcSCell} + + testTrgServingNrcgi := testSrcServingNrcgi + testTrgServing5GRsrp := int32(24) + testTrgServing5GRsrq := int32(24) + testTrgSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgNCell := rnisClient.NrMeasRepUeNotificationNCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testTrgServingNrcgi, SCell: &testTrgSCell, NCell: &testTrgNCell} + + testTrgServing4GRsrp := int32(5) + testTrgServing4GRsrq := int32(-15) + testTrgEutraNeighCellMeasInfo := rnisClient.NrMeasRepUeNotificationEutraNeighCellMeasInfo{Ecgi: &rnisClient.Ecgi{CellId: "4000003", Plmn: &rnisClient.Plmn{"001", "001"}}, Rsrp: testTrgServing4GRsrp, Rsrq: testTrgServing4GRsrq} + + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + //subscriptions to test + err := rnisSubscriptionNrMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } + + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) + + log.Info("moving asset") + //still connected to 5G but seeing 5G as part of neighbor notification + geMoveAssetCoordinates(testAddress, 7.418917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.NrMeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateNrMeasRepUeNotification(&body, &testAssociateId, &testSrcServCellMeasInfo, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateNrMeasRepUeNotification(&body, &testAssociateId, &testTrgServCellMeasInfo, nil, &testTrgEutraNeighCellMeasInfo) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } +} + func Test_RNIS_4g_to_4g_same_zone(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) @@ -479,8 +754,8 @@ func Test_RNIS_5g_to_4g(t *testing.T) { testAddress := "ue1" testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} testEcgi := rnisClient.Ecgi{CellId: "4000003", Plmn: &rnisClient.Plmn{"001", "001"}} - //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA - testErabId := int32(2) + //erabId 1 and 2 allocated to the UEs when the scenario was loaded because was located in a 4g POA + testErabId := int32(3) //moving to initial position geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) @@ -765,8 +1040,8 @@ func Test_RNIS_wifi_to_4g(t *testing.T) { testAddress := "ue1" testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} testEcgi := rnisClient.Ecgi{CellId: "4000004", Plmn: &rnisClient.Plmn{"001", "001"}} - //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA - testErabId := int32(2) + //erabId 1 and 2 allocated to the UEs when the scenario was loaded because was located in a 4g POA + testErabId := int32(3) //moving to initial position geMoveAssetCoordinates(testAddress, 7.425917, 43.733505) @@ -1012,8 +1287,8 @@ func Test_RNIS_generic_to_4g(t *testing.T) { testAddress := "ue1" testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} testEcgi := rnisClient.Ecgi{CellId: "4000005", Plmn: &rnisClient.Plmn{"001", "001"}} - //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA - testErabId := int32(2) + //erabId 1 and 2 allocated to the UEs when the scenario was loaded because was located in a 4g POA + testErabId := int32(3) //moving to initial position geMoveAssetCoordinates(testAddress, 7.431917, 43.733505) @@ -1142,8 +1417,8 @@ func Test_RNIS_none_to_4g(t *testing.T) { testAddress := "ue1" testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} testEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} - //erabId 1 allocated to the UE when the scenario was loaded because was located in a 4g POA - testErabId := int32(2) + //erabId 1 and 2 allocated to the UEs when the scenario was loaded because was located in a 4g POA + testErabId := int32(3) //moving to initial position geMoveAssetCoordinates(testAddress, 0.0, 0.0) @@ -1388,6 +1663,32 @@ func rnisSubscriptionCellChange(associateId rnisClient.AssociateId, callbackRefe return nil } +func rnisSubscriptionMeasRepUe(associateId rnisClient.AssociateId, callbackReference string) error { + + measRepUeSubscription := rnisClient.InlineSubscription{FilterCriteriaAssocTri: &rnisClient.MeasRepUeSubscriptionFilterCriteriaAssocTri{AssociateId: []rnisClient.AssociateId{associateId}, Trigger: []rnisClient.Trigger{1}}, CallbackReference: callbackReference, SubscriptionType: "MeasRepUeSubscription"} + + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), measRepUeSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + +func rnisSubscriptionNrMeasRepUe(associateId rnisClient.AssociateId, callbackReference string) error { + + nrMeasRepUeSubscription := rnisClient.InlineSubscription{FilterCriteriaNrMrs: &rnisClient.NrMeasRepUeSubscriptionFilterCriteriaNrMrs{AssociateId: []rnisClient.AssociateId{associateId}, TriggerNr: []rnisClient.TriggerNr{1}}, CallbackReference: callbackReference, SubscriptionType: "NrMeasRepUeSubscription"} + + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), nrMeasRepUeSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } + + return nil +} + func validateRabEstNotification(notification *rnisClient.RabEstNotification, expectedAssocId *rnisClient.AssociateId, expectedEcgi *rnisClient.Ecgi, expectedErabId int32) string { if notification.NotificationType != "RabEstNotification" { return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "RabEstNotification") @@ -1530,3 +1831,199 @@ func validateCellChangeNotification(notification *rnisClient.CellChangeNotificat } return "" } + +func validateMeasRepUeNotification(notification *rnisClient.MeasRepUeNotification, expectedAssocId *rnisClient.AssociateId, expectedServingEcgi *rnisClient.Ecgi, expectedServingRsrp int32, expectedServingRsrq int32, expectedEutranNeighbourCellMeasInfo *rnisClient.MeasRepUeNotificationEutranNeighbourCellMeasInfo, expectedNewRadioMeasNeiInfo *rnisClient.MeasRepUeNotificationNewRadioMeasNeiInfo) string { + + if notification.NotificationType != "MeasRepUeNotification" { + return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "MeasRepUeNotification") + } + if expectedAssocId != nil { + if notification.AssociateId != nil || len(notification.AssociateId) > 0 { + if notification.AssociateId[0].Type_ != expectedAssocId.Type_ { + return ("AssocId:Type of notification not as expected: " + strconv.Itoa(int(notification.AssociateId[0].Type_)) + " instead of " + strconv.Itoa(int(expectedAssocId.Type_))) + } + if notification.AssociateId[0].Value != expectedAssocId.Value { + return ("AssocId:Value of notification not as expected: " + notification.AssociateId[0].Value + " instead of " + expectedAssocId.Value) + } + if len(notification.AssociateId) > 1 { + return ("AssocId of notification should have only one element") + } + } else { + return ("AssocId of notification is expected") + } + } + if expectedServingEcgi != nil { + if notification.Ecgi != nil { + if notification.Ecgi.CellId != expectedServingEcgi.CellId { + return ("Ecgi:CellId of notification not as expected: " + notification.Ecgi.CellId + " instead of " + expectedServingEcgi.CellId) + } + if notification.Ecgi.Plmn.Mcc != expectedServingEcgi.Plmn.Mcc { + return ("Ecgi:Plmn:Mcc of notification not as expected: " + notification.Ecgi.Plmn.Mcc + " instead of " + expectedServingEcgi.Plmn.Mcc) + } + if notification.Ecgi.Plmn.Mnc != expectedServingEcgi.Plmn.Mnc { + return ("Ecgi:Plmn:Mnc of notification not as expected: " + notification.Ecgi.Plmn.Mnc + " instead of " + expectedServingEcgi.Plmn.Mnc) + } + } else { + return ("Ecgi of notification is expected") + } + } + if notification.Rsrp != expectedServingRsrp { + return ("Rsrp of notification not as expected: " + strconv.Itoa(int(notification.Rsrp)) + " instead of " + strconv.Itoa(int(expectedServingRsrp))) + } + if notification.Rsrq != expectedServingRsrq { + return ("Rsrq of notification not as expected: " + strconv.Itoa(int(notification.Rsrq)) + " instead of " + strconv.Itoa(int(expectedServingRsrq))) + } + + if expectedNewRadioMeasNeiInfo != nil { + if notification.NewRadioMeasNeiInfo != nil || len(notification.NewRadioMeasNeiInfo) > 0 { + if notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellGId != expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellGId { + return ("NewRadioMeasNeiInfo:NrNCellInfo:NrNCellGId of notification not as expected: " + notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellGId + " instead of " + expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellGId) + } + if notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mcc != expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mcc { + return ("NewRadioMeasNeiInfo:NrNCellInfo:NrNCellPlmn:Mcc of notification not as expected: " + notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mcc + " instead of " + expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mcc) + } + if notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mnc != expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mnc { + return ("NewRadioMeasNeiInfo:NrNCellInfo:NrNCellPlmn:Mnc of notification not as expected: " + notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mnc + " instead of " + expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mnc) + } + if notification.NewRadioMeasNeiInfo[0].NrNCellRsrp != expectedNewRadioMeasNeiInfo.NrNCellRsrp { + return ("NewRadioMeasNeiInfo:NrNCellRsrp of notification not as expected: " + strconv.Itoa(int(notification.NewRadioMeasNeiInfo[0].NrNCellRsrp)) + " instead of " + strconv.Itoa(int(expectedNewRadioMeasNeiInfo.NrNCellRsrp))) + } + if notification.NewRadioMeasNeiInfo[0].NrNCellRsrq != expectedNewRadioMeasNeiInfo.NrNCellRsrq { + return ("NewRadioMeasNeiInfo:NrNCellRsrq of notification not as expected: " + strconv.Itoa(int(notification.NewRadioMeasNeiInfo[0].NrNCellRsrq)) + " instead of " + strconv.Itoa(int(expectedNewRadioMeasNeiInfo.NrNCellRsrq))) + } + + if len(notification.NewRadioMeasNeiInfo) > 1 { + return ("NewRadioMeasNeiInfo of notification should have only one element") + } + } else { + return ("NewRadioMeasNeiInfo of notification is expected") + } + } + + if expectedEutranNeighbourCellMeasInfo != nil { + if notification.EutranNeighbourCellMeasInfo != nil || len(notification.EutranNeighbourCellMeasInfo) > 0 { + if notification.EutranNeighbourCellMeasInfo[0].Ecgi.CellId != expectedEutranNeighbourCellMeasInfo.Ecgi.CellId { + return ("EutranNeighbourCellMeasInfo:Ecgi:CellId of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.CellId + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.CellId) + } + if notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mcc != expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mcc { + return ("EutranNeighbourCellMeasInfo:Ecgi:Plmn:Mcc of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mcc + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mcc) + } + if notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mnc != expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mnc { + return ("EutranNeighbourCellMeasInfo:Ecgi:Plmn:Mnc of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mnc + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mnc) + } + if notification.EutranNeighbourCellMeasInfo[0].Rsrp != expectedEutranNeighbourCellMeasInfo.Rsrp { + return ("EutranNeighbourCellMeasInfo:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.EutranNeighbourCellMeasInfo[0].Rsrp)) + " instead of " + strconv.Itoa(int(expectedEutranNeighbourCellMeasInfo.Rsrp))) + } + if notification.EutranNeighbourCellMeasInfo[0].Rsrq != expectedEutranNeighbourCellMeasInfo.Rsrq { + return ("EutranNeighbourCellMeasInfo:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.EutranNeighbourCellMeasInfo[0].Rsrq)) + " instead of " + strconv.Itoa(int(expectedEutranNeighbourCellMeasInfo.Rsrq))) + } + + if len(notification.EutranNeighbourCellMeasInfo) > 1 { + return ("EutranNeighbourCellMeasInfo of notification should have only one element") + } + } else { + return ("EutranNeighbourCellMeasInfo of notification is expected") + } + } + + return "" +} + + +func validateNrMeasRepUeNotification(notification *rnisClient.NrMeasRepUeNotification, expectedAssocId *rnisClient.AssociateId, expectedServCellMeasInfo *rnisClient.NrMeasRepUeNotificationServCellMeasInfo, expectedNrNeighCellMeasInfo *rnisClient.NrMeasRepUeNotificationNrNeighCellMeasInfo, expectedEutraNeighCellMeasInfo *rnisClient.NrMeasRepUeNotificationEutraNeighCellMeasInfo) string { + + if notification.NotificationType != "NrMeasRepUeNotification" { + return ("NotificationType of notification not as expected: " + notification.NotificationType + " instead of " + "NrMeasRepUeNotification") + } + if expectedAssocId != nil { + if notification.AssociateId != nil || len(notification.AssociateId) > 0 { + if notification.AssociateId[0].Type_ != expectedAssocId.Type_ { + return ("AssocId:Type of notification not as expected: " + strconv.Itoa(int(notification.AssociateId[0].Type_)) + " instead of " + strconv.Itoa(int(expectedAssocId.Type_))) + } + if notification.AssociateId[0].Value != expectedAssocId.Value { + return ("AssocId:Value of notification not as expected: " + notification.AssociateId[0].Value + " instead of " + expectedAssocId.Value) + } + if len(notification.AssociateId) > 1 { + return ("AssocId of notification should have only one element") + } + } else { + return ("AssocId of notification is expected") + } + } + + if expectedServCellMeasInfo != nil { + if notification.ServCellMeasInfo != nil || len(notification.ServCellMeasInfo) > 0 { + if notification.ServCellMeasInfo[0].Nrcgi.NrcellId != expectedServCellMeasInfo.Nrcgi.NrcellId { + return ("ServCellMeasInfo:Nrcgi:NrcellId of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.NrcellId + " instead of " + expectedServCellMeasInfo.Nrcgi.NrcellId) + } + if notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mcc != expectedServCellMeasInfo.Nrcgi.Plmn.Mcc { + return ("ServCellMeasInfo:Nrcgi:Plmn.Mcc of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mcc + " instead of " + expectedServCellMeasInfo.Nrcgi.Plmn.Mcc) + } + if notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mnc != expectedServCellMeasInfo.Nrcgi.Plmn.Mnc { + return ("ServCellMeasInfo:Nrcgi:Plmn.Mnc of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mnc + " instead of " + expectedServCellMeasInfo.Nrcgi.Plmn.Mnc) + } + if notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrp != expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrp { + return ("ServCellMeasInfo:SCell:MeasQuantityResultsSsbCell.Rsrp of notification not as expected: " + strconv.Itoa(int(notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrp)) + " instead of " + strconv.Itoa(int(expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrp))) + } + if notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrq != expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrq { + return ("ServCellMeasInfo:SCell:MeasQuantityResultsSsbCell.Rsrq of notification not as expected: " + strconv.Itoa(int(notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrq)) + " instead of " + strconv.Itoa(int(expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrq))) + } + + if len(notification.ServCellMeasInfo) > 1 { + return ("ServCellMeasInfo of notification should have only one element") + } + } else { + return ("ServCellMeasInfo of notification is expected") + } + } + + if expectedNrNeighCellMeasInfo != nil { + if notification.NrNeighCellMeasInfo != nil || len(notification.NrNeighCellMeasInfo) > 0 { + if notification.NrNeighCellMeasInfo[0].Nrcgi != expectedNrNeighCellMeasInfo.Nrcgi { + return ("NrNeighCellMeasInfo:Nrcgi of notification not as expected: " + notification.NrNeighCellMeasInfo[0].Nrcgi + " instead of " + expectedNrNeighCellMeasInfo.Nrcgi) + } + if notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrp != expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrp { + return ("NrNeighCellMeasInfo:MeasQuantityResultsSsbCell:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrp)) + " instead of " + strconv.Itoa(int(expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrp))) + } + if notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrq != expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrq { + return ("NrNeighCellMeasInfo:MeasQuantityResultsSsbCell:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrq)) + " instead of " + strconv.Itoa(int(expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrq))) + } + + if len(notification.NrNeighCellMeasInfo) > 1 { + return ("NrNeighCellMeasInfo of notification should have only one element") + } + } else { + return ("NrNeighCellMeasInfo of notification is expected") + } + } + + if expectedEutraNeighCellMeasInfo != nil { + if notification.EutraNeighCellMeasInfo != nil || len(notification.EutraNeighCellMeasInfo) > 0 { + if notification.EutraNeighCellMeasInfo[0].Ecgi.CellId != expectedEutraNeighCellMeasInfo.Ecgi.CellId { + return ("EutraNeighCellMeasInfo:Ecgi:CellId of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.CellId + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.CellId) + } + if notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mcc != expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mcc { + return ("EutraNeighCellMeasInfo:Ecgi:Plmn:Mcc of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mcc + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mcc) + } + if notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mnc != expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mnc { + return ("EutraNeighCellMeasInfo:Ecgi:Plmn:Mnc of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mnc + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mnc) + } + if notification.EutraNeighCellMeasInfo[0].Rsrp != expectedEutraNeighCellMeasInfo.Rsrp { + return ("EutraNeighCellMeasInfo:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.EutraNeighCellMeasInfo[0].Rsrp)) + " instead of " + strconv.Itoa(int(expectedEutraNeighCellMeasInfo.Rsrp))) + } + if notification.EutraNeighCellMeasInfo[0].Rsrq != expectedEutraNeighCellMeasInfo.Rsrq { + return ("EutraNeighCellMeasInfo:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.EutraNeighCellMeasInfo[0].Rsrq)) + " instead of " + strconv.Itoa(int(expectedEutraNeighCellMeasInfo.Rsrq))) + } + + if len(notification.EutraNeighCellMeasInfo) > 1 { + return ("EutraNeighCellMeasInfo of notification should have only one element") + } + } else { + return ("EutraNeighCellMeasInfo of notification is expected") + } + } + + return "" +} + + -- GitLab From 8e2a63b55e5b8b5649eb34fcee02b69bd5d1cf1d Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Thu, 21 Jan 2021 10:30:42 -0500 Subject: [PATCH 020/194] remove file with duplicated sttuct definition --- .../model_inline_zonal_presence_notification.go | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 examples/demo1/src/demo-server/go/model_inline_zonal_presence_notification.go diff --git a/examples/demo1/src/demo-server/go/model_inline_zonal_presence_notification.go b/examples/demo1/src/demo-server/go/model_inline_zonal_presence_notification.go deleted file mode 100644 index fee2dc90c..000000000 --- a/examples/demo1/src/demo-server/go/model_inline_zonal_presence_notification.go +++ /dev/null @@ -1,16 +0,0 @@ -/* - * MEEP Demo App API - * - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * API version: 0.0.1 - * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) - */ - -package server - -type InlineTrackingNotification struct { - - ZonalPresenceNotification *TrackingNotification `json:"zonalPresenceNotification"` -} - -- GitLab From fa433e757c97e366f4dfb9db5b93f11a3ac29622 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Thu, 21 Jan 2021 14:38:28 -0500 Subject: [PATCH 021/194] pr review --- go-apps/meep-rnis/sbi/rnis-sbi.go | 60 ++- test/system/rnis_test.go | 654 +++++++++++++++--------------- 2 files changed, 352 insertions(+), 362 deletions(-) diff --git a/go-apps/meep-rnis/sbi/rnis-sbi.go b/go-apps/meep-rnis/sbi/rnis-sbi.go index 974a0ed47..29680bd6c 100755 --- a/go-apps/meep-rnis/sbi/rnis-sbi.go +++ b/go-apps/meep-rnis/sbi/rnis-sbi.go @@ -366,42 +366,36 @@ func processActiveScenarioUpdate() { } // Update POA Cellular and Wifi info - poaTypeList := [4]string{mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi, mod.NodeTypePoa} - for _, poaType := range poaTypeList { - - poaNameList := sbi.activeModel.GetNodeNames(poaType) - for _, name := range poaNameList { - node := sbi.activeModel.GetNode(name) - if node != nil { - nl := node.(*dataModel.NetworkLocation) - - mnc := "" - mcc := "" - cellId := "" - - switch poaType { - case mod.NodeTypePoa4G, mod.NodeTypePoa5G: - poaParent := sbi.activeModel.GetNodeParent(name) - if zone, ok := poaParent.(*dataModel.Zone); ok { - zoneParent := sbi.activeModel.GetNodeParent(zone.Name) - if domain, ok := zoneParent.(*dataModel.Domain); ok { - if domain.CellularDomainConfig != nil { - mnc = domain.CellularDomainConfig.Mnc - mcc = domain.CellularDomainConfig.Mcc - cellId = domain.CellularDomainConfig.DefaultCellId - } - } - } - if nl.Poa4GConfig != nil { - cellId = nl.Poa4GConfig.CellId - } else { - if nl.Poa5GConfig != nil { - cellId = nl.Poa5GConfig.CellId + poaNameList := sbi.activeModel.GetNodeNames(mod.NodeTypePoa4G, mod.NodeTypePoa5G, mod.NodeTypePoaWifi, mod.NodeTypePoa) + for _, name := range poaNameList { + node := sbi.activeModel.GetNode(name) + if node != nil { + nl := node.(*dataModel.NetworkLocation) + + mnc := "" + mcc := "" + cellId := "" + + switch nl.Type_ { + case mod.NodeTypePoa4G, mod.NodeTypePoa5G: + poaParent := sbi.activeModel.GetNodeParent(name) + if zone, ok := poaParent.(*dataModel.Zone); ok { + zoneParent := sbi.activeModel.GetNodeParent(zone.Name) + if domain, ok := zoneParent.(*dataModel.Domain); ok { + if domain.CellularDomainConfig != nil { + mnc = domain.CellularDomainConfig.Mnc + mcc = domain.CellularDomainConfig.Mcc + cellId = domain.CellularDomainConfig.DefaultCellId } } - - sbi.updatePoaInfoCB(name, poaType, mnc, mcc, cellId) } + if nl.Poa4GConfig != nil { + cellId = nl.Poa4GConfig.CellId + } else if nl.Poa5GConfig != nil { + cellId = nl.Poa5GConfig.CellId + } + + sbi.updatePoaInfoCB(name, nl.Type_, mnc, mcc, cellId) } } } diff --git a/test/system/rnis_test.go b/test/system/rnis_test.go index 9febc7683..66ef27d56 100644 --- a/test/system/rnis_test.go +++ b/test/system/rnis_test.go @@ -84,278 +84,277 @@ func Test_RNIS_load_scenarios(t *testing.T) { } func Test_RNIS_periodic_4g_5gNei(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) - initialiseRnisTest() - defer clearUpRnisTest() + initialiseRnisTest() + defer clearUpRnisTest() - testAddress := "ue2" - testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} - testSrcServing4GEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testAddress := "ue2" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServing4GEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} testSrcServing4GRsrp := int32(97) - testSrcServing4GRsrq := int32(46) - testTrgServing4GEcgi := testSrcServing4GEcgi - testTrgServing4GRsrp := int32(5) - testTrgServing4GRsrq := int32(-15) - test5GPlmn := rnisClient.Plmn{"001", "001"} - test5GPlmnArray := []rnisClient.Plmn{test5GPlmn} - - testTrgNrNCellInfo := rnisClient.MeasRepUeNotificationNrNCellInfo{NrNCellGId: "500000001", NrNCellPlmn: test5GPlmnArray} - testTrgNrNCellInfoArray := [] rnisClient.MeasRepUeNotificationNrNCellInfo{testTrgNrNCellInfo} - testTrgNewRadioMeasNeiInfo := rnisClient.MeasRepUeNotificationNewRadioMeasNeiInfo{NrNCellInfo: testTrgNrNCellInfoArray, NrNCellRsrp: 24, NrNCellRsrq: 24} + testSrcServing4GRsrq := int32(46) + testTrgServing4GEcgi := testSrcServing4GEcgi + testTrgServing4GRsrp := int32(5) + testTrgServing4GRsrq := int32(-15) + test5GPlmn := rnisClient.Plmn{"001", "001"} + test5GPlmnArray := []rnisClient.Plmn{test5GPlmn} + testTrgNrNCellInfo := rnisClient.MeasRepUeNotificationNrNCellInfo{NrNCellGId: "500000001", NrNCellPlmn: test5GPlmnArray} + testTrgNrNCellInfoArray := []rnisClient.MeasRepUeNotificationNrNCellInfo{testTrgNrNCellInfo} + testTrgNewRadioMeasNeiInfo := rnisClient.MeasRepUeNotificationNewRadioMeasNeiInfo{NrNCellInfo: testTrgNrNCellInfoArray, NrNCellRsrp: 24, NrNCellRsrq: 24} - //moving to initial position - geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(2000 * time.Millisecond) + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) - //subscriptions to test - err := rnisSubscriptionMeasRepUe(testAssociateId, rnisServerUrl) - if err != nil { - t.Fatal("Subscription failed: ", err) - } + //subscriptions to test + err := rnisSubscriptionMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } - //wait to make sure the periodic timer got triggered - time.Sleep(1000 * time.Millisecond) + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) - log.Info("moving asset") + log.Info("moving asset") //still connected to 4G but seeing 5G as part of neighbor notification - geMoveAssetCoordinates(testAddress, 7.412917, 43.733505) - time.Sleep(2000 * time.Millisecond) - - if len(httpReqBody) > 1 { - var body rnisClient.MeasRepUeNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr := validateMeasRepUeNotification(&body, &testAssociateId, &testSrcServing4GEcgi, testSrcServing4GRsrp, testSrcServing4GRsrq, nil, nil) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr = validateMeasRepUeNotification(&body, &testAssociateId, &testTrgServing4GEcgi, testTrgServing4GRsrp, testTrgServing4GRsrq, nil, &testTrgNewRadioMeasNeiInfo) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - - } else { - printHttpReqBody() - t.Fatalf("Number of expected notifications not received") - } + geMoveAssetCoordinates(testAddress, 7.412917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.MeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateMeasRepUeNotification(&body, &testAssociateId, &testSrcServing4GEcgi, testSrcServing4GRsrp, testSrcServing4GRsrq, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateMeasRepUeNotification(&body, &testAssociateId, &testTrgServing4GEcgi, testTrgServing4GRsrp, testTrgServing4GRsrq, nil, &testTrgNewRadioMeasNeiInfo) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } } func Test_RNIS_periodic_4g_4gNei(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) - initialiseRnisTest() - defer clearUpRnisTest() + initialiseRnisTest() + defer clearUpRnisTest() - testAddress := "ue2" - testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} - testSrcServing4GEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} + testAddress := "ue2" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServing4GEcgi := rnisClient.Ecgi{CellId: "4000001", Plmn: &rnisClient.Plmn{"001", "001"}} testSrcServing4GRsrp := int32(97) - testSrcServing4GRsrq := int32(46) - testTrgServing4GEcgi := testSrcServing4GEcgi - testTrgServing4GRsrp := int32(5) - testTrgServing4GRsrq := int32(-15) + testSrcServing4GRsrq := int32(46) + testTrgServing4GEcgi := testSrcServing4GEcgi + testTrgServing4GRsrp := int32(5) + testTrgServing4GRsrq := int32(-15) - testTrgEutranNeighbourCellMeasInfo := rnisClient.MeasRepUeNotificationEutranNeighbourCellMeasInfo{Ecgi: &rnisClient.Ecgi{CellId: "4000002", Plmn: &rnisClient.Plmn{"001", "001"}}, Rsrp: testTrgServing4GRsrp, Rsrq: testTrgServing4GRsrq} + testTrgEutranNeighbourCellMeasInfo := rnisClient.MeasRepUeNotificationEutranNeighbourCellMeasInfo{Ecgi: &rnisClient.Ecgi{CellId: "4000002", Plmn: &rnisClient.Plmn{"001", "001"}}, Rsrp: testTrgServing4GRsrp, Rsrq: testTrgServing4GRsrq} - //moving to initial position - geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) - time.Sleep(2000 * time.Millisecond) + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.413917, 43.733505) + time.Sleep(2000 * time.Millisecond) - //subscriptions to test - err := rnisSubscriptionMeasRepUe(testAssociateId, rnisServerUrl) - if err != nil { - t.Fatal("Subscription failed: ", err) - } + //subscriptions to test + err := rnisSubscriptionMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } //wait to make sure the periodic timer got triggered - time.Sleep(1000 * time.Millisecond) + time.Sleep(1000 * time.Millisecond) - log.Info("moving asset") + log.Info("moving asset") //still connected to 4G but seeing 4G as part of neighbor notification - geMoveAssetCoordinates(testAddress, 7.414917, 43.733505) - time.Sleep(2000 * time.Millisecond) - - if len(httpReqBody) > 1 { - var body rnisClient.MeasRepUeNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr := validateMeasRepUeNotification(&body, &testAssociateId, &testSrcServing4GEcgi, testSrcServing4GRsrp, testSrcServing4GRsrq, nil, nil) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr = validateMeasRepUeNotification(&body, &testAssociateId, &testTrgServing4GEcgi, testTrgServing4GRsrp, testTrgServing4GRsrq, &testTrgEutranNeighbourCellMeasInfo, nil) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - - } else { - printHttpReqBody() - t.Fatalf("Number of expected notifications not received") - } + geMoveAssetCoordinates(testAddress, 7.414917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.MeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateMeasRepUeNotification(&body, &testAssociateId, &testSrcServing4GEcgi, testSrcServing4GRsrp, testSrcServing4GRsrq, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateMeasRepUeNotification(&body, &testAssociateId, &testTrgServing4GEcgi, testTrgServing4GRsrp, testTrgServing4GRsrq, &testTrgEutranNeighbourCellMeasInfo, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } } func Test_RNIS_periodic_nr_5g_5gNei(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) - initialiseRnisTest() - defer clearUpRnisTest() + initialiseRnisTest() + defer clearUpRnisTest() - testAddress := "ue1" - testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} - testSrcServingNrcgi := rnisClient.NRcgi{NrcellId: "500000002", Plmn: &rnisClient.Plmn{"001", "001"}} + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServingNrcgi := rnisClient.NRcgi{NrcellId: "500000002", Plmn: &rnisClient.Plmn{"001", "001"}} testSrcServing5GRsrp := int32(127) - testSrcServing5GRsrq := int32(127) + testSrcServing5GRsrq := int32(127) testSrcSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testSrcServing5GRsrp, Rsrq: testSrcServing5GRsrq}} testSrcServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testSrcServingNrcgi, SCell: &testSrcSCell} - testTrgServingNrcgi := testSrcServingNrcgi - testTrgServing5GRsrp := int32(24) - testTrgServing5GRsrq := int32(24) - testTrgSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} - testTrgNCell := rnisClient.NrMeasRepUeNotificationNCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} - testTrgServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testTrgServingNrcgi, SCell: &testTrgSCell, NCell: &testTrgNCell} + testTrgServingNrcgi := testSrcServingNrcgi + testTrgServing5GRsrp := int32(24) + testTrgServing5GRsrq := int32(24) + testTrgSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgNCell := rnisClient.NrMeasRepUeNotificationNCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testTrgServingNrcgi, SCell: &testTrgSCell, NCell: &testTrgNCell} testTrgNeiNrcgi := "500000003" //not really a nrcgi, its the nrcellid but spec is wrong, so going along - testTrgNei5GRsrp := int32(24) - testTrgNei5GRsrq := int32(24) + testTrgNei5GRsrp := int32(24) + testTrgNei5GRsrq := int32(24) testNrNeighCellMeasInfo := rnisClient.NrMeasRepUeNotificationNrNeighCellMeasInfo{Nrcgi: testTrgNeiNrcgi, MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgNei5GRsrp, Rsrq: testTrgNei5GRsrq}} - //moving to initial position - geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(2000 * time.Millisecond) + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) - //subscriptions to test - err := rnisSubscriptionNrMeasRepUe(testAssociateId, rnisServerUrl) - if err != nil { - t.Fatal("Subscription failed: ", err) - } + //subscriptions to test + err := rnisSubscriptionNrMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } - //wait to make sure the periodic timer got triggered - time.Sleep(1000 * time.Millisecond) + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) - log.Info("moving asset") + log.Info("moving asset") //still connected to 5G but seeing 5G as part of neighbor notification - geMoveAssetCoordinates(testAddress, 7.420917, 43.733505) - time.Sleep(2000 * time.Millisecond) - - if len(httpReqBody) > 1 { - var body rnisClient.NrMeasRepUeNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr := validateNrMeasRepUeNotification(&body, &testAssociateId, &testSrcServCellMeasInfo, nil, nil) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr = validateNrMeasRepUeNotification(&body, &testAssociateId, &testTrgServCellMeasInfo, &testNrNeighCellMeasInfo, nil) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - - } else { - printHttpReqBody() - t.Fatalf("Number of expected notifications not received") - } + geMoveAssetCoordinates(testAddress, 7.420917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.NrMeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateNrMeasRepUeNotification(&body, &testAssociateId, &testSrcServCellMeasInfo, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateNrMeasRepUeNotification(&body, &testAssociateId, &testTrgServCellMeasInfo, &testNrNeighCellMeasInfo, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } } func Test_RNIS_periodic_nr_5g_4gNei(t *testing.T) { - fmt.Println("--- ", t.Name()) - log.MeepTextLogInit(t.Name()) + fmt.Println("--- ", t.Name()) + log.MeepTextLogInit(t.Name()) - initialiseRnisTest() - defer clearUpRnisTest() + initialiseRnisTest() + defer clearUpRnisTest() - testAddress := "ue1" - testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} - testSrcServingNrcgi := rnisClient.NRcgi{NrcellId: "500000002", Plmn: &rnisClient.Plmn{"001", "001"}} + testAddress := "ue1" + testAssociateId := rnisClient.AssociateId{Type_: 1, Value: testAddress} + testSrcServingNrcgi := rnisClient.NRcgi{NrcellId: "500000002", Plmn: &rnisClient.Plmn{"001", "001"}} testSrcServing5GRsrp := int32(127) - testSrcServing5GRsrq := int32(127) + testSrcServing5GRsrq := int32(127) testSrcSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testSrcServing5GRsrp, Rsrq: testSrcServing5GRsrq}} testSrcServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testSrcServingNrcgi, SCell: &testSrcSCell} - testTrgServingNrcgi := testSrcServingNrcgi - testTrgServing5GRsrp := int32(24) - testTrgServing5GRsrq := int32(24) - testTrgSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} - testTrgNCell := rnisClient.NrMeasRepUeNotificationNCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} - testTrgServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testTrgServingNrcgi, SCell: &testTrgSCell, NCell: &testTrgNCell} + testTrgServingNrcgi := testSrcServingNrcgi + testTrgServing5GRsrp := int32(24) + testTrgServing5GRsrq := int32(24) + testTrgSCell := rnisClient.NrMeasRepUeNotificationSCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgNCell := rnisClient.NrMeasRepUeNotificationNCell{MeasQuantityResultsSsbCell: &rnisClient.MeasQuantityResultsNr{Rsrp: testTrgServing5GRsrp, Rsrq: testTrgServing5GRsrq}} + testTrgServCellMeasInfo := rnisClient.NrMeasRepUeNotificationServCellMeasInfo{Nrcgi: &testTrgServingNrcgi, SCell: &testTrgSCell, NCell: &testTrgNCell} - testTrgServing4GRsrp := int32(5) - testTrgServing4GRsrq := int32(-15) - testTrgEutraNeighCellMeasInfo := rnisClient.NrMeasRepUeNotificationEutraNeighCellMeasInfo{Ecgi: &rnisClient.Ecgi{CellId: "4000003", Plmn: &rnisClient.Plmn{"001", "001"}}, Rsrp: testTrgServing4GRsrp, Rsrq: testTrgServing4GRsrq} + testTrgServing4GRsrp := int32(5) + testTrgServing4GRsrq := int32(-15) + testTrgEutraNeighCellMeasInfo := rnisClient.NrMeasRepUeNotificationEutraNeighCellMeasInfo{Ecgi: &rnisClient.Ecgi{CellId: "4000003", Plmn: &rnisClient.Plmn{"001", "001"}}, Rsrp: testTrgServing4GRsrp, Rsrq: testTrgServing4GRsrq} - //moving to initial position - geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) - time.Sleep(2000 * time.Millisecond) + //moving to initial position + geMoveAssetCoordinates(testAddress, 7.419917, 43.733505) + time.Sleep(2000 * time.Millisecond) - //subscriptions to test - err := rnisSubscriptionNrMeasRepUe(testAssociateId, rnisServerUrl) - if err != nil { - t.Fatal("Subscription failed: ", err) - } + //subscriptions to test + err := rnisSubscriptionNrMeasRepUe(testAssociateId, rnisServerUrl) + if err != nil { + t.Fatal("Subscription failed: ", err) + } - //wait to make sure the periodic timer got triggered - time.Sleep(1000 * time.Millisecond) + //wait to make sure the periodic timer got triggered + time.Sleep(1000 * time.Millisecond) - log.Info("moving asset") + log.Info("moving asset") //still connected to 5G but seeing 5G as part of neighbor notification - geMoveAssetCoordinates(testAddress, 7.418917, 43.733505) - time.Sleep(2000 * time.Millisecond) - - if len(httpReqBody) > 1 { - var body rnisClient.NrMeasRepUeNotification - err = json.Unmarshal([]byte(httpReqBody[0]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr := validateNrMeasRepUeNotification(&body, &testAssociateId, &testSrcServCellMeasInfo, nil, nil) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) - if err != nil { - t.Fatalf("cannot unmarshall response") - } - errStr = validateNrMeasRepUeNotification(&body, &testAssociateId, &testTrgServCellMeasInfo, nil, &testTrgEutraNeighCellMeasInfo) - if errStr != "" { - printHttpReqBody() - t.Fatalf(errStr) - } - - } else { - printHttpReqBody() - t.Fatalf("Number of expected notifications not received") - } + geMoveAssetCoordinates(testAddress, 7.418917, 43.733505) + time.Sleep(2000 * time.Millisecond) + + if len(httpReqBody) > 1 { + var body rnisClient.NrMeasRepUeNotification + err = json.Unmarshal([]byte(httpReqBody[0]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr := validateNrMeasRepUeNotification(&body, &testAssociateId, &testSrcServCellMeasInfo, nil, nil) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + err = json.Unmarshal([]byte(httpReqBody[len(httpReqBody)-1]), &body) + if err != nil { + t.Fatalf("cannot unmarshall response") + } + errStr = validateNrMeasRepUeNotification(&body, &testAssociateId, &testTrgServCellMeasInfo, nil, &testTrgEutraNeighCellMeasInfo) + if errStr != "" { + printHttpReqBody() + t.Fatalf(errStr) + } + + } else { + printHttpReqBody() + t.Fatalf("Number of expected notifications not received") + } } func Test_RNIS_4g_to_4g_same_zone(t *testing.T) { @@ -1665,28 +1664,28 @@ func rnisSubscriptionCellChange(associateId rnisClient.AssociateId, callbackRefe func rnisSubscriptionMeasRepUe(associateId rnisClient.AssociateId, callbackReference string) error { - measRepUeSubscription := rnisClient.InlineSubscription{FilterCriteriaAssocTri: &rnisClient.MeasRepUeSubscriptionFilterCriteriaAssocTri{AssociateId: []rnisClient.AssociateId{associateId}, Trigger: []rnisClient.Trigger{1}}, CallbackReference: callbackReference, SubscriptionType: "MeasRepUeSubscription"} + measRepUeSubscription := rnisClient.InlineSubscription{FilterCriteriaAssocTri: &rnisClient.MeasRepUeSubscriptionFilterCriteriaAssocTri{AssociateId: []rnisClient.AssociateId{associateId}, Trigger: []rnisClient.Trigger{1}}, CallbackReference: callbackReference, SubscriptionType: "MeasRepUeSubscription"} - _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), measRepUeSubscription) - if err != nil { - log.Error("Failed to send subscription: ", err) - return err - } + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), measRepUeSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } - return nil + return nil } func rnisSubscriptionNrMeasRepUe(associateId rnisClient.AssociateId, callbackReference string) error { - nrMeasRepUeSubscription := rnisClient.InlineSubscription{FilterCriteriaNrMrs: &rnisClient.NrMeasRepUeSubscriptionFilterCriteriaNrMrs{AssociateId: []rnisClient.AssociateId{associateId}, TriggerNr: []rnisClient.TriggerNr{1}}, CallbackReference: callbackReference, SubscriptionType: "NrMeasRepUeSubscription"} + nrMeasRepUeSubscription := rnisClient.InlineSubscription{FilterCriteriaNrMrs: &rnisClient.NrMeasRepUeSubscriptionFilterCriteriaNrMrs{AssociateId: []rnisClient.AssociateId{associateId}, TriggerNr: []rnisClient.TriggerNr{1}}, CallbackReference: callbackReference, SubscriptionType: "NrMeasRepUeSubscription"} - _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), nrMeasRepUeSubscription) - if err != nil { - log.Error("Failed to send subscription: ", err) - return err - } + _, _, err := rnisAppClient.RniApi.SubscriptionsPOST(context.TODO(), nrMeasRepUeSubscription) + if err != nil { + log.Error("Failed to send subscription: ", err) + return err + } - return nil + return nil } func validateRabEstNotification(notification *rnisClient.RabEstNotification, expectedAssocId *rnisClient.AssociateId, expectedEcgi *rnisClient.Ecgi, expectedErabId int32) string { @@ -1867,12 +1866,12 @@ func validateMeasRepUeNotification(notification *rnisClient.MeasRepUeNotificatio return ("Ecgi of notification is expected") } } - if notification.Rsrp != expectedServingRsrp { - return ("Rsrp of notification not as expected: " + strconv.Itoa(int(notification.Rsrp)) + " instead of " + strconv.Itoa(int(expectedServingRsrp))) - } - if notification.Rsrq != expectedServingRsrq { - return ("Rsrq of notification not as expected: " + strconv.Itoa(int(notification.Rsrq)) + " instead of " + strconv.Itoa(int(expectedServingRsrq))) - } + if notification.Rsrp != expectedServingRsrp { + return ("Rsrp of notification not as expected: " + strconv.Itoa(int(notification.Rsrp)) + " instead of " + strconv.Itoa(int(expectedServingRsrp))) + } + if notification.Rsrq != expectedServingRsrq { + return ("Rsrq of notification not as expected: " + strconv.Itoa(int(notification.Rsrq)) + " instead of " + strconv.Itoa(int(expectedServingRsrq))) + } if expectedNewRadioMeasNeiInfo != nil { if notification.NewRadioMeasNeiInfo != nil || len(notification.NewRadioMeasNeiInfo) > 0 { @@ -1882,15 +1881,15 @@ func validateMeasRepUeNotification(notification *rnisClient.MeasRepUeNotificatio if notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mcc != expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mcc { return ("NewRadioMeasNeiInfo:NrNCellInfo:NrNCellPlmn:Mcc of notification not as expected: " + notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mcc + " instead of " + expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mcc) } - if notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mnc != expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mnc { - return ("NewRadioMeasNeiInfo:NrNCellInfo:NrNCellPlmn:Mnc of notification not as expected: " + notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mnc + " instead of " + expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mnc) + if notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mnc != expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mnc { + return ("NewRadioMeasNeiInfo:NrNCellInfo:NrNCellPlmn:Mnc of notification not as expected: " + notification.NewRadioMeasNeiInfo[0].NrNCellInfo[0].NrNCellPlmn[0].Mnc + " instead of " + expectedNewRadioMeasNeiInfo.NrNCellInfo[0].NrNCellPlmn[0].Mnc) + } + if notification.NewRadioMeasNeiInfo[0].NrNCellRsrp != expectedNewRadioMeasNeiInfo.NrNCellRsrp { + return ("NewRadioMeasNeiInfo:NrNCellRsrp of notification not as expected: " + strconv.Itoa(int(notification.NewRadioMeasNeiInfo[0].NrNCellRsrp)) + " instead of " + strconv.Itoa(int(expectedNewRadioMeasNeiInfo.NrNCellRsrp))) + } + if notification.NewRadioMeasNeiInfo[0].NrNCellRsrq != expectedNewRadioMeasNeiInfo.NrNCellRsrq { + return ("NewRadioMeasNeiInfo:NrNCellRsrq of notification not as expected: " + strconv.Itoa(int(notification.NewRadioMeasNeiInfo[0].NrNCellRsrq)) + " instead of " + strconv.Itoa(int(expectedNewRadioMeasNeiInfo.NrNCellRsrq))) } - if notification.NewRadioMeasNeiInfo[0].NrNCellRsrp != expectedNewRadioMeasNeiInfo.NrNCellRsrp { - return ("NewRadioMeasNeiInfo:NrNCellRsrp of notification not as expected: " + strconv.Itoa(int(notification.NewRadioMeasNeiInfo[0].NrNCellRsrp)) + " instead of " + strconv.Itoa(int(expectedNewRadioMeasNeiInfo.NrNCellRsrp))) - } - if notification.NewRadioMeasNeiInfo[0].NrNCellRsrq != expectedNewRadioMeasNeiInfo.NrNCellRsrq { - return ("NewRadioMeasNeiInfo:NrNCellRsrq of notification not as expected: " + strconv.Itoa(int(notification.NewRadioMeasNeiInfo[0].NrNCellRsrq)) + " instead of " + strconv.Itoa(int(expectedNewRadioMeasNeiInfo.NrNCellRsrq))) - } if len(notification.NewRadioMeasNeiInfo) > 1 { return ("NewRadioMeasNeiInfo of notification should have only one element") @@ -1900,36 +1899,35 @@ func validateMeasRepUeNotification(notification *rnisClient.MeasRepUeNotificatio } } - if expectedEutranNeighbourCellMeasInfo != nil { - if notification.EutranNeighbourCellMeasInfo != nil || len(notification.EutranNeighbourCellMeasInfo) > 0 { - if notification.EutranNeighbourCellMeasInfo[0].Ecgi.CellId != expectedEutranNeighbourCellMeasInfo.Ecgi.CellId { - return ("EutranNeighbourCellMeasInfo:Ecgi:CellId of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.CellId + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.CellId) - } - if notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mcc != expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mcc { - return ("EutranNeighbourCellMeasInfo:Ecgi:Plmn:Mcc of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mcc + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mcc) - } - if notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mnc != expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mnc { - return ("EutranNeighbourCellMeasInfo:Ecgi:Plmn:Mnc of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mnc + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mnc) - } - if notification.EutranNeighbourCellMeasInfo[0].Rsrp != expectedEutranNeighbourCellMeasInfo.Rsrp { - return ("EutranNeighbourCellMeasInfo:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.EutranNeighbourCellMeasInfo[0].Rsrp)) + " instead of " + strconv.Itoa(int(expectedEutranNeighbourCellMeasInfo.Rsrp))) - } - if notification.EutranNeighbourCellMeasInfo[0].Rsrq != expectedEutranNeighbourCellMeasInfo.Rsrq { - return ("EutranNeighbourCellMeasInfo:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.EutranNeighbourCellMeasInfo[0].Rsrq)) + " instead of " + strconv.Itoa(int(expectedEutranNeighbourCellMeasInfo.Rsrq))) - } - - if len(notification.EutranNeighbourCellMeasInfo) > 1 { - return ("EutranNeighbourCellMeasInfo of notification should have only one element") - } - } else { - return ("EutranNeighbourCellMeasInfo of notification is expected") - } - } + if expectedEutranNeighbourCellMeasInfo != nil { + if notification.EutranNeighbourCellMeasInfo != nil || len(notification.EutranNeighbourCellMeasInfo) > 0 { + if notification.EutranNeighbourCellMeasInfo[0].Ecgi.CellId != expectedEutranNeighbourCellMeasInfo.Ecgi.CellId { + return ("EutranNeighbourCellMeasInfo:Ecgi:CellId of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.CellId + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.CellId) + } + if notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mcc != expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mcc { + return ("EutranNeighbourCellMeasInfo:Ecgi:Plmn:Mcc of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mcc + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mcc) + } + if notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mnc != expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mnc { + return ("EutranNeighbourCellMeasInfo:Ecgi:Plmn:Mnc of notification not as expected: " + notification.EutranNeighbourCellMeasInfo[0].Ecgi.Plmn.Mnc + " instead of " + expectedEutranNeighbourCellMeasInfo.Ecgi.Plmn.Mnc) + } + if notification.EutranNeighbourCellMeasInfo[0].Rsrp != expectedEutranNeighbourCellMeasInfo.Rsrp { + return ("EutranNeighbourCellMeasInfo:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.EutranNeighbourCellMeasInfo[0].Rsrp)) + " instead of " + strconv.Itoa(int(expectedEutranNeighbourCellMeasInfo.Rsrp))) + } + if notification.EutranNeighbourCellMeasInfo[0].Rsrq != expectedEutranNeighbourCellMeasInfo.Rsrq { + return ("EutranNeighbourCellMeasInfo:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.EutranNeighbourCellMeasInfo[0].Rsrq)) + " instead of " + strconv.Itoa(int(expectedEutranNeighbourCellMeasInfo.Rsrq))) + } + + if len(notification.EutranNeighbourCellMeasInfo) > 1 { + return ("EutranNeighbourCellMeasInfo of notification should have only one element") + } + } else { + return ("EutranNeighbourCellMeasInfo of notification is expected") + } + } return "" } - func validateNrMeasRepUeNotification(notification *rnisClient.NrMeasRepUeNotification, expectedAssocId *rnisClient.AssociateId, expectedServCellMeasInfo *rnisClient.NrMeasRepUeNotificationServCellMeasInfo, expectedNrNeighCellMeasInfo *rnisClient.NrMeasRepUeNotificationNrNeighCellMeasInfo, expectedEutraNeighCellMeasInfo *rnisClient.NrMeasRepUeNotificationEutraNeighCellMeasInfo) string { if notification.NotificationType != "NrMeasRepUeNotification" { @@ -1951,43 +1949,43 @@ func validateNrMeasRepUeNotification(notification *rnisClient.NrMeasRepUeNotific } } - if expectedServCellMeasInfo != nil { - if notification.ServCellMeasInfo != nil || len(notification.ServCellMeasInfo) > 0 { - if notification.ServCellMeasInfo[0].Nrcgi.NrcellId != expectedServCellMeasInfo.Nrcgi.NrcellId { - return ("ServCellMeasInfo:Nrcgi:NrcellId of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.NrcellId + " instead of " + expectedServCellMeasInfo.Nrcgi.NrcellId) - } - if notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mcc != expectedServCellMeasInfo.Nrcgi.Plmn.Mcc { - return ("ServCellMeasInfo:Nrcgi:Plmn.Mcc of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mcc + " instead of " + expectedServCellMeasInfo.Nrcgi.Plmn.Mcc) - } - if notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mnc != expectedServCellMeasInfo.Nrcgi.Plmn.Mnc { - return ("ServCellMeasInfo:Nrcgi:Plmn.Mnc of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mnc + " instead of " + expectedServCellMeasInfo.Nrcgi.Plmn.Mnc) - } - if notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrp != expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrp { - return ("ServCellMeasInfo:SCell:MeasQuantityResultsSsbCell.Rsrp of notification not as expected: " + strconv.Itoa(int(notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrp)) + " instead of " + strconv.Itoa(int(expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrp))) - } - if notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrq != expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrq { - return ("ServCellMeasInfo:SCell:MeasQuantityResultsSsbCell.Rsrq of notification not as expected: " + strconv.Itoa(int(notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrq)) + " instead of " + strconv.Itoa(int(expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrq))) - } - - if len(notification.ServCellMeasInfo) > 1 { - return ("ServCellMeasInfo of notification should have only one element") - } - } else { - return ("ServCellMeasInfo of notification is expected") - } - } + if expectedServCellMeasInfo != nil { + if notification.ServCellMeasInfo != nil || len(notification.ServCellMeasInfo) > 0 { + if notification.ServCellMeasInfo[0].Nrcgi.NrcellId != expectedServCellMeasInfo.Nrcgi.NrcellId { + return ("ServCellMeasInfo:Nrcgi:NrcellId of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.NrcellId + " instead of " + expectedServCellMeasInfo.Nrcgi.NrcellId) + } + if notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mcc != expectedServCellMeasInfo.Nrcgi.Plmn.Mcc { + return ("ServCellMeasInfo:Nrcgi:Plmn.Mcc of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mcc + " instead of " + expectedServCellMeasInfo.Nrcgi.Plmn.Mcc) + } + if notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mnc != expectedServCellMeasInfo.Nrcgi.Plmn.Mnc { + return ("ServCellMeasInfo:Nrcgi:Plmn.Mnc of notification not as expected: " + notification.ServCellMeasInfo[0].Nrcgi.Plmn.Mnc + " instead of " + expectedServCellMeasInfo.Nrcgi.Plmn.Mnc) + } + if notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrp != expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrp { + return ("ServCellMeasInfo:SCell:MeasQuantityResultsSsbCell.Rsrp of notification not as expected: " + strconv.Itoa(int(notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrp)) + " instead of " + strconv.Itoa(int(expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrp))) + } + if notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrq != expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrq { + return ("ServCellMeasInfo:SCell:MeasQuantityResultsSsbCell.Rsrq of notification not as expected: " + strconv.Itoa(int(notification.ServCellMeasInfo[0].SCell.MeasQuantityResultsSsbCell.Rsrq)) + " instead of " + strconv.Itoa(int(expectedServCellMeasInfo.SCell.MeasQuantityResultsSsbCell.Rsrq))) + } + + if len(notification.ServCellMeasInfo) > 1 { + return ("ServCellMeasInfo of notification should have only one element") + } + } else { + return ("ServCellMeasInfo of notification is expected") + } + } if expectedNrNeighCellMeasInfo != nil { if notification.NrNeighCellMeasInfo != nil || len(notification.NrNeighCellMeasInfo) > 0 { if notification.NrNeighCellMeasInfo[0].Nrcgi != expectedNrNeighCellMeasInfo.Nrcgi { return ("NrNeighCellMeasInfo:Nrcgi of notification not as expected: " + notification.NrNeighCellMeasInfo[0].Nrcgi + " instead of " + expectedNrNeighCellMeasInfo.Nrcgi) } - if notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrp != expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrp { - return ("NrNeighCellMeasInfo:MeasQuantityResultsSsbCell:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrp)) + " instead of " + strconv.Itoa(int(expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrp))) - } - if notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrq != expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrq { - return ("NrNeighCellMeasInfo:MeasQuantityResultsSsbCell:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrq)) + " instead of " + strconv.Itoa(int(expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrq))) - } + if notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrp != expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrp { + return ("NrNeighCellMeasInfo:MeasQuantityResultsSsbCell:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrp)) + " instead of " + strconv.Itoa(int(expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrp))) + } + if notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrq != expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrq { + return ("NrNeighCellMeasInfo:MeasQuantityResultsSsbCell:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.NrNeighCellMeasInfo[0].MeasQuantityResultsSsbCell.Rsrq)) + " instead of " + strconv.Itoa(int(expectedNrNeighCellMeasInfo.MeasQuantityResultsSsbCell.Rsrq))) + } if len(notification.NrNeighCellMeasInfo) > 1 { return ("NrNeighCellMeasInfo of notification should have only one element") @@ -1997,33 +1995,31 @@ func validateNrMeasRepUeNotification(notification *rnisClient.NrMeasRepUeNotific } } - if expectedEutraNeighCellMeasInfo != nil { - if notification.EutraNeighCellMeasInfo != nil || len(notification.EutraNeighCellMeasInfo) > 0 { - if notification.EutraNeighCellMeasInfo[0].Ecgi.CellId != expectedEutraNeighCellMeasInfo.Ecgi.CellId { - return ("EutraNeighCellMeasInfo:Ecgi:CellId of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.CellId + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.CellId) - } - if notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mcc != expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mcc { - return ("EutraNeighCellMeasInfo:Ecgi:Plmn:Mcc of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mcc + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mcc) - } - if notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mnc != expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mnc { - return ("EutraNeighCellMeasInfo:Ecgi:Plmn:Mnc of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mnc + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mnc) - } - if notification.EutraNeighCellMeasInfo[0].Rsrp != expectedEutraNeighCellMeasInfo.Rsrp { - return ("EutraNeighCellMeasInfo:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.EutraNeighCellMeasInfo[0].Rsrp)) + " instead of " + strconv.Itoa(int(expectedEutraNeighCellMeasInfo.Rsrp))) - } - if notification.EutraNeighCellMeasInfo[0].Rsrq != expectedEutraNeighCellMeasInfo.Rsrq { - return ("EutraNeighCellMeasInfo:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.EutraNeighCellMeasInfo[0].Rsrq)) + " instead of " + strconv.Itoa(int(expectedEutraNeighCellMeasInfo.Rsrq))) - } - - if len(notification.EutraNeighCellMeasInfo) > 1 { - return ("EutraNeighCellMeasInfo of notification should have only one element") - } - } else { - return ("EutraNeighCellMeasInfo of notification is expected") - } - } + if expectedEutraNeighCellMeasInfo != nil { + if notification.EutraNeighCellMeasInfo != nil || len(notification.EutraNeighCellMeasInfo) > 0 { + if notification.EutraNeighCellMeasInfo[0].Ecgi.CellId != expectedEutraNeighCellMeasInfo.Ecgi.CellId { + return ("EutraNeighCellMeasInfo:Ecgi:CellId of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.CellId + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.CellId) + } + if notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mcc != expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mcc { + return ("EutraNeighCellMeasInfo:Ecgi:Plmn:Mcc of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mcc + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mcc) + } + if notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mnc != expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mnc { + return ("EutraNeighCellMeasInfo:Ecgi:Plmn:Mnc of notification not as expected: " + notification.EutraNeighCellMeasInfo[0].Ecgi.Plmn.Mnc + " instead of " + expectedEutraNeighCellMeasInfo.Ecgi.Plmn.Mnc) + } + if notification.EutraNeighCellMeasInfo[0].Rsrp != expectedEutraNeighCellMeasInfo.Rsrp { + return ("EutraNeighCellMeasInfo:Rsrp of notification not as expected: " + strconv.Itoa(int(notification.EutraNeighCellMeasInfo[0].Rsrp)) + " instead of " + strconv.Itoa(int(expectedEutraNeighCellMeasInfo.Rsrp))) + } + if notification.EutraNeighCellMeasInfo[0].Rsrq != expectedEutraNeighCellMeasInfo.Rsrq { + return ("EutraNeighCellMeasInfo:Rsrq of notification not as expected: " + strconv.Itoa(int(notification.EutraNeighCellMeasInfo[0].Rsrq)) + " instead of " + strconv.Itoa(int(expectedEutraNeighCellMeasInfo.Rsrq))) + } + + if len(notification.EutraNeighCellMeasInfo) > 1 { + return ("EutraNeighCellMeasInfo of notification should have only one element") + } + } else { + return ("EutraNeighCellMeasInfo of notification is expected") + } + } return "" } - - -- GitLab From 0dd69a8378ff1c67204c12d4b92fecaed849b362 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Thu, 21 Jan 2021 17:41:42 -0500 Subject: [PATCH 022/194] l2meas 1st merge --- go-apps/meep-rnis/server/api_rni.go | 2 +- go-apps/meep-rnis/server/rnis.go | 168 ++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 1 deletion(-) diff --git a/go-apps/meep-rnis/server/api_rni.go b/go-apps/meep-rnis/server/api_rni.go index bbaeac831..21f6fe5e3 100644 --- a/go-apps/meep-rnis/server/api_rni.go +++ b/go-apps/meep-rnis/server/api_rni.go @@ -28,7 +28,7 @@ import ( ) func Layer2MeasInfoGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) + layer2MeasInfoGet(w, r) } func PlmnInfoGET(w http.ResponseWriter, r *http.Request) { diff --git a/go-apps/meep-rnis/server/rnis.go b/go-apps/meep-rnis/server/rnis.go index 55621fe3f..1092e7903 100644 --- a/go-apps/meep-rnis/server/rnis.go +++ b/go-apps/meep-rnis/server/rnis.go @@ -105,6 +105,12 @@ type RabInfoData struct { rabInfo *RabInfo } +type L2MeasData struct { + queryCellIds []string + queryIpv4Addresses []string + l2Meas *L2Meas +} + type UeData struct { Name string `json:"name"` ErabId int32 `json:"erabId"` @@ -2482,6 +2488,168 @@ func populatePlmnInfo(key string, jsonInfo string, response interface{}) error { return nil } +func layer2MeasInfoGet(w http.ResponseWriter, r *http.Request) { + + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + + var l2MeasData L2MeasData + + u, _ := url.Parse(r.URL.String()) + log.Info("url: ", u.RequestURI()) + q := u.Query() + //meAppName := q.Get("app_ins_id") + + l2MeasData.queryCellIds = q["cell_id"] + l2MeasData.queryIpv4Addresses = q["ue_ipv4_address"] + + seconds := time.Now().Unix() + var timeStamp TimeStamp + timeStamp.Seconds = int32(seconds) + + //meApp is ignored, we use the whole network + + var l2Meas L2Meas + l2MeasData.l2Meas = &l2Meas + + //get from DB + //loop through each UE + keyName := baseKey + "UE:*" + err := rc.ForEachJSONEntry(keyName, populateL2Meas, &l2MeasData) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + l2Meas.TimeStamp = &timeStamp + + // Send response + jsonResponse, err := json.Marshal(l2Meas) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.WriteHeader(http.StatusOK) + fmt.Fprintf(w, string(jsonResponse)) +} + +func populateL2Meas(key string, jsonInfo string, l2MeasData interface{}) error { + // Get query params & userlist from user data + data := l2MeasData.(*L2MeasData) + if data == nil || data.l2Meas == nil { + return errors.New("l2Meas not found in l2MeasData") + } + + // Retrieve user info from DB + var ueData UeData + err := json.Unmarshal([]byte(jsonInfo), &ueData) + if err != nil { + return err + } + + // Ignore entries with no rabId + if ueData.ErabId == -1 { + return nil + } + + partOfFilter := true + for _, cellId := range data.queryCellIds { + if cellId != "" { + partOfFilter = false + if cellId == ueData.Ecgi.CellId { + partOfFilter = true + break + } + } + } + if !partOfFilter { + return nil + } + + //name of the element is used as the ipv4 address at the moment + partOfFilter = true + for _, address := range data.queryIpv4Addresses { + if address != "" { + partOfFilter = false + if address == ueData.Name { + partOfFilter = true + break + } + } + } + if !partOfFilter { + return nil + } + + found := false + + //find if cellUeInfo already exists + var cellUeIndex int + + for index, currentCellUeInfo := range data.l2Meas.CellUEInfo { + if currentCellUeInfo.Ecgi.Plmn.Mcc == ueData.Ecgi.Plmn.Mcc && + currentCellUeInfo.Ecgi.Plmn.Mnc == ueData.Ecgi.Plmn.Mnc && + currentCellUeInfo.Ecgi.CellId == ueData.Ecgi.CellId { + //add ue into the existing cellUserInfo + found = true + cellUeIndex = index + } + } + if !found { + newCellUeInfo := new(L2MeasCellUeInfo) + newEcgi := new(Ecgi) + newPlmn := new(Plmn) + newPlmn.Mcc = ueData.Ecgi.Plmn.Mcc + newPlmn.Mnc = ueData.Ecgi.Plmn.Mnc + newEcgi.Plmn = newPlmn + newEcgi.CellId = ueData.Ecgi.CellId + newCellUeInfo.Ecgi = newEcgi + + assocId := new(AssociateId) + assocId.Type_ = 1 //UE_IPV4_ADDRESS + subKeys := strings.Split(key, ":") + assocId.Value = subKeys[len(subKeys)-1] + newCellUeInfo.AssociateId = assocId + + data.l2Meas.CellUEInfo = append(data.l2Meas.CellUEInfo, *newCellUeInfo) + cellUeIndex = len(data.l2Meas.CellUEInfo) -1 + } + data.l2Meas.CellUEInfo[cellUeIndex].DlNongbrThroughputUe = 77 + + //find if cellInfo already exists + var cellIndex int + + for index, currentCellInfo := range data.l2Meas.CellInfo { + if currentCellInfo.Ecgi.Plmn.Mcc == ueData.Ecgi.Plmn.Mcc && + currentCellInfo.Ecgi.Plmn.Mnc == ueData.Ecgi.Plmn.Mnc && + currentCellInfo.Ecgi.CellId == ueData.Ecgi.CellId { + //add ue into the existing cellUserInfo + found = true + cellIndex = index + } + } + if !found { + newCellInfo := new(L2MeasCellInfo) + newEcgi := new(Ecgi) + newPlmn := new(Plmn) + newPlmn.Mcc = ueData.Ecgi.Plmn.Mcc + newPlmn.Mnc = ueData.Ecgi.Plmn.Mnc + newEcgi.Plmn = newPlmn + newEcgi.CellId = ueData.Ecgi.CellId + newCellInfo.Ecgi = newEcgi + + data.l2Meas.CellInfo = append(data.l2Meas.CellInfo, *newCellInfo) + cellIndex = len(data.l2Meas.CellInfo) -1 + } + + //need to do a qci mapping... since qci can only be 80 for now, using the one that correlates to that + data.l2Meas.CellInfo[cellIndex].NumberOfActiveUeDlNongbrCell++ + data.l2Meas.CellInfo[cellIndex].NumberOfActiveUeUlNongbrCell++ + + return nil +} + func rabInfoGet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") -- GitLab From 9c2eed0d535819c6c42c13db37290960f80e2ab2 Mon Sep 17 00:00:00 2001 From: Simon Pastor Date: Fri, 22 Jan 2021 17:59:50 -0500 Subject: [PATCH 023/194] l2meas endpoint basic support --- go-apps/meep-rnis/sbi/rnis-sbi.go | 65 +++-------- go-apps/meep-rnis/server/convert.go | 6 +- go-apps/meep-rnis/server/rnis.go | 154 +++++++++++++++++++------- go-apps/meep-rnis/server/rnis_test.go | 4 +- go-packages/meep-model/model.go | 13 +++ 5 files changed, 145 insertions(+), 97 deletions(-) diff --git a/go-apps/meep-rnis/sbi/rnis-sbi.go b/go-apps/meep-rnis/sbi/rnis-sbi.go index 29680bd6c..8b36a8438 100755 --- a/go-apps/meep-rnis/sbi/rnis-sbi.go +++ b/go-apps/meep-rnis/sbi/rnis-sbi.go @@ -31,10 +31,10 @@ const moduleName string = "meep-rnis-sbi" type SbiCfg struct { SandboxName string RedisAddr string - UeDataCb func(string, string, string, string, string, bool) + UeDataCb func(string, string, string, string, string, bool, []string) MeasInfoCb func(string, string, []string, []int32, []int32) PoaInfoCb func(string, string, string, string, string) - AppEcgiInfoCb func(string, string, string, string) + AppInfoCb func(string, string, string) DomainDataCb func(string, string, string, string) ScenarioNameCb func(string) CleanUpCb func() @@ -47,10 +47,10 @@ type RnisSbi struct { activeModel *mod.Model gisCache *gc.GisCache refreshTicker *time.Ticker - updateUeDataCB func(string, string, string, string, string, bool) + updateUeDataCB func(string, string, string, string, string, bool, []string) updateMeasInfoCB func(string, string, []string, []int32, []int32) updatePoaInfoCB func(string, string, string, string, string) - updateAppEcgiInfoCB func(string, string, string, string) + updateAppInfoCB func(string, string, string) updateDomainDataCB func(string, string, string, string) updateScenarioNameCB func(string) cleanUpCB func() @@ -70,7 +70,7 @@ func Init(cfg SbiCfg) (err error) { sbi.updateUeDataCB = cfg.UeDataCb sbi.updateMeasInfoCB = cfg.MeasInfoCb sbi.updatePoaInfoCB = cfg.PoaInfoCb - sbi.updateAppEcgiInfoCB = cfg.AppEcgiInfoCb + sbi.updateAppInfoCB = cfg.AppInfoCb sbi.updateDomainDataCB = cfg.DomainDataCb sbi.updateScenarioNameCB = cfg.ScenarioNameCb sbi.cleanUpCB = cfg.CleanUpCb @@ -230,7 +230,6 @@ func processActiveScenarioUpdate() { continue } ueNames = append(ueNames, name) - ueParent := sbi.activeModel.GetNodeParent(name) if poa, ok := ueParent.(*dataModel.NetworkLocation); ok { poaParent := sbi.activeModel.GetNodeParent(poa.Name) @@ -270,7 +269,14 @@ func processActiveScenarioUpdate() { cellId = "" } - sbi.updateUeDataCB(name, mnc, mcc, cellId, nrcellId, erabIdValid) + node := sbi.activeModel.GetNodeChild(name) + apps := node.(*[]dataModel.Process) + + var appNames []string + for _, process := range *apps { + appNames = append(appNames, process.Name) + } + sbi.updateUeDataCB(name, mnc, mcc, cellId, nrcellId, erabIdValid, appNames) } } } @@ -286,7 +292,7 @@ func processActiveScenarioUpdate() { } } if !found { - sbi.updateUeDataCB(prevUeName, "", "", "", "", false) + sbi.updateUeDataCB(prevUeName, "", "", "", "", false, nil) log.Info("Ue removed : ", prevUeName) } } @@ -307,46 +313,7 @@ func processActiveScenarioUpdate() { continue } appNames = append(appNames, appName) - - plParent := sbi.activeModel.GetNodeParent(pl.Name) - if nl, ok := plParent.(*dataModel.NetworkLocation); ok { - //nl can be either POA for {FOG or UE} or Zone Default for {Edge - nlParent := sbi.activeModel.GetNodeParent(nl.Name) - if zone, ok := nlParent.(*dataModel.Zone); ok { - zoneParent := sbi.activeModel.GetNodeParent(zone.Name) - if domain, ok := zoneParent.(*dataModel.Domain); ok { - mnc := "" - mcc := "" - cellId := "" - if domain.CellularDomainConfig != nil { - mnc = domain.CellularDomainConfig.Mnc - mcc = domain.CellularDomainConfig.Mcc - cellId = domain.CellularDomainConfig.DefaultCellId - } - switch nl.Type_ { - case mod.NodeTypePoa4G: - if nl.Poa4GConfig != nil { - if nl.Poa4GConfig.CellId != "" { - cellId = nl.Poa4GConfig.CellId - } - } - /*no support for RNIS on 5G elements anymore - case mod.NodeTypePoa5G: - if nl.Poa5GConfig != nil { - if nl.Poa5GConfig.CellId != "" { - cellId = nl.Poa5GConfig.CellId - } - } - */ - default: - //empty cells for POAs not supporting RNIS - cellId = "" - } - - sbi.updateAppEcgiInfoCB(appName, mnc, mcc, cellId) - } - } - } + sbi.updateAppInfoCB(appName, pl.Type_, pl.Name) } } @@ -360,7 +327,7 @@ func processActiveScenarioUpdate() { } } if !found { - sbi.updateAppEcgiInfoCB(prevApp, "", "", "") + sbi.updateAppInfoCB(prevApp, "", "") log.Info("App removed : ", prevApp) } } diff --git a/go-apps/meep-rnis/server/convert.go b/go-apps/meep-rnis/server/convert.go index 8417ff17f..acd8d8dce 100755 --- a/go-apps/meep-rnis/server/convert.go +++ b/go-apps/meep-rnis/server/convert.go @@ -22,9 +22,9 @@ import ( log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ) -func convertJsonToEcgi(jsonInfo string) *Ecgi { +func convertJsonToAppInfo(jsonInfo string) *AppInfo { - var obj Ecgi + var obj AppInfo err := json.Unmarshal([]byte(jsonInfo), &obj) if err != nil { log.Error(err.Error()) @@ -33,7 +33,7 @@ func convertJsonToEcgi(jsonInfo string) *Ecgi { return &obj } -func convertEcgiToJson(obj *Ecgi) string { +func convertAppInfoToJson(obj *AppInfo) string { jsonInfo, err := json.Marshal(*obj) if err != nil { diff --git a/go-apps/meep-rnis/server/rnis.go b/go-apps/meep-rnis/server/rnis.go index 1092e7903..e0e2b04f9 100644 --- a/go-apps/meep-rnis/server/rnis.go +++ b/go-apps/meep-rnis/server/rnis.go @@ -55,6 +55,7 @@ const measRepUeSubscriptionType = "meas_rep_ue" const nrMeasRepUeSubscriptionType = "nr_meas_rep_ue" const poaType4G = "POA-4G" const poaType5G = "POA-5G" +const plTypeUE = "UE" var ccSubscriptionMap = map[int]*CellChangeSubscription{} var reSubscriptionMap = map[int]*RabEstSubscription{} @@ -119,6 +120,7 @@ type UeData struct { Qci int32 `json:"qci"` ParentPoaName string `json:"parentPoaName"` InRangePoas []InRangePoa `json:"inRangePoas"` + AppNames []string `json:"appNames"` } type InRangePoa struct { @@ -133,6 +135,11 @@ type PoaInfo struct { Nrcgi NRcgi `json:"nrcgi"` } +type AppInfo struct { + ParentType string `json:"parentType"` + ParentName string `json:"parentName"` +} + type DomainData struct { Mcc string `json:"mcc"` Mnc string `json:"mnc"` @@ -227,7 +234,7 @@ func Init() (err error) { UeDataCb: updateUeData, MeasInfoCb: updateMeasInfo, PoaInfoCb: updatePoaInfo, - AppEcgiInfoCb: updateAppEcgiInfo, + AppInfoCb: updateAppInfo, DomainDataCb: updateDomainData, ScenarioNameCb: updateStoreName, CleanUpCb: cleanUp, @@ -267,7 +274,7 @@ func Stop() (err error) { return sbi.Stop() } -func updateUeData(name string, mnc string, mcc string, cellId string, nrcellId string, erabIdValid bool) { +func updateUeData(name string, mnc string, mcc string, cellId string, nrcellId string, erabIdValid bool, appNames []string) { var plmn Plmn var newEcgi Ecgi @@ -285,6 +292,7 @@ func updateUeData(name string, mnc string, mcc string, cellId string, nrcellId s ueData.Nrcgi = &newNrcgi ueData.Name = name ueData.Qci = defaultSupportedQci //only supporting one value + ueData.AppNames = appNames oldPlmn := new(Plmn) oldPlmnMnc := "" @@ -411,35 +419,32 @@ func updatePoaInfo(name string, poaType string, mnc string, mcc string, cellId s _ = rc.JSONSetEntry(baseKey+"POA:"+name, ".", convertPoaInfoToJson(&poaInfo)) } -func updateAppEcgiInfo(name string, mnc string, mcc string, cellId string) { - - var plmn Plmn - var newEcgi Ecgi - plmn.Mnc = mnc - plmn.Mcc = mcc - newEcgi.CellId = cellId - newEcgi.Plmn = &plmn +func updateAppInfo(name string, parentType string, parentName string) { //get from DB - jsonAppEcgiInfo, _ := rc.JSONGetEntry(baseKey+"APP:"+name, ".") - - oldPlmnMnc := "" - oldPlmnMcc := "" - oldCellId := "" - - if jsonAppEcgiInfo != "" { - - ecgiInfo := convertJsonToEcgi(jsonAppEcgiInfo) - - oldPlmnMnc = ecgiInfo.Plmn.Mnc - oldPlmnMcc = ecgiInfo.Plmn.Mcc - oldCellId = ecgiInfo.CellId + jsonAppInfo, _ := rc.JSONGetEntry(baseKey+"APP:"+name+"*", ".") + + if jsonAppInfo != "" { + //delete entry if parent name is different; means it moved + currentAppInfo := convertJsonToAppInfo(jsonAppInfo) + if currentAppInfo.ParentName != parentName { + if currentAppInfo.ParentType == plTypeUE { + _ = rc.JSONDelEntry(baseKey+"APP:"+name+":"+currentAppInfo.ParentName, ".") + } + } else { + //no changes.. just get out + return + } } - //updateDB if changes occur - if newEcgi.Plmn.Mnc != oldPlmnMnc || newEcgi.Plmn.Mcc != oldPlmnMcc || newEcgi.CellId != oldCellId { - //updateDB - _ = rc.JSONSetEntry(baseKey+"APP:"+name, ".", convertEcgiToJson(&newEcgi)) + //updateDB + var appInfo AppInfo + appInfo.ParentType = parentType + appInfo.ParentName = parentName + if parentType == plTypeUE { + _ = rc.JSONSetEntry(baseKey+"APP:"+name+":"+parentName, ".", convertAppInfoToJson(&appInfo)) + } else { + _ = rc.JSONSetEntry(baseKey+"APP:"+name, ".", convertAppInfoToJson(&appInfo)) } } @@ -2521,6 +2526,15 @@ func layer2MeasInfoGet(w http.ResponseWriter, r *http.Request) { return } + //loop through each POA + keyName = baseKey + "POA:*" + err = rc.ForEachJSONEntry(keyName, populateL2MeasPOA, &l2MeasData) + if err != nil { + log.Error(err.Error()) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + l2Meas.TimeStamp = &timeStamp // Send response @@ -2534,6 +2548,66 @@ func layer2MeasInfoGet(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, string(jsonResponse)) } +func populateL2MeasPOA(key string, jsonInfo string, l2MeasData interface{}) error { + // Get query params & userlist from user data + data := l2MeasData.(*L2MeasData) + if data == nil || data.l2Meas == nil { + return errors.New("l2Meas not found in l2MeasData") + } + + // Retrieve user info from DB + var poaData PoaInfo + err := json.Unmarshal([]byte(jsonInfo), &poaData) + if err != nil { + return err + } + + //only applies for 4G poas + if poaData.Type != poaType4G { + return nil + } + + partOfFilter := true + for _, cellId := range data.queryCellIds { + if cellId != "" { + partOfFilter = false + if cellId == poaData.Ecgi.CellId { + partOfFilter = true + break + } + } + } + if !partOfFilter { + return nil + } + + found := false + + //find if cellInfo already exists + for _, currentCellInfo := range data.l2Meas.CellInfo { + if currentCellInfo.Ecgi.Plmn.Mcc == poaData.Ecgi.Plmn.Mcc && + currentCellInfo.Ecgi.Plmn.Mnc == poaData.Ecgi.Plmn.Mnc && + currentCellInfo.Ecgi.CellId == poaData.Ecgi.CellId { + //add ue into the existing cellUserInfo + found = true + } + } + if !found { + newCellInfo := new(L2MeasCellInfo) + newEcgi := new(Ecgi) + newPlmn := new(Plmn) + newPlmn.Mcc = poaData.Ecgi.Plmn.Mcc + newPlmn.Mnc = poaData.Ecgi.Plmn.Mnc + newEcgi.Plmn = newPlmn + newEcgi.CellId = poaData.Ecgi.CellId + newCellInfo.Ecgi = newEcgi + + data.l2Meas.CellInfo = append(data.l2Meas.CellInfo, *newCellInfo) + } + + return nil +} + func populateL2Meas(key string, jsonInfo string, l2MeasData interface{}) error { // Get query params & userlist from user data data := l2MeasData.(*L2MeasData) @@ -2548,7 +2622,7 @@ func populateL2Meas(key string, jsonInfo string, l2MeasData interface{}) error { return err } - // Ignore entries with no rabId + // Ignore entries with no rabId, meaning only applies if connected to POA-4G, no need to check for ecgi if ueData.ErabId == -1 { return nil } @@ -2585,15 +2659,15 @@ func populateL2Meas(key string, jsonInfo string, l2MeasData interface{}) error { found := false //find if cellUeInfo already exists - var cellUeIndex int - for index, currentCellUeInfo := range data.l2Meas.CellUEInfo { - if currentCellUeInfo.Ecgi.Plmn.Mcc == ueData.Ecgi.Plmn.Mcc && - currentCellUeInfo.Ecgi.Plmn.Mnc == ueData.Ecgi.Plmn.Mnc && - currentCellUeInfo.Ecgi.CellId == ueData.Ecgi.CellId { - //add ue into the existing cellUserInfo + assocId := new(AssociateId) + assocId.Type_ = 1 //UE_IPV4_ADDRESS + subKeys := strings.Split(key, ":") + assocId.Value = subKeys[len(subKeys)-1] + + for _, currentCellUeInfo := range data.l2Meas.CellUEInfo { + if assocId.Type_ == currentCellUeInfo.AssociateId.Type_ && assocId.Value == currentCellUeInfo.AssociateId.Value { found = true - cellUeIndex = index } } if !found { @@ -2604,18 +2678,12 @@ func populateL2Meas(key string, jsonInfo string, l2MeasData interface{}) error { newPlmn.Mnc = ueData.Ecgi.Plmn.Mnc newEcgi.Plmn = newPlmn newEcgi.CellId = ueData.Ecgi.CellId - newCellUeInfo.Ecgi = newEcgi - assocId := new(AssociateId) - assocId.Type_ = 1 //UE_IPV4_ADDRESS - subKeys := strings.Split(key, ":") - assocId.Value = subKeys[len(subKeys)-1] + newCellUeInfo.Ecgi = newEcgi newCellUeInfo.AssociateId = assocId data.l2Meas.CellUEInfo = append(data.l2Meas.CellUEInfo, *newCellUeInfo) - cellUeIndex = len(data.l2Meas.CellUEInfo) -1 } - data.l2Meas.CellUEInfo[cellUeIndex].DlNongbrThroughputUe = 77 //find if cellInfo already exists var cellIndex int @@ -2640,7 +2708,7 @@ func populateL2Meas(key string, jsonInfo string, l2MeasData interface{}) error { newCellInfo.Ecgi = newEcgi data.l2Meas.CellInfo = append(data.l2Meas.CellInfo, *newCellInfo) - cellIndex = len(data.l2Meas.CellInfo) -1 + cellIndex = len(data.l2Meas.CellInfo) - 1 } //need to do a qci mapping... since qci can only be 80 for now, using the one that correlates to that diff --git a/go-apps/meep-rnis/server/rnis_test.go b/go-apps/meep-rnis/server/rnis_test.go index 6c0f1dd36..300d3f5a5 100644 --- a/go-apps/meep-rnis/server/rnis_test.go +++ b/go-apps/meep-rnis/server/rnis_test.go @@ -2179,8 +2179,8 @@ func TestSbi(t *testing.T) { ******************************/ var expectedUeDataStr [2]string var expectedUeData [2]UeData - expectedUeData[INITIAL] = UeData{ueName, 1, &Ecgi{"2345678", &Plmn{"123", "456"}}, &NRcgi{"", &Plmn{"123", "456"}}, 80, "", nil} - expectedUeData[UPDATED] = UeData{ueName, -1, &Ecgi{"", &Plmn{"123", "456"}}, &NRcgi{"", &Plmn{"123", "456"}}, 80, "", nil} + expectedUeData[INITIAL] = UeData{ueName, 1, &Ecgi{"2345678", &Plmn{"123", "456"}}, &NRcgi{"", &Plmn{"123", "456"}}, 80, "", nil, nil} + expectedUeData[UPDATED] = UeData{ueName, -1, &Ecgi{"", &Plmn{"123", "456"}}, &NRcgi{"", &Plmn{"123", "456"}}, 80, "", nil, nil} var expectedAppEcgiStr [2]string var expectedAppEcgi [2]Ecgi diff --git a/go-packages/meep-model/model.go b/go-packages/meep-model/model.go index b191a911e..d412ef73f 100644 --- a/go-packages/meep-model/model.go +++ b/go-packages/meep-model/model.go @@ -659,6 +659,19 @@ func (m *Model) GetNodeParent(name string) (parent interface{}) { return parent } +// GetNodeChild - Get a child node by its child name +func (m *Model) GetNodeChild(name string) (child interface{}) { + m.lock.RLock() + defer m.lock.RUnlock() + + child = nil + n := m.nodeMap.nameMap[name] + if n != nil { + child = n.child + } + return child +} + // GetNodeContext - Get a node context // Returned value is of type interface{} // Good practice: returned node should be type asserted with val,ok := node.(someType) to prevent panic -- GitLab From 2c9dd035506243588f93ac1c6ed188800f05fefd Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Fri, 15 Jan 2021 09:36:27 -0500 Subject: [PATCH 024/194] new auth service + migrated auth functionality from platform-ctrl to auth-svc --- .meepctl-repocfg.yaml | 32 +- charts/grafana/values.yaml | 14 +- charts/meep-auth-svc/.helmignore | 21 + charts/meep-auth-svc/Chart.yaml | 5 + charts/meep-auth-svc/templates/_helpers.tpl | 32 + .../templates/clusterrolebinding.yaml | 13 + .../meep-auth-svc/templates/codecov-pv.yaml | 35 + .../meep-auth-svc/templates/deployment.yaml | 71 ++ charts/meep-auth-svc/templates/ingress.yaml | 40 ++ charts/meep-auth-svc/templates/service.yaml | 22 + .../templates/serviceaccount.yaml | 4 + charts/meep-auth-svc/values.yaml | 82 +++ charts/meep-platform-ctrl/values.yaml | 22 - go-apps/meep-auth-svc/.swagger-codegen-ignore | 23 + .../meep-auth-svc/.swagger-codegen/VERSION | 1 + go-apps/meep-auth-svc/Dockerfile | 24 + go-apps/meep-auth-svc/api/swagger.yaml | 173 +++++ go-apps/meep-auth-svc/go.mod | 40 ++ go-apps/meep-auth-svc/go.sum | 443 +++++++++++++ go-apps/meep-auth-svc/main.go | 95 +++ go-apps/meep-auth-svc/main_test.go | 58 ++ go-apps/meep-auth-svc/server/README.md | 25 + .../server/api_auth.go} | 22 +- .../server/auth-svc.go} | 344 +++++++--- go-apps/meep-auth-svc/server/logger.go | 47 ++ go-apps/meep-auth-svc/server/model_sandbox.go | 32 + go-apps/meep-auth-svc/server/routers.go | 113 ++++ go-apps/meep-platform-ctrl/Dockerfile | 8 +- go-apps/meep-platform-ctrl/api/swagger.yaml | 130 +--- go-apps/meep-platform-ctrl/go.mod | 12 +- go-apps/meep-platform-ctrl/server/README.md | 2 +- .../server/platform-ctrl.go | 31 +- go-apps/meep-platform-ctrl/server/routers.go | 35 - go-apps/meepctl/cmd/deploy.go | 2 +- .../meep-platform-ctrl-client/README.md | 5 - .../api/swagger.yaml | 130 +--- .../api_user_authentication.go | 437 ------------- .../meep-platform-ctrl-client/client.go | 3 - .../docs/UserAuthenticationApi.md | 168 ----- .../.swagger-codegen-ignore | 23 + .../.swagger-codegen/VERSION | 1 + js-packages/meep-auth-svc-client/.travis.yml | 7 + js-packages/meep-auth-svc-client/README.md | 138 ++++ .../docs/AuthApi.md} | 100 ++- .../meep-auth-svc-client/docs/Sandbox.md | 8 + js-packages/meep-auth-svc-client/git_push.sh | 52 ++ js-packages/meep-auth-svc-client/mocha.opts | 1 + js-packages/meep-auth-svc-client/package.json | 22 + .../meep-auth-svc-client/src/ApiClient.js | 614 ++++++++++++++++++ .../src/api/AuthApi.js} | 92 ++- js-packages/meep-auth-svc-client/src/index.js | 92 +++ .../meep-auth-svc-client/src/model/Sandbox.js | 87 +++ .../test/api/AuthApi.spec.js} | 51 +- .../test/assert-equals.js | 81 +++ .../test/model/Sandbox.spec.js | 67 ++ .../meep-platform-ctrl-client/README.md | 5 - .../meep-platform-ctrl-client/src/index.js | 13 +- 57 files changed, 3102 insertions(+), 1148 deletions(-) create mode 100644 charts/meep-auth-svc/.helmignore create mode 100644 charts/meep-auth-svc/Chart.yaml create mode 100644 charts/meep-auth-svc/templates/_helpers.tpl create mode 100644 charts/meep-auth-svc/templates/clusterrolebinding.yaml create mode 100644 charts/meep-auth-svc/templates/codecov-pv.yaml create mode 100644 charts/meep-auth-svc/templates/deployment.yaml create mode 100755 charts/meep-auth-svc/templates/ingress.yaml create mode 100644 charts/meep-auth-svc/templates/service.yaml create mode 100644 charts/meep-auth-svc/templates/serviceaccount.yaml create mode 100644 charts/meep-auth-svc/values.yaml create mode 100644 go-apps/meep-auth-svc/.swagger-codegen-ignore create mode 100644 go-apps/meep-auth-svc/.swagger-codegen/VERSION create mode 100644 go-apps/meep-auth-svc/Dockerfile create mode 100644 go-apps/meep-auth-svc/api/swagger.yaml create mode 100644 go-apps/meep-auth-svc/go.mod create mode 100644 go-apps/meep-auth-svc/go.sum create mode 100644 go-apps/meep-auth-svc/main.go create mode 100644 go-apps/meep-auth-svc/main_test.go create mode 100644 go-apps/meep-auth-svc/server/README.md rename go-apps/{meep-platform-ctrl/server/api_user_authentication.go => meep-auth-svc/server/api_auth.go} (58%) rename go-apps/{meep-platform-ctrl/server/user_authentication.go => meep-auth-svc/server/auth-svc.go} (66%) create mode 100644 go-apps/meep-auth-svc/server/logger.go create mode 100644 go-apps/meep-auth-svc/server/model_sandbox.go create mode 100644 go-apps/meep-auth-svc/server/routers.go delete mode 100644 go-packages/meep-platform-ctrl-client/api_user_authentication.go delete mode 100644 go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md create mode 100644 js-packages/meep-auth-svc-client/.swagger-codegen-ignore create mode 100644 js-packages/meep-auth-svc-client/.swagger-codegen/VERSION create mode 100644 js-packages/meep-auth-svc-client/.travis.yml create mode 100644 js-packages/meep-auth-svc-client/README.md rename js-packages/{meep-platform-ctrl-client/docs/UserAuthenticationApi.md => meep-auth-svc-client/docs/AuthApi.md} (59%) create mode 100644 js-packages/meep-auth-svc-client/docs/Sandbox.md create mode 100644 js-packages/meep-auth-svc-client/git_push.sh create mode 100644 js-packages/meep-auth-svc-client/mocha.opts create mode 100644 js-packages/meep-auth-svc-client/package.json create mode 100644 js-packages/meep-auth-svc-client/src/ApiClient.js rename js-packages/{meep-platform-ctrl-client/src/api/UserAuthenticationApi.js => meep-auth-svc-client/src/api/AuthApi.js} (68%) create mode 100644 js-packages/meep-auth-svc-client/src/index.js create mode 100644 js-packages/meep-auth-svc-client/src/model/Sandbox.js rename js-packages/{meep-platform-ctrl-client/test/api/UserAuthenticationApi.spec.js => meep-auth-svc-client/test/api/AuthApi.spec.js} (69%) create mode 100644 js-packages/meep-auth-svc-client/test/assert-equals.js create mode 100644 js-packages/meep-auth-svc-client/test/model/Sandbox.spec.js diff --git a/.meepctl-repocfg.yaml b/.meepctl-repocfg.yaml index 711ff1180..160126d60 100644 --- a/.meepctl-repocfg.yaml +++ b/.meepctl-repocfg.yaml @@ -61,7 +61,7 @@ repo: # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI - redirect-uri: https://my-platform-fqdn/platform-ctrl/v1/authorize + redirect-uri: https://my-platform-fqdn/auth/v1/authorize # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-github # GitLab OAuth provider config @@ -73,7 +73,7 @@ repo: # access token url token-url: https://gitlab.com/oauth/token # OAuth redirect URI - redirect-uri: https://my-platform-fqdn/platform-ctrl/v1/authorize + redirect-uri: https://my-platform-fqdn/auth/v1/authorize # GitLab api url # api-url: https://gitlab.com # OAuth k8s secret (data: client-id, secret) @@ -86,6 +86,31 @@ repo: # Go Applications go-apps: + meep-auth-svc: + # location of source code + src: go-apps/meep-auth-svc + # location of binary + bin: bin/meep-auth-svc + # location of deployment chart + chart: charts/meep-auth-svc + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-auth-svc.yaml + # enable meepctl build + build: true + # enable meepctl dockerize + dockerize: true + # enable meepctl deploy/delete + deploy: true + # supports code coverage measurement when built in codecov mode + codecov: true + # supports linting + lint: true + # location of API specification + api: go-apps/meep-auth-svc/api/swagger.yaml + # AdvantEDGE resources included in Docker container image + docker-data: + # location of REST API permissions file + 'permissions.yaml': config/permissions.yaml meep-ingress-certs: # enable meepctl build build: false @@ -178,8 +203,6 @@ repo: swagger: bin/meep-platform-swagger-ui # location of AdvantEDGE frontend frontend: bin/meep-frontend - # location of REST API permissions file - 'permissions.yaml': config/permissions.yaml meep-virt-engine: # location of source code src: go-apps/meep-virt-engine @@ -284,6 +307,7 @@ repo: lint: false # list of platform level swagger specs api-bundle: + - core.go-apps.meep-auth-svc - core.go-apps.meep-platform-ctrl - core.go-apps.meep-mon-engine meep-sandbox-swagger-ui: diff --git a/charts/grafana/values.yaml b/charts/grafana/values.yaml index 524610f83..4807d124b 100755 --- a/charts/grafana/values.yaml +++ b/charts/grafana/values.yaml @@ -123,6 +123,7 @@ ingress: enabled: true annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://10.190.114.150/auth/v1/authenticate?svc=grafana&sbox= kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" labels: {} @@ -413,9 +414,20 @@ dashboardsConfigMaps: {} ## ref: http://docs.grafana.org/installation/configuration/ ## grafana.ini: + 'auth.basic': + enabled: false 'auth.anonymous': enabled: true - org_role: Admin + org_role: Viewer + # 'auth.github': + # enabled: false + # allow_sign_up: true + # client_id: 8a10c1c7486e56592aa4 + # client_secret: 6fe09e84c23b1e75f4caf963698a190921938897 + # scopes: user:email,read:org + # auth_url: https://github.com/login/oauth/authorize + # token_url: https://github.com/login/oauth/access_token + # api_url: https://api.github.com/user security: allow_embedding: true paths: diff --git a/charts/meep-auth-svc/.helmignore b/charts/meep-auth-svc/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/charts/meep-auth-svc/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/meep-auth-svc/Chart.yaml b/charts/meep-auth-svc/Chart.yaml new file mode 100644 index 000000000..1e0075687 --- /dev/null +++ b/charts/meep-auth-svc/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +appVersion: "1.0.0" +description: Meep Auth Service Helm chart for Kubernetes +name: meep-auth-svc +version: 1.0.0 diff --git a/charts/meep-auth-svc/templates/_helpers.tpl b/charts/meep-auth-svc/templates/_helpers.tpl new file mode 100644 index 000000000..c3f4b7010 --- /dev/null +++ b/charts/meep-auth-svc/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "meep-auth-svc.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "meep-auth-svc.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "meep-auth-svc.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/meep-auth-svc/templates/clusterrolebinding.yaml b/charts/meep-auth-svc/templates/clusterrolebinding.yaml new file mode 100644 index 000000000..efaddba1b --- /dev/null +++ b/charts/meep-auth-svc/templates/clusterrolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: "{{ .Release.Namespace }}:{{ .Values.serviceAccount }}" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: {{ .Values.serviceAccount }} + namespace: {{ .Release.Namespace }} + \ No newline at end of file diff --git a/charts/meep-auth-svc/templates/codecov-pv.yaml b/charts/meep-auth-svc/templates/codecov-pv.yaml new file mode 100644 index 000000000..a13e36438 --- /dev/null +++ b/charts/meep-auth-svc/templates/codecov-pv.yaml @@ -0,0 +1,35 @@ +{{- if .Values.codecov.enabled}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: meep-auth-svc-codecov-pv +spec: + storageClassName: meep-auth-svc-codecov-sc + capacity: + storage: 100Mi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + hostPath: + path: {{ .Values.codecov.location }} + +--- +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: meep-auth-svc-codecov-sc +provisioner: kubernetes.io/no-provisioner +volumeBindingMode: WaitForFirstConsumer +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: meep-auth-svc-codecov-pvc +spec: + storageClassName: meep-auth-svc-codecov-sc + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi +{{- end}} diff --git a/charts/meep-auth-svc/templates/deployment.yaml b/charts/meep-auth-svc/templates/deployment.yaml new file mode 100644 index 000000000..70dd66d5f --- /dev/null +++ b/charts/meep-auth-svc/templates/deployment.yaml @@ -0,0 +1,71 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "meep-auth-svc.fullname" . }} + labels: + app: {{ template "meep-auth-svc.name" . }} + chart: {{ template "meep-auth-svc.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + meepOrigin: {{ .Values.meepOrigin }} +spec: + replicas: {{ .Values.deployment.replicas }} + selector: + matchLabels: + app: {{ template "meep-auth-svc.name" . }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ template "meep-auth-svc.name" . }} + release: {{ .Release.Name }} + meepOrigin: {{ .Values.meepOrigin }} + spec: + serviceAccountName: {{ .Values.serviceAccount }} + volumes: + {{- if .Values.codecov.enabled}} + - name: codecov-storage + persistentVolumeClaim: + claimName: meep-auth-svc-codecov-pvc + {{- end}} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + {{- if .Values.codecov.enabled}} + command: [ "/meep-auth-svc" ] + args: [ "-test.coverprofile=/codecov/codecov-meep-auth-svc.out", "__DEVEL--code-cov" ] + {{- end}} + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: {{ .Values.deployment.port }} + protocol: {{ .Values.deployment.protocol }} + env: + {{- range $key, $value := .Values.image.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + {{- range $key, $value := .Values.image.envSecret }} + - name: {{ $key }} + valueFrom: + secretKeyRef: + name: {{ $value.name }} + key: {{ $value.key }} + optional: true + {{- end }} + volumeMounts: + {{- if .Values.codecov.enabled}} + - name: codecov-storage + mountPath: /codecov + {{- end}} + terminationGracePeriodSeconds: 5 + {{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} + {{- end }} + initContainers: + - name: init-{{ .Values.deployment.dependency }} + image: busybox:1.28 + imagePullPolicy: IfNotPresent + command: ['sh', '-c', 'until nslookup {{ .Values.deployment.dependency }}.kube-system ; do echo waiting for {{ .Values.deployment.dependency }}; sleep 0.25; done;'] + + diff --git a/charts/meep-auth-svc/templates/ingress.yaml b/charts/meep-auth-svc/templates/ingress.yaml new file mode 100755 index 000000000..f399b2a61 --- /dev/null +++ b/charts/meep-auth-svc/templates/ingress.yaml @@ -0,0 +1,40 @@ +{{- if .Values.ingress.enabled -}} +{{- $serviceName := include "meep-auth-svc.fullname" . -}} +{{- $servicePort := .Values.service.port -}} +{{- $path := .Values.ingress.path -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: {{ template "meep-auth-svc.fullname" . }} + labels: + app: {{ template "meep-auth-svc.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +{{- if .Values.ingress.labels }} +{{ toYaml .Values.ingress.labels | indent 4 }} +{{- end }} + annotations: + {{- range $key, $value := .Values.ingress.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + rules: + {{- range .Values.ingress.hosts }} + - http: + paths: + {{- range $path := .paths }} + - path: {{ $path }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- if .name }} + host: {{ .name }} + {{- end }} + {{- end -}} + {{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/charts/meep-auth-svc/templates/service.yaml b/charts/meep-auth-svc/templates/service.yaml new file mode 100644 index 000000000..9ca2d4628 --- /dev/null +++ b/charts/meep-auth-svc/templates/service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "meep-auth-svc.fullname" . }} + labels: + app: {{ template "meep-auth-svc.name" . }} + chart: {{ template "meep-auth-svc.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + meepOrigin: {{ .Values.meepOrigin }} +spec: + type: {{ .Values.service.type }} + selector: + app: {{ template "meep-auth-svc.name" . }} + release: {{ .Release.Name }} + meepOrigin: {{ .Values.meepOrigin }} + ports: + - port: {{ .Values.service.port }} + targetPort: {{ .Values.deployment.port }} + {{- if .Values.service.nodePort }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} diff --git a/charts/meep-auth-svc/templates/serviceaccount.yaml b/charts/meep-auth-svc/templates/serviceaccount.yaml new file mode 100644 index 000000000..86314d8cf --- /dev/null +++ b/charts/meep-auth-svc/templates/serviceaccount.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount }} diff --git a/charts/meep-auth-svc/values.yaml b/charts/meep-auth-svc/values.yaml new file mode 100644 index 000000000..787ae1f94 --- /dev/null +++ b/charts/meep-auth-svc/values.yaml @@ -0,0 +1,82 @@ +# Default values for meep-auth-svc. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +serviceAccount: meep-auth-svc + +deployment: + replicas: 1 + port: 80 + protocol: TCP + altPort: 8080 + dependency: kube-dns + +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: node-role.kubernetes.io/master + operator: Exists + +image: + repository: meep-auth-svc + tag: latest + pullPolicy: Always + env: + MEEP_MAX_SESSIONS: "10" + MEEP_OAUTH_GITHUB_ENABLED: "false" + MEEP_OAUTH_GITHUB_AUTH_URL: "" + MEEP_OAUTH_GITHUB_TOKEN_URL: "" + MEEP_OAUTH_GITHUB_REDIRECT_URI: "" + MEEP_OAUTH_GITLAB_ENABLED: "false" + MEEP_OAUTH_GITLAB_AUTH_URL: "" + MEEP_OAUTH_GITLAB_TOKEN_URL: "" + MEEP_OAUTH_GITLAB_REDIRECT_URI: "" + MEEP_OAUTH_GITLAB_API_URL: "" + envSecret: + MEEP_SESSION_KEY: + name: meep-session + key: encryption-key + MEEP_OAUTH_GITHUB_CLIENT_ID: + name: github-secret + key: client-id + MEEP_OAUTH_GITHUB_SECRET: + name: github-secret + key: secret + MEEP_OAUTH_GITLAB_CLIENT_ID: + name: gitlab-secret + key: client-id + MEEP_OAUTH_GITLAB_SECRET: + name: gitlab-secret + key: secret + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + # Used to create an Ingress record. + hosts: + - name: '' + paths: + - /auth + annotations: + kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + # nginx.ingress.kubernetes.io/rewrite-target: /$2 + # nginx.ingress.kubernetes.io/configuration-snippet: | + # rewrite ^(/api)$ $1/ redirect; + labels: {} + tls: + # Secrets must be manually created in the namespace. + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +codecov: + enabled: false + location: "/codecov/meep-auth-svc" + +meepOrigin: core diff --git a/charts/meep-platform-ctrl/values.yaml b/charts/meep-platform-ctrl/values.yaml index 1a80c6e80..32476e68e 100644 --- a/charts/meep-platform-ctrl/values.yaml +++ b/charts/meep-platform-ctrl/values.yaml @@ -24,32 +24,10 @@ image: tag: latest pullPolicy: Always env: - MEEP_MAX_SESSIONS: "10" - MEEP_OAUTH_GITHUB_ENABLED: "false" - MEEP_OAUTH_GITHUB_AUTH_URL: "" - MEEP_OAUTH_GITHUB_TOKEN_URL: "" - MEEP_OAUTH_GITHUB_REDIRECT_URI: "" - MEEP_OAUTH_GITLAB_ENABLED: "false" - MEEP_OAUTH_GITLAB_AUTH_URL: "" - MEEP_OAUTH_GITLAB_TOKEN_URL: "" - MEEP_OAUTH_GITLAB_REDIRECT_URI: "" - MEEP_OAUTH_GITLAB_API_URL: "" envSecret: MEEP_SESSION_KEY: name: meep-session key: encryption-key - MEEP_OAUTH_GITHUB_CLIENT_ID: - name: github-secret - key: client-id - MEEP_OAUTH_GITHUB_SECRET: - name: github-secret - key: secret - MEEP_OAUTH_GITLAB_CLIENT_ID: - name: gitlab-secret - key: client-id - MEEP_OAUTH_GITLAB_SECRET: - name: gitlab-secret - key: secret service: type: ClusterIP diff --git a/go-apps/meep-auth-svc/.swagger-codegen-ignore b/go-apps/meep-auth-svc/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/go-apps/meep-auth-svc/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/go-apps/meep-auth-svc/.swagger-codegen/VERSION b/go-apps/meep-auth-svc/.swagger-codegen/VERSION new file mode 100644 index 000000000..812aaafe6 --- /dev/null +++ b/go-apps/meep-auth-svc/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.22 \ No newline at end of file diff --git a/go-apps/meep-auth-svc/Dockerfile b/go-apps/meep-auth-svc/Dockerfile new file mode 100644 index 000000000..4c1f57042 --- /dev/null +++ b/go-apps/meep-auth-svc/Dockerfile @@ -0,0 +1,24 @@ +# Copyright (c) 2019 InterDigital Communications, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM debian:9.6-slim +COPY ./meep-auth-svc /meep-auth-svc +COPY ./permissions.yaml /permissions.yaml + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates + +RUN update-ca-certificates + +ENTRYPOINT ["/meep-auth-svc"] diff --git a/go-apps/meep-auth-svc/api/swagger.yaml b/go-apps/meep-auth-svc/api/swagger.yaml new file mode 100644 index 000000000..86f98bde5 --- /dev/null +++ b/go-apps/meep-auth-svc/api/swagger.yaml @@ -0,0 +1,173 @@ +--- +swagger: "2.0" +info: + description: "This API provides microservice API authentication & authorization\ + \ services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)\ + \

    **Type & Usage**
    Platform interface used by ingress to authenticate &\ + \ authorize microservice API access

    **Details**
    API details available at\ + \ _your-AdvantEDGE-ip-address/api_" + version: "1.0.0" + title: "AdvantEDGE Auth Service REST API" + contact: + name: "InterDigital AdvantEDGE Support" + email: "AdvantEDGE@InterDigital.com" + license: + name: "Apache 2.0" + url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" +basePath: "/auth/v1" +tags: +- name: "auth" +consumes: +- "application/json" +produces: +- "application/json" +paths: + /authenticate: + get: + tags: + - "auth" + summary: "Authenticate service request" + description: "Authenticate & authorize microservice endpoint access" + operationId: "authenticate" + parameters: + - name: "svc" + in: "query" + description: "Service requesting authentication" + required: false + type: "string" + x-exportParamName: "Svc" + x-optionalDataType: "String" + - name: "sbox" + in: "query" + description: "Sandbox name" + required: false + type: "string" + x-exportParamName: "Sbox" + x-optionalDataType: "String" + responses: + 200: + description: "OK" + 401: + description: "Unauthorized" + /authorize: + get: + tags: + - "auth" + summary: "OAuth authorization response endpoint" + description: "Redirect URI endpoint for OAuth authorization responses. Starts\ + \ a user session." + operationId: "authorize" + produces: + - "application/json" + parameters: + - name: "code" + in: "query" + description: "Temporary authorization code" + required: false + type: "string" + x-exportParamName: "Code" + x-optionalDataType: "String" + - name: "state" + in: "query" + description: "User-provided random state" + required: false + type: "string" + x-exportParamName: "State" + x-optionalDataType: "String" + responses: + 302: + description: "Found" + /login: + get: + tags: + - "auth" + summary: "Initiate OAuth login procedure" + description: "Start OAuth login procedure with provider" + operationId: "login" + produces: + - "application/json" + parameters: + - name: "provider" + in: "query" + description: "Oauth provider" + required: false + type: "string" + enum: + - "github" + - "gitlab" + x-exportParamName: "Provider" + x-optionalDataType: "String" + responses: + 302: + description: "Found" + post: + tags: + - "auth" + summary: "Start a session" + description: "Start a session after authenticating user" + operationId: "loginUser" + consumes: + - "application/x-www-form-urlencoded" + produces: + - "application/json" + parameters: + - name: "username" + in: "formData" + description: "User Name" + required: false + type: "string" + x-exportParamName: "Username" + x-optionalDataType: "String" + - name: "password" + in: "formData" + description: "User Password" + required: false + type: "string" + x-exportParamName: "Password" + x-optionalDataType: "String" + responses: + 200: + description: "OK" + schema: + $ref: "#/definitions/Sandbox" + 401: + description: "Unauthorized" + /logout: + get: + tags: + - "auth" + summary: "Terminate a session" + description: "Terminate a session" + operationId: "logout" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + 401: + description: "Unauthorized" + /watchdog: + post: + tags: + - "auth" + summary: "Send heartbeat to watchdog" + description: "Send heartbeat to watchdog to keep session alive" + operationId: "triggerWatchdog" + produces: + - "application/json" + parameters: [] + responses: + 200: + description: "OK" + 401: + description: "Unauthorized" +definitions: + Sandbox: + type: "object" + properties: + name: + type: "string" + description: "Sandbox name" + description: "Sandbox object" + example: {} diff --git a/go-apps/meep-auth-svc/go.mod b/go-apps/meep-auth-svc/go.mod new file mode 100644 index 000000000..ce5b0ccc4 --- /dev/null +++ b/go-apps/meep-auth-svc/go.mod @@ -0,0 +1,40 @@ +module github.com/InterDigitalInc/AdvantEDGE/go-apps/meep-auth-svc + +go 1.12 + +require ( + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr v0.0.0 // indirect + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 // indirect + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 // indirect + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store v0.0.0 // indirect + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users v0.0.0 + github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect + github.com/google/go-github v17.0.0+incompatible + github.com/google/go-querystring v1.0.0 // indirect + github.com/gorilla/handlers v1.5.1 + github.com/gorilla/mux v1.7.4 + github.com/lkysow/go-gitlab v0.7.1 + github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3 + golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + google.golang.org/protobuf v1.25.0 // indirect +) + +replace ( + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr => ../../go-packages/meep-data-key-mgr + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model => ../../go-packages/meep-data-model + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store => ../../go-packages/meep-metric-store + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client => ../../go-packages/meep-platform-ctrl-client + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store => ../../go-packages/meep-sandbox-store + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users => ../../go-packages/meep-users +) diff --git a/go-apps/meep-auth-svc/go.sum b/go-apps/meep-auth-svc/go.sum new file mode 100644 index 000000000..ef3a5d1b4 --- /dev/null +++ b/go-apps/meep-auth-svc/go.sum @@ -0,0 +1,443 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/InterDigitalInc/AdvantEDGE v1.6.1 h1:k9VDaKr6u0i8r7xjzNU6H+FV8gqpTeCgifiP/QirG3A= +github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= +github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= +github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= +github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= +github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345/go.mod h1:OK4EvWJ441LQqGzed5NGB6vKBAE34n3z7iayPcEwr30= +github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72/go.mod h1:o+JdB7VetTHjLhU0N57x18B9voDBQe0paApdEAEoEfw= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= +github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= +github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= +github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= +github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.5.2 h1:yTSXVswvWUOQ3k1sd7vJfDrbSl8lKuscqFJRqjC0ifw= +github.com/lib/pq v1.5.2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lkysow/go-gitlab v0.7.1 h1:xYb6fBv04QE28bR14+SFGzZCkYtPyTJDuPzG7pQPGEQ= +github.com/lkysow/go-gitlab v0.7.1/go.mod h1:V/jEItjZ+vsbFT6RPjkPPHyf6xddwmyDjoD+3Qlkaqo= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237/go.mod h1:UOnLAUmVG5paym8pD3C4B9BQylUDC2vXFJJpT7JrlEA= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3 h1:lBNvYUFo7d4fHs8BXUmoTzbdUo4usq6PlP5qn894sGA= +github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3/go.mod h1:jo59Sv6xirZtbxbaZbCtrQd1CSufmcxJZIC8hm2tepw= +github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/go-apps/meep-auth-svc/main.go b/go-apps/meep-auth-svc/main.go new file mode 100644 index 000000000..b6e413b91 --- /dev/null +++ b/go-apps/meep-auth-svc/main.go @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ +package main + +import ( + "net/http" + "os" + "os/signal" + "syscall" + "time" + + server "github.com/InterDigitalInc/AdvantEDGE/go-apps/meep-auth-svc/server" + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" + + "github.com/gorilla/handlers" +) + +func init() { + // Log as JSON instead of the default ASCII formatter. + log.MeepJSONLogInit("meep-auth-svc") +} + +func main() { + log.Info(os.Args) + + log.Info("Starting Auth Service") + + run := true + + go func() { + sigchan := make(chan os.Signal, 10) + signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) + <-sigchan + log.Info("Program killed !") + // do last actions and wait for all write operations to end + run = false + }() + + go func() { + // Initialize Auth Service + err := server.Init() + if err != nil { + log.Error("Failed to initialize Auth Service") + run = false + return + } + + // Start Auth Service + err = server.Run() + if err != nil { + log.Error("Failed to start Auth Service") + run = false + return + } + + // Start Auth Service REST API Server + router := server.NewRouter() + methods := handlers.AllowedMethods([]string{"OPTIONS", "DELETE", "GET", "HEAD", "POST", "PUT"}) + header := handlers.AllowedHeaders([]string{"content-type"}) + log.Fatal(http.ListenAndServe(":80", handlers.CORS(methods, header)(router))) + run = false + }() + + count := 0 + for { + if !run { + log.Info("Ran for ", count, " seconds") + break + } + time.Sleep(time.Second) + count++ + } + +} diff --git a/go-apps/meep-auth-svc/main_test.go b/go-apps/meep-auth-svc/main_test.go new file mode 100644 index 000000000..7f017cfd4 --- /dev/null +++ b/go-apps/meep-auth-svc/main_test.go @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2019 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "os" + "strings" + "testing" + + log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" +) + +// Build: +// $ go test -covermode=count -coverpkg=./... -c -o +// Run: +// $ ./ -test.coverprofile=cover.out __DEVEL--code-cov + +// TestMain is a hack that allows us to figure out what the coverage is during +// integration tests. I would not recommend that you use a binary built using +// this hack outside of a test suite. +func TestMain(t *testing.T) { + var ( + args []string + run bool + ) + + log.Info(os.Args) + for _, arg := range os.Args { + switch { + case arg == "__DEVEL--code-cov": + run = true + case strings.HasPrefix(arg, "-test"): + case strings.HasPrefix(arg, "__DEVEL"): + default: + args = append(args, arg) + } + } + os.Args = args + log.Info(os.Args) + + if run { + main() + } +} diff --git a/go-apps/meep-auth-svc/server/README.md b/go-apps/meep-auth-svc/server/README.md new file mode 100644 index 000000000..3597ba52a --- /dev/null +++ b/go-apps/meep-auth-svc/server/README.md @@ -0,0 +1,25 @@ +# Go API Server for server + +This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + +## Overview +This server was generated by the [swagger-codegen] +(https://github.com/swagger-api/swagger-codegen) project. +By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. +- + +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: 2021-01-14T16:56:07.637-05:00 + + +### Running the server +To run the server, follow these simple steps: + +``` +go run main.go +``` + diff --git a/go-apps/meep-platform-ctrl/server/api_user_authentication.go b/go-apps/meep-auth-svc/server/api_auth.go similarity index 58% rename from go-apps/meep-platform-ctrl/server/api_user_authentication.go rename to go-apps/meep-auth-svc/server/api_auth.go index 7662ef8c7..3e07e7277 100644 --- a/go-apps/meep-platform-ctrl/server/api_user_authentication.go +++ b/go-apps/meep-auth-svc/server/api_auth.go @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * AdvantEDGE Platform Controller REST API + * AdvantEDGE Auth Service REST API * - * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ * * API version: 1.0.0 * Contact: AdvantEDGE@InterDigital.com @@ -28,22 +28,26 @@ import ( "net/http" ) +func Authenticate(w http.ResponseWriter, r *http.Request) { + asAuthenticate(w, r) +} + func Authorize(w http.ResponseWriter, r *http.Request) { - uaAuthorize(w, r) + asAuthorize(w, r) } -func LoginOAuth(w http.ResponseWriter, r *http.Request) { - uaLoginOAuth(w, r) +func Login(w http.ResponseWriter, r *http.Request) { + asLogin(w, r) } func LoginUser(w http.ResponseWriter, r *http.Request) { - uaLoginUser(w, r) + asLoginUser(w, r) } -func LogoutUser(w http.ResponseWriter, r *http.Request) { - uaLogoutUser(w, r) +func Logout(w http.ResponseWriter, r *http.Request) { + asLogout(w, r) } func TriggerWatchdog(w http.ResponseWriter, r *http.Request) { - uaTriggerWatchdog(w, r) + asTriggerWatchdog(w, r) } diff --git a/go-apps/meep-platform-ctrl/server/user_authentication.go b/go-apps/meep-auth-svc/server/auth-svc.go similarity index 66% rename from go-apps/meep-platform-ctrl/server/user_authentication.go rename to go-apps/meep-auth-svc/server/auth-svc.go index f6b41b8ee..d47c3d45f 100644 --- a/go-apps/meep-platform-ctrl/server/user_authentication.go +++ b/go-apps/meep-auth-svc/server/auth-svc.go @@ -42,9 +42,12 @@ import ( dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" + mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" + pcc "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-platform-ctrl-client" sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" users "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users" "github.com/google/go-github/github" + "github.com/gorilla/mux" "github.com/lkysow/go-gitlab" "github.com/roymx/viper" "golang.org/x/oauth2" @@ -54,14 +57,65 @@ const OAUTH_PROVIDER_GITHUB = "github" const OAUTH_PROVIDER_GITLAB = "gitlab" const OAUTH_PROVIDER_LOCAL = "local" +const moduleName = "meep-auth-svc" +const moduleNamespace = "default" +const postgisUser = "postgres" +const postgisPwd = "pwd" +const permissionsRoot = "services" +const pfmCtrlBasepath = "http://meep-platform-ctrl/platform-ctrl/v1" + +type LoginRequest struct { + provider string + timer *time.Timer +} + +type AuthSvc struct { + sessionMgr *sm.SessionMgr + userStore *users.Connector + metricStore *ms.MetricStore + mqGlobal *mq.MsgQueue + pfmCtrlClient *pcc.APIClient + maxSessions int + uri string + oauthConfigs map[string]*oauth2.Config + loginRequests map[string]*LoginRequest +} + var mutex sync.Mutex var gitlabApiUrl = "" + +// Declare as variables to enable overwrite in test +var redisDBAddr = "meep-redis-master:6379" var influxDBAddr string = "http://meep-influxdb.default.svc.cluster.local:8086" -func initOAuth() (err error) { +// Auth Service +var authSvc *AuthSvc + +func Init() (err error) { + + // Create new Platform Controller + authSvc = new(AuthSvc) + + // Create message queue + authSvc.mqGlobal, err = mq.NewMsgQueue(mq.GetGlobalName(), moduleName, moduleNamespace, redisDBAddr) + if err != nil { + log.Error("Failed to create Message Queue with error: ", err) + return err + } + log.Info("Message Queue created") + + // Create Platform Controller REST API client + pfmCtrlClientCfg := pcc.NewConfiguration() + pfmCtrlClientCfg.BasePath = pfmCtrlBasepath + authSvc.pfmCtrlClient = pcc.NewAPIClient(pfmCtrlClientCfg) + if authSvc.pfmCtrlClient == nil { + err := errors.New("Failed to create Platform Ctrl REST API client") + return err + } + log.Info("Platform Ctrl REST API client created") // Connect to Session Manager - pfmCtrl.sessionMgr, err = sm.NewSessionMgr(moduleName, "", redisDBAddr, redisDBAddr) + authSvc.sessionMgr, err = sm.NewSessionMgr(moduleName, "", redisDBAddr, redisDBAddr) if err != nil { log.Error("Failed connection to Session Manager: ", err.Error()) return err @@ -69,19 +123,19 @@ func initOAuth() (err error) { log.Info("Connected to Session Manager") // Connect to User Store - pfmCtrl.userStore, err = users.NewConnector(moduleName, postgisUser, postgisPwd, "", "") + authSvc.userStore, err = users.NewConnector(moduleName, postgisUser, postgisPwd, "", "") if err != nil { log.Error("Failed connection to User Store: ", err.Error()) return err } - _ = pfmCtrl.userStore.CreateTables() + _ = authSvc.userStore.CreateTables() log.Info("Connected to User Store") // Set endpoint authorization permissions setPermissions() // Connect to Metric Store - pfmCtrl.metricStore, err = ms.NewMetricStore("session-metrics", "global", influxDBAddr, ms.MetricsDbDisabled) + authSvc.metricStore, err = ms.NewMetricStore("session-metrics", "global", influxDBAddr, ms.MetricsDbDisabled) if err != nil { log.Error("Failed connection to Metric Store: ", err) return err @@ -89,16 +143,16 @@ func initOAuth() (err error) { // Retrieve maximum session count from environment variable if maxSessions, err := strconv.ParseInt(os.Getenv("MEEP_MAX_SESSIONS"), 10, 0); err == nil { - pfmCtrl.maxSessions = int(maxSessions) + authSvc.maxSessions = int(maxSessions) } - log.Info("MEEP_MAX_SESSIONS: ", pfmCtrl.maxSessions) + log.Info("MEEP_MAX_SESSIONS: ", authSvc.maxSessions) // Get default platform URI - pfmCtrl.uri = strings.TrimSpace(os.Getenv("MEEP_HOST_URL")) + authSvc.uri = strings.TrimSpace(os.Getenv("MEEP_HOST_URL")) // Initialize OAuth - pfmCtrl.oauthConfigs = make(map[string]*oauth2.Config) - pfmCtrl.loginRequests = make(map[string]*LoginRequest) + authSvc.oauthConfigs = make(map[string]*oauth2.Config) + authSvc.loginRequests = make(map[string]*LoginRequest) // Initialize Github config githubEnabledStr := strings.TrimSpace(os.Getenv("MEEP_OAUTH_GITHUB_ENABLED")) @@ -120,7 +174,7 @@ func initOAuth() (err error) { TokenURL: tokenUrl, }, } - pfmCtrl.oauthConfigs[OAUTH_PROVIDER_GITHUB] = oauthConfig + authSvc.oauthConfigs[OAUTH_PROVIDER_GITHUB] = oauthConfig log.Info("GitHub OAuth provider enabled") } } @@ -146,7 +200,7 @@ func initOAuth() (err error) { TokenURL: tokenUrl, }, } - pfmCtrl.oauthConfigs[OAUTH_PROVIDER_GITLAB] = oauthConfig + authSvc.oauthConfigs[OAUTH_PROVIDER_GITLAB] = oauthConfig log.Info("GitLab OAuth provider enabled") } } @@ -154,9 +208,9 @@ func initOAuth() (err error) { return nil } -func runOAuth() (err error) { +func Run() (err error) { // Start Session Watchdog - err = pfmCtrl.sessionMgr.StartSessionWatchdog(sessionTimeoutCb) + err = authSvc.sessionMgr.StartSessionWatchdog(sessionTimeoutCb) if err != nil { log.Error("Failed start Session Watchdog: ", err.Error()) return err @@ -167,7 +221,7 @@ func runOAuth() (err error) { func setPermissions() { // Flush old permissions - ps := pfmCtrl.sessionMgr.GetPermissionStore() + ps := authSvc.sessionMgr.GetPermissionStore() ps.Flush() // Read & apply API permissions from file @@ -217,10 +271,10 @@ func sessionTimeoutCb(session *sm.Session) { metric.Provider = session.Provider metric.User = session.Username metric.Sandbox = session.Sandbox - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeTimeout, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeTimeout, metric) // Destroy session sandbox - deleteSandbox(session.Sandbox) + _, _ = authSvc.pfmCtrlClient.SandboxControlApi.DeleteSandbox(context.TODO(), session.Sandbox) } // Generate a random state string @@ -242,7 +296,7 @@ func getUniqueState() (state string, err error) { } // Make sure state is unique - if _, found := pfmCtrl.loginRequests[randState]; !found { + if _, found := authSvc.loginRequests[randState]; !found { return randState, nil } } @@ -252,7 +306,7 @@ func getUniqueState() (state string, err error) { func getLoginRequest(state string) *LoginRequest { mutex.Lock() defer mutex.Unlock() - request, found := pfmCtrl.loginRequests[state] + request, found := authSvc.loginRequests[state] if !found { return nil } @@ -262,75 +316,110 @@ func getLoginRequest(state string) *LoginRequest { func setLoginRequest(state string, request *LoginRequest) { mutex.Lock() defer mutex.Unlock() - pfmCtrl.loginRequests[state] = request + authSvc.loginRequests[state] = request } func delLoginRequest(state string) { mutex.Lock() defer mutex.Unlock() - request, found := pfmCtrl.loginRequests[state] + request, found := authSvc.loginRequests[state] if !found { return } if request.timer != nil { request.timer.Stop() } - delete(pfmCtrl.loginRequests, state) + delete(authSvc.loginRequests, state) } func getErrUrl(err string) string { - return pfmCtrl.uri + "?err=" + strings.ReplaceAll(err, " ", "+") + return authSvc.uri + "?err=" + strings.ReplaceAll(err, " ", "+") } -func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { - log.Info("----- OAUTH LOGIN -----") - var metric ms.SessionMetric - - // Retrieve query parameters - query := r.URL.Query() - provider := query.Get("provider") - metric.Provider = provider - - // Get provider-specific OAuth config - config, found := pfmCtrl.oauthConfigs[provider] - if !found { - err := errors.New("Provider config not found for: " + provider) - log.Error(err.Error()) - metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) - http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) +func asAuthenticate(w http.ResponseWriter, r *http.Request) { + + // Get service & sandbox name from request parameters + vars := mux.Vars(r) + svcName := vars["svc"] + sboxName := vars["sbox"] + log.Debug("svcName: ", svcName, " sboxName: ", sboxName) + + // Get target method & URL from forwarded request headers + targetMethod := r.Header.Get("X-Original-Method") + targetUrl := r.Header.Get("X-Original-URL") + log.Debug("targetMethod: ", targetMethod, " targetUrl: ", targetUrl) + + // Get target permissions + // TODO -- parse permissions file on startup to create regexp table + // // Get permission store instance + // ps := pfmCtrl.sessionMgr.GetPermissionStore() + + // if targetMethod != "" && targetUrl != "" { + // url, err := url.ParseRequestURI(targetUrl) + // if err == nil { + + // } + // } + permission := new(sm.Permission) + // permission.Mode = sm.ModeAllow + permission.Mode = sm.ModeVerify + permission.RolePermissions = make(map[string]string) + permission.RolePermissions[sm.RoleAdmin] = sm.ModeAllow + permission.RolePermissions[sm.RoleUser] = sm.ModeBlock + + // // Use default permission if none found + // if permission == nil { + // permission, err = ps.GetDefaultPermission() + // if err != nil || permission == nil { + // http.Error(w, "Unauthorized", http.StatusUnauthorized) + // return + // } + // } + + // Get session store instance + ss := authSvc.sessionMgr.GetSessionStore() + + // Handle according to permission mode + switch permission.Mode { + case sm.ModeBlock: + http.Error(w, "Unauthorized", http.StatusUnauthorized) return - } + case sm.ModeAllow: + case sm.ModeVerify: + // Retrieve user session, if any + session, err := ss.Get(r) + if err != nil || session == nil { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } - // Generate unique random state string - state, err := getUniqueState() - if err != nil { - log.Error(err.Error()) - metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) - http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) - return - } + // Verify role permissions + role := session.Role + if role == "" { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + access := permission.RolePermissions[role] + if access != sm.AccessGranted { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } - // Track oauth request & handle - request := &LoginRequest{ - provider: provider, - timer: time.NewTimer(10 * time.Minute), + // For non-admin users, verify session sandbox matches service sandbox, if any + if session.Role != sm.RoleAdmin && sboxName != "" && sboxName != session.Sandbox { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + default: + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return } - setLoginRequest(state, request) - // Start timer to remove request from map - go func() { - <-request.timer.C - delLoginRequest(state) - }() - - // Generate provider-specific oauth redirect - uri := config.AuthCodeURL(state, oauth2.AccessTypeOnline) - http.Redirect(w, r, uri, http.StatusFound) + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) } -func uaAuthorize(w http.ResponseWriter, r *http.Request) { +func asAuthorize(w http.ResponseWriter, r *http.Request) { var metric ms.SessionMetric // Retrieve query parameters @@ -344,19 +433,19 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { err := errors.New("Invalid OAuth state") log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } // Get provider-specific OAuth config provider := request.provider - config, found := pfmCtrl.oauthConfigs[provider] + config, found := authSvc.oauthConfigs[provider] if !found { err := errors.New("Provider config not found for: " + provider) log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } @@ -370,7 +459,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } @@ -380,7 +469,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { err = errors.New("Failed to create new oauth client") log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } @@ -394,7 +483,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { err = errors.New("Failed to create new GitHub client") log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } @@ -402,7 +491,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to retrieve GitHub user ID"), http.StatusFound) return } @@ -414,7 +503,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { err = errors.New("Failed to create new GitLab client") log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } @@ -425,7 +514,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to set GitLab API base url"), http.StatusFound) return } @@ -435,7 +524,7 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to retrieve GitLab user ID"), http.StatusFound) return } @@ -449,19 +538,67 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), errCode) return } metric.Sandbox = sandboxName - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogin, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeLogin, metric) // Redirect user to sandbox - http.Redirect(w, r, pfmCtrl.uri+"?sbox="+sandboxName+"&user="+userId, http.StatusFound) + http.Redirect(w, r, authSvc.uri+"?sbox="+sandboxName+"&user="+userId, http.StatusFound) +} + +func asLogin(w http.ResponseWriter, r *http.Request) { + log.Info("----- OAUTH LOGIN -----") + var metric ms.SessionMetric + + // Retrieve query parameters + query := r.URL.Query() + provider := query.Get("provider") + metric.Provider = provider + + // Get provider-specific OAuth config + config, found := authSvc.oauthConfigs[provider] + if !found { + err := errors.New("Provider config not found for: " + provider) + log.Error(err.Error()) + metric.Description = err.Error() + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) + return + } + + // Generate unique random state string + state, err := getUniqueState() + if err != nil { + log.Error(err.Error()) + metric.Description = err.Error() + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) + return + } + + // Track oauth request & handle + request := &LoginRequest{ + provider: provider, + timer: time.NewTimer(10 * time.Minute), + } + setLoginRequest(state, request) + + // Start timer to remove request from map + go func() { + <-request.timer.C + delLoginRequest(state) + }() + + // Generate provider-specific oauth redirect + uri := config.AuthCodeURL(state, oauth2.AccessTypeOnline) + http.Redirect(w, r, uri, http.StatusFound) } -func uaLoginUser(w http.ResponseWriter, r *http.Request) { +func asLoginUser(w http.ResponseWriter, r *http.Request) { log.Info("----- LOGIN -----") var metric ms.SessionMetric @@ -473,14 +610,14 @@ func uaLoginUser(w http.ResponseWriter, r *http.Request) { metric.User = username // Validate user credentials - authenticated, err := pfmCtrl.userStore.AuthenticateUser(OAUTH_PROVIDER_LOCAL, username, password) + authenticated, err := authSvc.userStore.AuthenticateUser(OAUTH_PROVIDER_LOCAL, username, password) if err != nil || !authenticated { if err != nil { metric.Description = err.Error() } else { metric.Description = "Unauthorized" } - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Error(w, "Unauthorized", http.StatusUnauthorized) return } @@ -490,13 +627,13 @@ func uaLoginUser(w http.ResponseWriter, r *http.Request) { if err != nil { log.Error(err.Error()) metric.Description = err.Error() - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Error(w, err.Error(), errCode) return } metric.Sandbox = sandboxName - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogin, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeLogin, metric) // Prepare response var sandbox dataModel.Sandbox @@ -520,38 +657,37 @@ func uaLoginUser(w http.ResponseWriter, r *http.Request) { func startSession(provider string, username string, w http.ResponseWriter, r *http.Request) (sandboxName string, err error, code int) { // Get existing session by user name, if any - sessionStore := pfmCtrl.sessionMgr.GetSessionStore() + sessionStore := authSvc.sessionMgr.GetSessionStore() session, err := sessionStore.GetByName(provider, username) if err != nil { // Check if max session count is reached before creating a new one count := sessionStore.GetCount() - if count >= pfmCtrl.maxSessions { + if count >= authSvc.maxSessions { err = errors.New("Maximum session count exceeded") return "", err, http.StatusServiceUnavailable } // Get requested sandbox name & role from user profile, if any role := users.RoleUser - user, err := pfmCtrl.userStore.GetUser(provider, username) + user, err := authSvc.userStore.GetUser(provider, username) if err == nil { sandboxName = user.Sboxname role = user.Role } - // Get a new unique sanbox name if not configured in user profile + // Create sandbox + var sandboxConfig pcc.SandboxConfig if sandboxName == "" { - sandboxName = getUniqueSandboxName() - if sandboxName == "" { - err = errors.New("Failed to generate a unique sandbox name") + sandbox, _, err := authSvc.pfmCtrlClient.SandboxControlApi.CreateSandbox(context.TODO(), sandboxConfig) + if err != nil { + return "", err, http.StatusInternalServerError + } + sandboxName = sandbox.Name + } else { + _, err := authSvc.pfmCtrlClient.SandboxControlApi.CreateSandboxWithName(context.TODO(), sandboxName, sandboxConfig) + if err != nil { return "", err, http.StatusInternalServerError } - } - - // Create sandbox in DB - var sandboxConfig dataModel.SandboxConfig - err = createSandbox(sandboxName, &sandboxConfig) - if err != nil { - return "", err, http.StatusInternalServerError } // Create new session @@ -571,26 +707,26 @@ func startSession(provider string, username string, w http.ResponseWriter, r *ht log.Error("Failed to set session with err: ", err.Error()) // Remove newly created sandbox on failure if session.ID == "" { - deleteSandbox(sandboxName) + _, _ = authSvc.pfmCtrlClient.SandboxControlApi.DeleteSandbox(context.TODO(), sandboxName) } return "", err, code } return sandboxName, nil, http.StatusOK } -func uaLogoutUser(w http.ResponseWriter, r *http.Request) { +func asLogout(w http.ResponseWriter, r *http.Request) { log.Info("----- LOGOUT -----") var metric ms.SessionMetric // Get existing session - sessionStore := pfmCtrl.sessionMgr.GetSessionStore() + sessionStore := authSvc.sessionMgr.GetSessionStore() session, err := sessionStore.Get(r) if err == nil { metric.Provider = session.Provider metric.User = session.Username metric.Sandbox = session.Sandbox // Delete sandbox - deleteSandbox(session.Sandbox) + _, _ = authSvc.pfmCtrlClient.SandboxControlApi.DeleteSandbox(context.TODO(), session.Sandbox) } // Delete session @@ -601,15 +737,15 @@ func uaLogoutUser(w http.ResponseWriter, r *http.Request) { return } - _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogout, metric) + _ = authSvc.metricStore.SetSessionMetric(ms.SesMetTypeLogout, metric) w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } -func uaTriggerWatchdog(w http.ResponseWriter, r *http.Request) { +func asTriggerWatchdog(w http.ResponseWriter, r *http.Request) { // Refresh session - sessionStore := pfmCtrl.sessionMgr.GetSessionStore() + sessionStore := authSvc.sessionMgr.GetSessionStore() err, code := sessionStore.Refresh(w, r) if err != nil { log.Error("Failed to refresh session with err: ", err.Error()) diff --git a/go-apps/meep-auth-svc/server/logger.go b/go-apps/meep-auth-svc/server/logger.go new file mode 100644 index 000000000..171015103 --- /dev/null +++ b/go-apps/meep-auth-svc/server/logger.go @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package server + +import ( + "log" + "net/http" + "time" +) + +func Logger(inner http.Handler, name string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() + + inner.ServeHTTP(w, r) + + log.Printf( + "%s %s %s %s", + r.Method, + r.RequestURI, + name, + time.Since(start), + ) + }) +} diff --git a/go-apps/meep-auth-svc/server/model_sandbox.go b/go-apps/meep-auth-svc/server/model_sandbox.go new file mode 100644 index 000000000..0a2bd9832 --- /dev/null +++ b/go-apps/meep-auth-svc/server/model_sandbox.go @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package server + +// Sandbox object +type Sandbox struct { + + // Sandbox name + Name string `json:"name,omitempty"` +} diff --git a/go-apps/meep-auth-svc/server/routers.go b/go-apps/meep-auth-svc/server/routers.go new file mode 100644 index 000000000..8add7e187 --- /dev/null +++ b/go-apps/meep-auth-svc/server/routers.go @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * API version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package server + +import ( + "fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" +) + +type Route struct { + Name string + Method string + Pattern string + HandlerFunc http.HandlerFunc +} + +type Routes []Route + +func NewRouter() *mux.Router { + router := mux.NewRouter().StrictSlash(true) + for _, route := range routes { + var handler http.Handler = route.HandlerFunc + handler = Logger(handler, route.Name) + + router. + Methods(route.Method). + Path(route.Pattern). + Name(route.Name). + Handler(handler) + } + + return router +} + +func Index(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "Hello World!") +} + +var routes = Routes{ + Route{ + "Index", + "GET", + "/auth/v1/", + Index, + }, + + Route{ + "Authenticate", + strings.ToUpper("Get"), + "/auth/v1/authenticate", + Authenticate, + }, + + Route{ + "Authorize", + strings.ToUpper("Get"), + "/auth/v1/authorize", + Authorize, + }, + + Route{ + "Login", + strings.ToUpper("Get"), + "/auth/v1/login", + Login, + }, + + Route{ + "LoginUser", + strings.ToUpper("Post"), + "/auth/v1/login", + LoginUser, + }, + + Route{ + "Logout", + strings.ToUpper("Get"), + "/auth/v1/logout", + Logout, + }, + + Route{ + "TriggerWatchdog", + strings.ToUpper("Post"), + "/auth/v1/watchdog", + TriggerWatchdog, + }, +} diff --git a/go-apps/meep-platform-ctrl/Dockerfile b/go-apps/meep-platform-ctrl/Dockerfile index a51d3e594..50a028f08 100644 --- a/go-apps/meep-platform-ctrl/Dockerfile +++ b/go-apps/meep-platform-ctrl/Dockerfile @@ -16,11 +16,11 @@ FROM debian:9.6-slim COPY ./meep-platform-ctrl /meep-platform-ctrl COPY ./frontend /frontend COPY ./swagger /swagger -COPY ./permissions.yaml /permissions.yaml +# COPY ./permissions.yaml /permissions.yaml -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates +# RUN apt-get update \ +# && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates -RUN update-ca-certificates +# RUN update-ca-certificates ENTRYPOINT ["/meep-platform-ctrl"] diff --git a/go-apps/meep-platform-ctrl/api/swagger.yaml b/go-apps/meep-platform-ctrl/api/swagger.yaml index 4c24f1bbe..cb7837993 100644 --- a/go-apps/meep-platform-ctrl/api/swagger.yaml +++ b/go-apps/meep-platform-ctrl/api/swagger.yaml @@ -18,125 +18,11 @@ basePath: "/platform-ctrl/v1" tags: - name: "Scenario Configuration" - name: "Sandbox Control" -- name: "User Authentication" consumes: - "application/json" produces: - "application/json" paths: - /login: - get: - tags: - - "User Authentication" - summary: "Initiate OAuth login procedure" - description: "Start OAuth login procedure with provider" - operationId: "loginOAuth" - produces: - - "application/json" - parameters: - - name: "provider" - in: "query" - description: "Oauth provider" - required: false - type: "string" - enum: - - "github" - - "gitlab" - x-exportParamName: "Provider" - x-optionalDataType: "String" - responses: - 302: - description: "Found" - post: - tags: - - "User Authentication" - summary: "Start a session" - description: "Start a session after authenticating user" - operationId: "loginUser" - consumes: - - "application/x-www-form-urlencoded" - produces: - - "application/json" - parameters: - - name: "username" - in: "formData" - description: "User Name" - required: false - type: "string" - x-exportParamName: "Username" - x-optionalDataType: "String" - - name: "password" - in: "formData" - description: "User Password" - required: false - type: "string" - x-exportParamName: "Password" - x-optionalDataType: "String" - responses: - 200: - description: "OK" - schema: - $ref: "#/definitions/Sandbox" - 401: - description: "Unauthorized" - /logout: - get: - tags: - - "User Authentication" - summary: "Terminate a session" - description: "Terminate a session" - operationId: "logoutUser" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "OK" - 401: - description: "Unauthorized" - /authorize: - get: - tags: - - "User Authentication" - summary: "OAuth authorization response endpoint" - description: "Redirect URI endpoint for OAuth authorization responses. Starts\ - \ a user session." - operationId: "authorize" - produces: - - "application/json" - parameters: - - name: "code" - in: "query" - description: "Temporary authorization code" - required: false - type: "string" - x-exportParamName: "Code" - x-optionalDataType: "String" - - name: "state" - in: "query" - description: "User-provided random state" - required: false - type: "string" - x-exportParamName: "State" - x-optionalDataType: "String" - responses: - 302: - description: "Found" - /watchdog: - post: - tags: - - "User Authentication" - summary: "Send heartbeat to watchdog" - description: "Send heartbeat to watchdog to keep session alive" - operationId: "triggerWatchdog" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "OK" - 401: - description: "Unauthorized" /scenarios: get: tags: @@ -406,14 +292,6 @@ paths: 404: description: "Not found" definitions: - Sandbox: - type: "object" - properties: - name: - type: "string" - description: "Sandbox name" - description: "Sandbox object" - example: {} ScenarioList: type: "object" properties: @@ -1110,6 +988,14 @@ definitions: $ref: "#/definitions/Sandbox" description: "Sandbox list" example: {} + Sandbox: + type: "object" + properties: + name: + type: "string" + description: "Sandbox name" + description: "Sandbox object" + example: {} SandboxConfig: type: "object" properties: diff --git a/go-apps/meep-platform-ctrl/go.mod b/go-apps/meep-platform-ctrl/go.mod index 799953bc9..2a3afe39b 100644 --- a/go-apps/meep-platform-ctrl/go.mod +++ b/go-apps/meep-platform-ctrl/go.mod @@ -7,21 +7,21 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 // indirect github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users v0.0.0 + github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users v0.0.0 // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect - github.com/google/go-github v17.0.0+incompatible + github.com/google/go-github v17.0.0+incompatible // indirect github.com/google/go-querystring v1.0.0 // indirect github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.4 - github.com/lkysow/go-gitlab v0.7.1 - github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + github.com/lkysow/go-gitlab v0.7.1 // indirect + github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3 // indirect + golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 // indirect google.golang.org/protobuf v1.25.0 // indirect ) diff --git a/go-apps/meep-platform-ctrl/server/README.md b/go-apps/meep-platform-ctrl/server/README.md index c09a86628..257507805 100644 --- a/go-apps/meep-platform-ctrl/server/README.md +++ b/go-apps/meep-platform-ctrl/server/README.md @@ -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: 2021-01-14T11:45:18.742-05:00 +- Build date: 2021-01-14T16:45:19.169-05:00 ### Running the server diff --git a/go-apps/meep-platform-ctrl/server/platform-ctrl.go b/go-apps/meep-platform-ctrl/server/platform-ctrl.go index d53353836..246e9cb06 100644 --- a/go-apps/meep-platform-ctrl/server/platform-ctrl.go +++ b/go-apps/meep-platform-ctrl/server/platform-ctrl.go @@ -26,51 +26,34 @@ import ( "time" "github.com/gorilla/mux" - "golang.org/x/oauth2" couch "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch" dkm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr" dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" - ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" ss "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store" sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" - users "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users" ) type Scenario struct { Name string `json:"name,omitempty"` } -type LoginRequest struct { - provider string - timer *time.Timer -} - type PlatformCtrl struct { scenarioStore *couch.Connector rc *redis.Connector sessionMgr *sm.SessionMgr sandboxStore *ss.SandboxStore - userStore *users.Connector - metricStore *ms.MetricStore mqGlobal *mq.MsgQueue - maxSessions int - uri string - oauthConfigs map[string]*oauth2.Config - loginRequests map[string]*LoginRequest } const scenarioDBName = "scenarios" const redisTable = 0 const moduleName = "meep-platform-ctrl" const moduleNamespace = "default" -const postgisUser = "postgres" -const postgisPwd = "pwd" -const permissionsRoot = "services" // MQ payload fields const fieldSandboxName = "sandbox-name" @@ -152,12 +135,13 @@ func Init() (err error) { } log.Info("Connected to Sandbox Store") - // Initialize OAuth - err = initOAuth() + // Connect to Session Manager + pfmCtrl.sessionMgr, err = sm.NewSessionMgr(moduleName, "", redisDBAddr, redisDBAddr) if err != nil { - log.Error("Failed OAuth Init: ", err.Error()) + log.Error("Failed connection to Session Manager: ", err.Error()) return err } + log.Info("Connected to Session Manager") log.Info("Platform Controller initialized") return nil @@ -166,13 +150,6 @@ func Init() (err error) { // Run Starts the Platform Controller func Run() (err error) { - // Start OAuth - err = runOAuth() - if err != nil { - log.Error("Failed to start OAuth: ", err.Error()) - return err - } - log.Info("Platform Controller started") return nil } diff --git a/go-apps/meep-platform-ctrl/server/routers.go b/go-apps/meep-platform-ctrl/server/routers.go index d9fc14e23..3d8f7e6ef 100644 --- a/go-apps/meep-platform-ctrl/server/routers.go +++ b/go-apps/meep-platform-ctrl/server/routers.go @@ -186,39 +186,4 @@ var routes = Routes{ "/platform-ctrl/v1/scenarios/{name}", SetScenario, }, - - Route{ - "Authorize", - strings.ToUpper("Get"), - "/platform-ctrl/v1/authorize", - Authorize, - }, - - Route{ - "LoginOAuth", - strings.ToUpper("Get"), - "/platform-ctrl/v1/login", - LoginOAuth, - }, - - Route{ - "LoginUser", - strings.ToUpper("Post"), - "/platform-ctrl/v1/login", - LoginUser, - }, - - Route{ - "LogoutUser", - strings.ToUpper("Get"), - "/platform-ctrl/v1/logout", - LogoutUser, - }, - - Route{ - "TriggerWatchdog", - strings.ToUpper("Post"), - "/platform-ctrl/v1/watchdog", - TriggerWatchdog, - }, } diff --git a/go-apps/meepctl/cmd/deploy.go b/go-apps/meepctl/cmd/deploy.go index e3ef62c64..7d31041e8 100644 --- a/go-apps/meepctl/cmd/deploy.go +++ b/go-apps/meepctl/cmd/deploy.go @@ -290,7 +290,7 @@ func deployRunScriptsAndGetFlags(targetName string, chart string, cobraCmd *cobr flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_DEPENDENCY_PODS="+getPodList(monEngineTarget+".dependency-pods")) flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_CORE_PODS="+getPodList(monEngineTarget+".core-pods")) flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_SANDBOX_PODS="+getPodList(monEngineTarget+".sandbox-pods")) - case "meep-platform-ctrl": + case "meep-auth-svc": hostName := utils.RepoCfg.GetString("repo.deployment.ingress.host") flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HOST_URL=https://"+hostName) maxSessions := utils.RepoCfg.GetString("repo.deployment.auth.session.max-sessions") diff --git a/go-packages/meep-platform-ctrl-client/README.md b/go-packages/meep-platform-ctrl-client/README.md index 6113a8b53..502a0fc63 100644 --- a/go-packages/meep-platform-ctrl-client/README.md +++ b/go-packages/meep-platform-ctrl-client/README.md @@ -33,11 +33,6 @@ Class | Method | HTTP request | Description *ScenarioConfigurationApi* | [**GetScenario**](docs/ScenarioConfigurationApi.md#getscenario) | **Get** /scenarios/{name} | Get a specific scenario *ScenarioConfigurationApi* | [**GetScenarioList**](docs/ScenarioConfigurationApi.md#getscenariolist) | **Get** /scenarios | Get all scenarios *ScenarioConfigurationApi* | [**SetScenario**](docs/ScenarioConfigurationApi.md#setscenario) | **Put** /scenarios/{name} | Update a scenario -*UserAuthenticationApi* | [**Authorize**](docs/UserAuthenticationApi.md#authorize) | **Get** /authorize | OAuth authorization response endpoint -*UserAuthenticationApi* | [**LoginOAuth**](docs/UserAuthenticationApi.md#loginoauth) | **Get** /login | Initiate OAuth login procedure -*UserAuthenticationApi* | [**LoginUser**](docs/UserAuthenticationApi.md#loginuser) | **Post** /login | Start a session -*UserAuthenticationApi* | [**LogoutUser**](docs/UserAuthenticationApi.md#logoutuser) | **Get** /logout | Terminate a session -*UserAuthenticationApi* | [**TriggerWatchdog**](docs/UserAuthenticationApi.md#triggerwatchdog) | **Post** /watchdog | Send heartbeat to watchdog ## Documentation For Models diff --git a/go-packages/meep-platform-ctrl-client/api/swagger.yaml b/go-packages/meep-platform-ctrl-client/api/swagger.yaml index 4c24f1bbe..cb7837993 100644 --- a/go-packages/meep-platform-ctrl-client/api/swagger.yaml +++ b/go-packages/meep-platform-ctrl-client/api/swagger.yaml @@ -18,125 +18,11 @@ basePath: "/platform-ctrl/v1" tags: - name: "Scenario Configuration" - name: "Sandbox Control" -- name: "User Authentication" consumes: - "application/json" produces: - "application/json" paths: - /login: - get: - tags: - - "User Authentication" - summary: "Initiate OAuth login procedure" - description: "Start OAuth login procedure with provider" - operationId: "loginOAuth" - produces: - - "application/json" - parameters: - - name: "provider" - in: "query" - description: "Oauth provider" - required: false - type: "string" - enum: - - "github" - - "gitlab" - x-exportParamName: "Provider" - x-optionalDataType: "String" - responses: - 302: - description: "Found" - post: - tags: - - "User Authentication" - summary: "Start a session" - description: "Start a session after authenticating user" - operationId: "loginUser" - consumes: - - "application/x-www-form-urlencoded" - produces: - - "application/json" - parameters: - - name: "username" - in: "formData" - description: "User Name" - required: false - type: "string" - x-exportParamName: "Username" - x-optionalDataType: "String" - - name: "password" - in: "formData" - description: "User Password" - required: false - type: "string" - x-exportParamName: "Password" - x-optionalDataType: "String" - responses: - 200: - description: "OK" - schema: - $ref: "#/definitions/Sandbox" - 401: - description: "Unauthorized" - /logout: - get: - tags: - - "User Authentication" - summary: "Terminate a session" - description: "Terminate a session" - operationId: "logoutUser" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "OK" - 401: - description: "Unauthorized" - /authorize: - get: - tags: - - "User Authentication" - summary: "OAuth authorization response endpoint" - description: "Redirect URI endpoint for OAuth authorization responses. Starts\ - \ a user session." - operationId: "authorize" - produces: - - "application/json" - parameters: - - name: "code" - in: "query" - description: "Temporary authorization code" - required: false - type: "string" - x-exportParamName: "Code" - x-optionalDataType: "String" - - name: "state" - in: "query" - description: "User-provided random state" - required: false - type: "string" - x-exportParamName: "State" - x-optionalDataType: "String" - responses: - 302: - description: "Found" - /watchdog: - post: - tags: - - "User Authentication" - summary: "Send heartbeat to watchdog" - description: "Send heartbeat to watchdog to keep session alive" - operationId: "triggerWatchdog" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "OK" - 401: - description: "Unauthorized" /scenarios: get: tags: @@ -406,14 +292,6 @@ paths: 404: description: "Not found" definitions: - Sandbox: - type: "object" - properties: - name: - type: "string" - description: "Sandbox name" - description: "Sandbox object" - example: {} ScenarioList: type: "object" properties: @@ -1110,6 +988,14 @@ definitions: $ref: "#/definitions/Sandbox" description: "Sandbox list" example: {} + Sandbox: + type: "object" + properties: + name: + type: "string" + description: "Sandbox name" + description: "Sandbox object" + example: {} SandboxConfig: type: "object" properties: diff --git a/go-packages/meep-platform-ctrl-client/api_user_authentication.go b/go-packages/meep-platform-ctrl-client/api_user_authentication.go deleted file mode 100644 index 2ba945562..000000000 --- a/go-packages/meep-platform-ctrl-client/api_user_authentication.go +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright (c) 2020 InterDigital Communications, Inc - * - * Licensed under the Apache License, Version 2.0 (the \"License\"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an \"AS IS\" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * AdvantEDGE Platform Controller REST API - * - * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ - * - * API version: 1.0.0 - * Contact: AdvantEDGE@InterDigital.com - * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) - */ - -package client - -import ( - "context" - "io/ioutil" - "net/http" - "net/url" - "strings" - - "github.com/antihax/optional" -) - -// Linger please -var ( - _ context.Context -) - -type UserAuthenticationApiService service - -/* -UserAuthenticationApiService OAuth authorization response endpoint -Redirect URI endpoint for OAuth authorization responses. Starts a user session. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param optional nil or *AuthorizeOpts - Optional Parameters: - * @param "Code" (optional.String) - Temporary authorization code - * @param "State" (optional.String) - User-provided random state - - -*/ - -type AuthorizeOpts struct { - Code optional.String - State optional.String -} - -func (a *UserAuthenticationApiService) Authorize(ctx context.Context, localVarOptionals *AuthorizeOpts) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/authorize" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.Code.IsSet() { - localVarQueryParams.Add("code", parameterToString(localVarOptionals.Code.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.State.IsSet() { - localVarQueryParams.Add("state", parameterToString(localVarOptionals.State.Value(), "")) - } - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} - -/* -UserAuthenticationApiService Initiate OAuth login procedure -Start OAuth login procedure with provider - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param optional nil or *LoginOAuthOpts - Optional Parameters: - * @param "Provider" (optional.String) - Oauth provider - - -*/ - -type LoginOAuthOpts struct { - Provider optional.String -} - -func (a *UserAuthenticationApiService) LoginOAuth(ctx context.Context, localVarOptionals *LoginOAuthOpts) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/login" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.Provider.IsSet() { - localVarQueryParams.Add("provider", parameterToString(localVarOptionals.Provider.Value(), "")) - } - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} - -/* -UserAuthenticationApiService Start a session -Start a session after authenticating user - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param optional nil or *LoginUserOpts - Optional Parameters: - * @param "Username" (optional.String) - User Name - * @param "Password" (optional.String) - User Password - -@return Sandbox -*/ - -type LoginUserOpts struct { - Username optional.String - Password optional.String -} - -func (a *UserAuthenticationApiService) LoginUser(ctx context.Context, localVarOptionals *LoginUserOpts) (Sandbox, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue Sandbox - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/login" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/x-www-form-urlencoded"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - if localVarOptionals != nil && localVarOptionals.Username.IsSet() { - localVarFormParams.Add("username", parameterToString(localVarOptionals.Username.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.Password.IsSet() { - localVarFormParams.Add("password", parameterToString(localVarOptionals.Password.Value(), "")) - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v Sandbox - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - -/* -UserAuthenticationApiService Terminate a session -Terminate a session - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - - -*/ -func (a *UserAuthenticationApiService) LogoutUser(ctx context.Context) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/logout" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} - -/* -UserAuthenticationApiService Send heartbeat to watchdog -Send heartbeat to watchdog to keep session alive - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - - -*/ -func (a *UserAuthenticationApiService) TriggerWatchdog(ctx context.Context) (*http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/watchdog" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - // to determine the Content-Type header - localVarHttpContentTypes := []string{"application/json"} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - return localVarHttpResponse, newErr - } - - return localVarHttpResponse, nil -} diff --git a/go-packages/meep-platform-ctrl-client/client.go b/go-packages/meep-platform-ctrl-client/client.go index fd96475d5..1456bd7ea 100644 --- a/go-packages/meep-platform-ctrl-client/client.go +++ b/go-packages/meep-platform-ctrl-client/client.go @@ -63,8 +63,6 @@ type APIClient struct { SandboxControlApi *SandboxControlApiService ScenarioConfigurationApi *ScenarioConfigurationApiService - - UserAuthenticationApi *UserAuthenticationApiService } type service struct { @@ -85,7 +83,6 @@ func NewAPIClient(cfg *Configuration) *APIClient { // API Services c.SandboxControlApi = (*SandboxControlApiService)(&c.common) c.ScenarioConfigurationApi = (*ScenarioConfigurationApiService)(&c.common) - c.UserAuthenticationApi = (*UserAuthenticationApiService)(&c.common) return c } diff --git a/go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md b/go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md deleted file mode 100644 index 50cdb808c..000000000 --- a/go-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md +++ /dev/null @@ -1,168 +0,0 @@ -# \UserAuthenticationApi - -All URIs are relative to *https://localhost/platform-ctrl/v1* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**Authorize**](UserAuthenticationApi.md#Authorize) | **Get** /authorize | OAuth authorization response endpoint -[**LoginOAuth**](UserAuthenticationApi.md#LoginOAuth) | **Get** /login | Initiate OAuth login procedure -[**LoginUser**](UserAuthenticationApi.md#LoginUser) | **Post** /login | Start a session -[**LogoutUser**](UserAuthenticationApi.md#LogoutUser) | **Get** /logout | Terminate a session -[**TriggerWatchdog**](UserAuthenticationApi.md#TriggerWatchdog) | **Post** /watchdog | Send heartbeat to watchdog - - -# **Authorize** -> Authorize(ctx, optional) -OAuth authorization response endpoint - -Redirect URI endpoint for OAuth authorization responses. Starts a user session. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **optional** | ***AuthorizeOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a AuthorizeOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **code** | **optional.String**| Temporary authorization code | - **state** | **optional.String**| User-provided random state | - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **LoginOAuth** -> LoginOAuth(ctx, optional) -Initiate OAuth login procedure - -Start OAuth login procedure with provider - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **optional** | ***LoginOAuthOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a LoginOAuthOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **provider** | **optional.String**| Oauth provider | - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **LoginUser** -> Sandbox LoginUser(ctx, optional) -Start a session - -Start a session after authenticating user - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **optional** | ***LoginUserOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a LoginUserOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | **optional.String**| User Name | - **password** | **optional.String**| User Password | - -### Return type - -[**Sandbox**](Sandbox.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **LogoutUser** -> LogoutUser(ctx, ) -Terminate a session - -Terminate a session - -### Required Parameters -This endpoint does not need any parameter. - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **TriggerWatchdog** -> TriggerWatchdog(ctx, ) -Send heartbeat to watchdog - -Send heartbeat to watchdog to keep session alive - -### Required Parameters -This endpoint does not need any parameter. - -### Return type - - (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/js-packages/meep-auth-svc-client/.swagger-codegen-ignore b/js-packages/meep-auth-svc-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/js-packages/meep-auth-svc-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/js-packages/meep-auth-svc-client/.swagger-codegen/VERSION b/js-packages/meep-auth-svc-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/js-packages/meep-auth-svc-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/js-packages/meep-auth-svc-client/.travis.yml b/js-packages/meep-auth-svc-client/.travis.yml new file mode 100644 index 000000000..e49f4692f --- /dev/null +++ b/js-packages/meep-auth-svc-client/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "6" + - "6.1" + - "5" + - "5.11" + diff --git a/js-packages/meep-auth-svc-client/README.md b/js-packages/meep-auth-svc-client/README.md new file mode 100644 index 000000000..c96ef8ff9 --- /dev/null +++ b/js-packages/meep-auth-svc-client/README.md @@ -0,0 +1,138 @@ +# advant_edge_auth_service_rest_api + +AdvantEdgeAuthServiceRestApi - JavaScript client for advant_edge_auth_service_rest_api +This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ +This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project: + +- API version: 1.0.0 +- Package version: 1.0.0 +- Build package: io.swagger.codegen.languages.JavascriptClientCodegen + +## Installation + +### For [Node.js](https://nodejs.org/) + +#### npm + +To publish the library as a [npm](https://www.npmjs.com/), +please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages). + +Then install it via: + +```shell +npm install advant_edge_auth_service_rest_api --save +``` + +##### Local development + +To use the library locally without publishing to a remote npm registry, first install the dependencies by changing +into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run: + +```shell +npm install +``` + +Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`: + +```shell +npm link +``` + +Finally, switch to the directory you want to use your advant_edge_auth_service_rest_api from, and run: + +```shell +npm link /path/to/ +``` + +You should now be able to `require('advant_edge_auth_service_rest_api')` in javascript files from the directory you ran the last +command above from. + +#### git +# +If the library is hosted at a git repository, e.g. +https://github.com/GIT_USER_ID/GIT_REPO_ID +then install it via: + +```shell + npm install GIT_USER_ID/GIT_REPO_ID --save +``` + +### For browser + +The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following +the above steps with Node.js and installing browserify with `npm install -g browserify`, +perform the following (assuming *main.js* is your entry file, that's to say your javascript file where you actually +use this library): + +```shell +browserify main.js > bundle.js +``` + +Then include *bundle.js* in the HTML pages. + +### Webpack Configuration + +Using Webpack you may encounter the following error: "Module not found: Error: +Cannot resolve module", most certainly you should disable AMD loader. Add/merge +the following section to your webpack config: + +```javascript +module: { + rules: [ + { + parser: { + amd: false + } + } + ] +} +``` + +## Getting Started + +Please follow the [installation](#installation) instruction and execute the following JS code: + +```javascript +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); + +var api = new AdvantEdgeAuthServiceRestApi.AuthApi() + +var opts = { + 'svc': "svc_example", // {String} Service requesting authentication + 'sbox': "sbox_example" // {String} Sandbox name +}; + +var callback = function(error, data, response) { + if (error) { + console.error(error); + } else { + console.log('API called successfully.'); + } +}; +api.authenticate(opts, callback); + +``` + +## Documentation for API Endpoints + +All URIs are relative to *https://localhost/auth/v1* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*AdvantEdgeAuthServiceRestApi.AuthApi* | [**authenticate**](docs/AuthApi.md#authenticate) | **GET** /authenticate | Authenticate service request +*AdvantEdgeAuthServiceRestApi.AuthApi* | [**authorize**](docs/AuthApi.md#authorize) | **GET** /authorize | OAuth authorization response endpoint +*AdvantEdgeAuthServiceRestApi.AuthApi* | [**login**](docs/AuthApi.md#login) | **GET** /login | Initiate OAuth login procedure +*AdvantEdgeAuthServiceRestApi.AuthApi* | [**loginUser**](docs/AuthApi.md#loginUser) | **POST** /login | Start a session +*AdvantEdgeAuthServiceRestApi.AuthApi* | [**logout**](docs/AuthApi.md#logout) | **GET** /logout | Terminate a session +*AdvantEdgeAuthServiceRestApi.AuthApi* | [**triggerWatchdog**](docs/AuthApi.md#triggerWatchdog) | **POST** /watchdog | Send heartbeat to watchdog + + +## Documentation for Models + + - [AdvantEdgeAuthServiceRestApi.Sandbox](docs/Sandbox.md) + + +## Documentation for Authorization + + All endpoints do not require authorization. + diff --git a/js-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md b/js-packages/meep-auth-svc-client/docs/AuthApi.md similarity index 59% rename from js-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md rename to js-packages/meep-auth-svc-client/docs/AuthApi.md index e40f64150..0b44939c3 100644 --- a/js-packages/meep-platform-ctrl-client/docs/UserAuthenticationApi.md +++ b/js-packages/meep-auth-svc-client/docs/AuthApi.md @@ -1,16 +1,66 @@ -# AdvantEdgePlatformControllerRestApi.UserAuthenticationApi +# AdvantEdgeAuthServiceRestApi.AuthApi -All URIs are relative to *https://localhost/platform-ctrl/v1* +All URIs are relative to *https://localhost/auth/v1* Method | HTTP request | Description ------------- | ------------- | ------------- -[**authorize**](UserAuthenticationApi.md#authorize) | **GET** /authorize | OAuth authorization response endpoint -[**loginOAuth**](UserAuthenticationApi.md#loginOAuth) | **GET** /login | Initiate OAuth login procedure -[**loginUser**](UserAuthenticationApi.md#loginUser) | **POST** /login | Start a session -[**logoutUser**](UserAuthenticationApi.md#logoutUser) | **GET** /logout | Terminate a session -[**triggerWatchdog**](UserAuthenticationApi.md#triggerWatchdog) | **POST** /watchdog | Send heartbeat to watchdog +[**authenticate**](AuthApi.md#authenticate) | **GET** /authenticate | Authenticate service request +[**authorize**](AuthApi.md#authorize) | **GET** /authorize | OAuth authorization response endpoint +[**login**](AuthApi.md#login) | **GET** /login | Initiate OAuth login procedure +[**loginUser**](AuthApi.md#loginUser) | **POST** /login | Start a session +[**logout**](AuthApi.md#logout) | **GET** /logout | Terminate a session +[**triggerWatchdog**](AuthApi.md#triggerWatchdog) | **POST** /watchdog | Send heartbeat to watchdog + +# **authenticate** +> authenticate(opts) + +Authenticate service request + +Authenticate & authorize microservice endpoint access + +### Example +```javascript +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); + +var apiInstance = new AdvantEdgeAuthServiceRestApi.AuthApi(); + +var opts = { + 'svc': "svc_example", // String | Service requesting authentication + 'sbox': "sbox_example" // String | Sandbox name +}; + +var callback = function(error, data, response) { + if (error) { + console.error(error); + } else { + console.log('API called successfully.'); + } +}; +apiInstance.authenticate(opts, callback); +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **svc** | **String**| Service requesting authentication | [optional] + **sbox** | **String**| Sandbox name | [optional] + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + # **authorize** > authorize(opts) @@ -21,9 +71,9 @@ Redirect URI endpoint for OAuth authorization responses. Starts a user session. ### Example ```javascript -var AdvantEdgePlatformControllerRestApi = require('advant_edge_platform_controller_rest_api'); +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); -var apiInstance = new AdvantEdgePlatformControllerRestApi.UserAuthenticationApi(); +var apiInstance = new AdvantEdgeAuthServiceRestApi.AuthApi(); var opts = { 'code': "code_example", // String | Temporary authorization code @@ -60,9 +110,9 @@ No authorization required - **Content-Type**: application/json - **Accept**: application/json - -# **loginOAuth** -> loginOAuth(opts) + +# **login** +> login(opts) Initiate OAuth login procedure @@ -70,9 +120,9 @@ Start OAuth login procedure with provider ### Example ```javascript -var AdvantEdgePlatformControllerRestApi = require('advant_edge_platform_controller_rest_api'); +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); -var apiInstance = new AdvantEdgePlatformControllerRestApi.UserAuthenticationApi(); +var apiInstance = new AdvantEdgeAuthServiceRestApi.AuthApi(); var opts = { 'provider': "provider_example" // String | Oauth provider @@ -85,7 +135,7 @@ var callback = function(error, data, response) { console.log('API called successfully.'); } }; -apiInstance.loginOAuth(opts, callback); +apiInstance.login(opts, callback); ``` ### Parameters @@ -117,9 +167,9 @@ Start a session after authenticating user ### Example ```javascript -var AdvantEdgePlatformControllerRestApi = require('advant_edge_platform_controller_rest_api'); +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); -var apiInstance = new AdvantEdgePlatformControllerRestApi.UserAuthenticationApi(); +var apiInstance = new AdvantEdgeAuthServiceRestApi.AuthApi(); var opts = { 'username': "username_example", // String | User Name @@ -156,9 +206,9 @@ No authorization required - **Content-Type**: application/x-www-form-urlencoded - **Accept**: application/json - -# **logoutUser** -> logoutUser() + +# **logout** +> logout() Terminate a session @@ -166,9 +216,9 @@ Terminate a session ### Example ```javascript -var AdvantEdgePlatformControllerRestApi = require('advant_edge_platform_controller_rest_api'); +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); -var apiInstance = new AdvantEdgePlatformControllerRestApi.UserAuthenticationApi(); +var apiInstance = new AdvantEdgeAuthServiceRestApi.AuthApi(); var callback = function(error, data, response) { if (error) { @@ -177,7 +227,7 @@ var callback = function(error, data, response) { console.log('API called successfully.'); } }; -apiInstance.logoutUser(callback); +apiInstance.logout(callback); ``` ### Parameters @@ -206,9 +256,9 @@ Send heartbeat to watchdog to keep session alive ### Example ```javascript -var AdvantEdgePlatformControllerRestApi = require('advant_edge_platform_controller_rest_api'); +var AdvantEdgeAuthServiceRestApi = require('advant_edge_auth_service_rest_api'); -var apiInstance = new AdvantEdgePlatformControllerRestApi.UserAuthenticationApi(); +var apiInstance = new AdvantEdgeAuthServiceRestApi.AuthApi(); var callback = function(error, data, response) { if (error) { diff --git a/js-packages/meep-auth-svc-client/docs/Sandbox.md b/js-packages/meep-auth-svc-client/docs/Sandbox.md new file mode 100644 index 000000000..7447430ae --- /dev/null +++ b/js-packages/meep-auth-svc-client/docs/Sandbox.md @@ -0,0 +1,8 @@ +# AdvantEdgeAuthServiceRestApi.Sandbox + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | Sandbox name | [optional] + + diff --git a/js-packages/meep-auth-svc-client/git_push.sh b/js-packages/meep-auth-svc-client/git_push.sh new file mode 100644 index 000000000..0d041ad0b --- /dev/null +++ b/js-packages/meep-auth-svc-client/git_push.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=`git remote` +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the Git credential in your environment." + git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' + diff --git a/js-packages/meep-auth-svc-client/mocha.opts b/js-packages/meep-auth-svc-client/mocha.opts new file mode 100644 index 000000000..907011807 --- /dev/null +++ b/js-packages/meep-auth-svc-client/mocha.opts @@ -0,0 +1 @@ +--timeout 10000 diff --git a/js-packages/meep-auth-svc-client/package.json b/js-packages/meep-auth-svc-client/package.json new file mode 100644 index 000000000..16d099ec3 --- /dev/null +++ b/js-packages/meep-auth-svc-client/package.json @@ -0,0 +1,22 @@ +{ + "name": "advant_edge_auth_service_rest_api", + "version": "1.0.0", + "description": "This_API_provides_microservice_API_authentication__authorization_services_pMicro_servicebr_meep_auth_httpsgithub_comInterDigitalIncAdvantEDGEtreemastergo_appsmeep_auth_pType__UsagebrPlatform_interface_used_by_ingress_to_authenticate__authorize_microservice_API_access_pDetailsbrAPI_details_available_at__your_AdvantEDGE_ip_addressapi_", + "license": "Apache 2.0", + "main": "src/index.js", + "scripts": { + "test": "mocha --recursive" + }, + "browser": { + "fs": false + }, + "dependencies": { + "superagent": "3.7.0", + "querystring": "0.2.0" + }, + "devDependencies": { + "mocha": "~2.3.4", + "sinon": "1.17.3", + "expect.js": "~0.3.1" + } +} diff --git a/js-packages/meep-auth-svc-client/src/ApiClient.js b/js-packages/meep-auth-svc-client/src/ApiClient.js new file mode 100644 index 000000000..383491e75 --- /dev/null +++ b/js-packages/meep-auth-svc-client/src/ApiClient.js @@ -0,0 +1,614 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * OpenAPI spec version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['superagent', 'querystring'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('superagent'), require('querystring')); + } else { + // Browser globals (root is window) + if (!root.AdvantEdgeAuthServiceRestApi) { + root.AdvantEdgeAuthServiceRestApi = {}; + } + root.AdvantEdgeAuthServiceRestApi.ApiClient = factory(root.superagent, root.querystring); + } +}(this, function(superagent, querystring) { + 'use strict'; + + /** + * @module ApiClient + * @version 1.0.0 + */ + + /** + * Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an + * application to use this class directly - the *Api and model classes provide the public API for the service. The + * contents of this file should be regarded as internal but are documented for completeness. + * @alias module:ApiClient + * @class + */ + var exports = function() { + /** + * The base URL against which to resolve every API call's (relative) path. + * @type {String} + * @default https://localhost/auth/v1 + */ + this.basePath = 'https://localhost/auth/v1'.replace(/\/+$/, ''); + + /** + * The authentication methods to be included for all API calls. + * @type {Array.} + */ + this.authentications = { + }; + /** + * The default HTTP headers to be included for all API calls. + * @type {Array.} + * @default {} + */ + this.defaultHeaders = {}; + + /** + * The default HTTP timeout for all API calls. + * @type {Number} + * @default 60000 + */ + this.timeout = 60000; + + /** + * If set to false an additional timestamp parameter is added to all API GET calls to + * prevent browser caching + * @type {Boolean} + * @default true + */ + this.cache = true; + + /** + * If set to true, the client will save the cookies from each server + * response, and return them in the next request. + * @default false + */ + this.enableCookies = false; + + /* + * Used to save and return cookies in a node.js (non-browser) setting, + * if this.enableCookies is set to true. + */ + if (typeof window === 'undefined') { + this.agent = new superagent.agent(); + } + + /* + * Allow user to override superagent agent + */ + this.requestAgent = null; + }; + + /** + * Returns a string representation for an actual parameter. + * @param param The actual parameter. + * @returns {String} The string representation of param. + */ + exports.prototype.paramToString = function(param) { + if (param == undefined || param == null) { + return ''; + } + if (param instanceof Date) { + return param.toISOString(); + } + return param.toString(); + }; + + /** + * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values. + * NOTE: query parameters are not handled here. + * @param {String} path The path to append to the base URL. + * @param {Object} pathParams The parameter values to append. + * @returns {String} The encoded path with parameter values substituted. + */ + exports.prototype.buildUrl = function(path, pathParams) { + if (!path.match(/^\//)) { + path = '/' + path; + } + var url = this.basePath + path; + var _this = this; + url = url.replace(/\{([\w-]+)\}/g, function(fullMatch, key) { + var value; + if (pathParams.hasOwnProperty(key)) { + value = _this.paramToString(pathParams[key]); + } else { + value = fullMatch; + } + return encodeURIComponent(value); + }); + return url; + }; + + /** + * Checks whether the given content type represents JSON.
    + * JSON content type examples:
    + *

      + *
    • application/json
    • + *
    • application/json; charset=UTF8
    • + *
    • APPLICATION/JSON
    • + *
    + * @param {String} contentType The MIME content type to check. + * @returns {Boolean} true if contentType represents JSON, otherwise false. + */ + exports.prototype.isJsonMime = function(contentType) { + return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i)); + }; + + /** + * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first. + * @param {Array.} contentTypes + * @returns {String} The chosen content type, preferring JSON. + */ + exports.prototype.jsonPreferredMime = function(contentTypes) { + for (var i = 0; i < contentTypes.length; i++) { + if (this.isJsonMime(contentTypes[i])) { + return contentTypes[i]; + } + } + return contentTypes[0]; + }; + + /** + * Checks whether the given parameter value represents file-like content. + * @param param The parameter to check. + * @returns {Boolean} true if param represents a file. + */ + exports.prototype.isFileParam = function(param) { + // fs.ReadStream in Node.js and Electron (but not in runtime like browserify) + if (typeof require === 'function') { + var fs; + try { + fs = require('fs'); + } catch (err) {} + if (fs && fs.ReadStream && param instanceof fs.ReadStream) { + return true; + } + } + // Buffer in Node.js + if (typeof Buffer === 'function' && param instanceof Buffer) { + return true; + } + // Blob in browser + if (typeof Blob === 'function' && param instanceof Blob) { + return true; + } + // File in browser (it seems File object is also instance of Blob, but keep this for safe) + if (typeof File === 'function' && param instanceof File) { + return true; + } + return false; + }; + + /** + * Normalizes parameter values: + *
      + *
    • remove nils
    • + *
    • keep files and arrays
    • + *
    • format to string with `paramToString` for other cases
    • + *
    + * @param {Object.} params The parameters as object properties. + * @returns {Object.} normalized parameters. + */ + exports.prototype.normalizeParams = function(params) { + var newParams = {}; + for (var key in params) { + if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) { + var value = params[key]; + if (this.isFileParam(value) || Array.isArray(value)) { + newParams[key] = value; + } else { + newParams[key] = this.paramToString(value); + } + } + } + return newParams; + }; + + /** + * Enumeration of collection format separator strategies. + * @enum {String} + * @readonly + */ + exports.CollectionFormatEnum = { + /** + * Comma-separated values. Value: csv + * @const + */ + CSV: ',', + /** + * Space-separated values. Value: ssv + * @const + */ + SSV: ' ', + /** + * Tab-separated values. Value: tsv + * @const + */ + TSV: '\t', + /** + * Pipe(|)-separated values. Value: pipes + * @const + */ + PIPES: '|', + /** + * Native array. Value: multi + * @const + */ + MULTI: 'multi' + }; + + /** + * Builds a string representation of an array-type actual parameter, according to the given collection format. + * @param {Array} param An array parameter. + * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy. + * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns + * param as is if collectionFormat is multi. + */ + exports.prototype.buildCollectionParam = function buildCollectionParam(param, collectionFormat) { + if (param == null) { + return null; + } + switch (collectionFormat) { + case 'csv': + return param.map(this.paramToString).join(','); + case 'ssv': + return param.map(this.paramToString).join(' '); + case 'tsv': + return param.map(this.paramToString).join('\t'); + case 'pipes': + return param.map(this.paramToString).join('|'); + case 'multi': + // return the array directly as SuperAgent will handle it as expected + return param.map(this.paramToString); + default: + throw new Error('Unknown collection format: ' + collectionFormat); + } + }; + + /** + * Applies authentication headers to the request. + * @param {Object} request The request object created by a superagent() call. + * @param {Array.} authNames An array of authentication method names. + */ + exports.prototype.applyAuthToRequest = function(request, authNames) { + var _this = this; + authNames.forEach(function(authName) { + var auth = _this.authentications[authName]; + switch (auth.type) { + case 'basic': + if (auth.username || auth.password) { + request.auth(auth.username || '', auth.password || ''); + } + break; + case 'apiKey': + if (auth.apiKey) { + var data = {}; + if (auth.apiKeyPrefix) { + data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey; + } else { + data[auth.name] = auth.apiKey; + } + if (auth['in'] === 'header') { + request.set(data); + } else { + request.query(data); + } + } + break; + case 'oauth2': + if (auth.accessToken) { + request.set({'Authorization': 'Bearer ' + auth.accessToken}); + } + break; + default: + throw new Error('Unknown authentication type: ' + auth.type); + } + }); + }; + + /** + * Deserializes an HTTP response body into a value of the specified type. + * @param {Object} response A SuperAgent response object. + * @param {(String|Array.|Object.|Function)} returnType The type to return. Pass a string for simple types + * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To + * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type: + * all properties on data will be converted to this type. + * @returns A value of the specified type. + */ + exports.prototype.deserialize = function deserialize(response, returnType) { + if (response == null || returnType == null || response.status == 204) { + return null; + } + // Rely on SuperAgent for parsing response body. + // See http://visionmedia.github.io/superagent/#parsing-response-bodies + var data = response.body; + if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) { + // SuperAgent does not always produce a body; use the unparsed response as a fallback + data = response.text; + } + return exports.convertToType(data, returnType); + }; + + /** + * Callback function to receive the result of the operation. + * @callback module:ApiClient~callApiCallback + * @param {String} error Error message, if any. + * @param data The data returned by the service call. + * @param {String} response The complete HTTP response. + */ + + /** + * Invokes the REST service using the supplied settings and parameters. + * @param {String} path The base URL to invoke. + * @param {String} httpMethod The HTTP method to use. + * @param {Object.} pathParams A map of path parameters and their values. + * @param {Object.} queryParams A map of query parameters and their values. + * @param {Object.} collectionQueryParams A map of collection query parameters and their values. + * @param {Object.} headerParams A map of header parameters and their values. + * @param {Object.} formParams A map of form parameters and their values. + * @param {Object} bodyParam The value to pass as the request body. + * @param {Array.} authNames An array of authentication type names. + * @param {Array.} contentTypes An array of request MIME types. + * @param {Array.} accepts An array of acceptable response MIME types. + * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the + * constructor for a complex type. + * @param {module:ApiClient~callApiCallback} callback The callback function. + * @returns {Object} The SuperAgent request object. + */ + exports.prototype.callApi = function callApi(path, httpMethod, pathParams, + queryParams, collectionQueryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts, + returnType, callback) { + + var _this = this; + var url = this.buildUrl(path, pathParams); + var request = superagent(httpMethod, url); + + // apply authentications + this.applyAuthToRequest(request, authNames); + + // set collection query parameters + for (var key in collectionQueryParams) { + if (collectionQueryParams.hasOwnProperty(key)) { + var param = collectionQueryParams[key]; + if (param.collectionFormat === 'csv') { + // SuperAgent normally percent-encodes all reserved characters in a query parameter. However, + // commas are used as delimiters for the 'csv' collectionFormat so they must not be encoded. We + // must therefore construct and encode 'csv' collection query parameters manually. + if (param.value != null) { + var value = param.value.map(this.paramToString).map(encodeURIComponent).join(','); + request.query(encodeURIComponent(key) + "=" + value); + } + } else { + // All other collection query parameters should be treated as ordinary query parameters. + queryParams[key] = this.buildCollectionParam(param.value, param.collectionFormat); + } + } + } + + // set query parameters + if (httpMethod.toUpperCase() === 'GET' && this.cache === false) { + queryParams['_'] = new Date().getTime(); + } + request.query(this.normalizeParams(queryParams)); + + // set header parameters + request.set(this.defaultHeaders).set(this.normalizeParams(headerParams)); + + + // set requestAgent if it is set by user + if (this.requestAgent) { + request.agent(this.requestAgent); + } + + // set request timeout + request.timeout(this.timeout); + + var contentType = this.jsonPreferredMime(contentTypes); + if (contentType) { + // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746) + if(contentType != 'multipart/form-data') { + request.type(contentType); + } + } else if (!request.header['Content-Type']) { + request.type('application/json'); + } + + if (contentType === 'application/x-www-form-urlencoded') { + request.send(querystring.stringify(this.normalizeParams(formParams))); + } else if (contentType == 'multipart/form-data') { + var _formParams = this.normalizeParams(formParams); + for (var key in _formParams) { + if (_formParams.hasOwnProperty(key)) { + if (this.isFileParam(_formParams[key])) { + // file field + request.attach(key, _formParams[key]); + } else { + request.field(key, _formParams[key]); + } + } + } + } else if (bodyParam) { + request.send(bodyParam); + } + + var accept = this.jsonPreferredMime(accepts); + if (accept) { + request.accept(accept); + } + + if (returnType === 'Blob') { + request.responseType('blob'); + } else if (returnType === 'String') { + request.responseType('string'); + } + + // Attach previously saved cookies, if enabled + if (this.enableCookies){ + if (typeof window === 'undefined') { + this.agent.attachCookies(request); + } + else { + request.withCredentials(); + } + } + + + request.end(function(error, response) { + if (callback) { + var data = null; + if (!error) { + try { + data = _this.deserialize(response, returnType); + if (_this.enableCookies && typeof window === 'undefined'){ + _this.agent.saveCookies(response); + } + } catch (err) { + error = err; + } + } + callback(error, data, response); + } + }); + + return request; + }; + + /** + * Parses a string representation of a date value. + * @param {String} str The date value as an ISO-8601 full-date or date-time string. + * @returns {Date} The parsed date object. + */ + exports.parseDate = function(str) { + // OpenAPI 2.0 & 3.0 specs state that: + // - date values are serialized as ISO-8601 full-date strings. + // - date-time values are serialized as ISO-8601 date-time strings, in which the timezone offset is mandatory. + return new Date(str); + }; + + /** + * Converts a value to the specified type. + * @param {(String|Object)} data The data to convert, as a string or object. + * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types + * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To + * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type: + * all properties on data will be converted to this type. + * @returns An instance of the specified type or null or undefined if data is null or undefined. + */ + exports.convertToType = function(data, type) { + if (data === null || data === undefined) + return data + + switch (type) { + case 'Boolean': + return Boolean(data); + case 'Integer': + return parseInt(data, 10); + case 'Number': + return parseFloat(data); + case 'String': + return String(data); + case 'Date': + return this.parseDate(String(data)); + case 'Blob': + return data; + default: + if (type === Object) { + // generic object, return directly + return data; + } else if (typeof type === 'function') { + // for model type like: User + return type.constructFromObject(data); + } else if (Array.isArray(type)) { + // for array type like: ['String'] + var itemType = type[0]; + return data.map(function(item) { + return exports.convertToType(item, itemType); + }); + } else if (typeof type === 'object') { + // for plain object type like: {'String': 'Integer'} + var keyType, valueType; + for (var k in type) { + if (type.hasOwnProperty(k)) { + keyType = k; + valueType = type[k]; + break; + } + } + var result = {}; + for (var k in data) { + if (data.hasOwnProperty(k)) { + var key = exports.convertToType(k, keyType); + var value = exports.convertToType(data[k], valueType); + result[key] = value; + } + } + return result; + } else { + // for unknown type, return the data directly + return data; + } + } + }; + + /** + * Constructs a new map or array model from REST data. + * @param data {Object|Array} The REST data. + * @param obj {Object|Array} The target object or array. + */ + exports.constructFromObject = function(data, obj, itemType) { + if (Array.isArray(data)) { + for (var i = 0; i < data.length; i++) { + if (data.hasOwnProperty(i)) + obj[i] = exports.convertToType(data[i], itemType); + } + } else { + for (var k in data) { + if (data.hasOwnProperty(k)) + obj[k] = exports.convertToType(data[k], itemType); + } + } + }; + + /** + * The default API client implementation. + * @type {module:ApiClient} + */ + exports.instance = new exports(); + + return exports; +})); diff --git a/js-packages/meep-platform-ctrl-client/src/api/UserAuthenticationApi.js b/js-packages/meep-auth-svc-client/src/api/AuthApi.js similarity index 68% rename from js-packages/meep-platform-ctrl-client/src/api/UserAuthenticationApi.js rename to js-packages/meep-auth-svc-client/src/api/AuthApi.js index f7b9d4364..57084b87e 100644 --- a/js-packages/meep-platform-ctrl-client/src/api/UserAuthenticationApi.js +++ b/js-packages/meep-auth-svc-client/src/api/AuthApi.js @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * AdvantEDGE Platform Controller REST API - * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * AdvantEDGE Auth Service REST API + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ * * OpenAPI spec version: 1.0.0 * Contact: AdvantEDGE@InterDigital.com @@ -37,23 +37,23 @@ module.exports = factory(require('../ApiClient'), require('../model/Sandbox')); } else { // Browser globals (root is window) - if (!root.AdvantEdgePlatformControllerRestApi) { - root.AdvantEdgePlatformControllerRestApi = {}; + if (!root.AdvantEdgeAuthServiceRestApi) { + root.AdvantEdgeAuthServiceRestApi = {}; } - root.AdvantEdgePlatformControllerRestApi.UserAuthenticationApi = factory(root.AdvantEdgePlatformControllerRestApi.ApiClient, root.AdvantEdgePlatformControllerRestApi.Sandbox); + root.AdvantEdgeAuthServiceRestApi.AuthApi = factory(root.AdvantEdgeAuthServiceRestApi.ApiClient, root.AdvantEdgeAuthServiceRestApi.Sandbox); } }(this, function(ApiClient, Sandbox) { 'use strict'; /** - * UserAuthentication service. - * @module api/UserAuthenticationApi + * Auth service. + * @module api/AuthApi * @version 1.0.0 */ /** - * Constructs a new UserAuthenticationApi. - * @alias module:api/UserAuthenticationApi + * Constructs a new AuthApi. + * @alias module:api/AuthApi * @class * @param {module:ApiClient} [apiClient] Optional API client implementation to use, * default to {@link module:ApiClient#instance} if unspecified. @@ -62,9 +62,55 @@ this.apiClient = apiClient || ApiClient.instance; + /** + * Callback function to receive the result of the authenticate operation. + * @callback module:api/AuthApi~authenticateCallback + * @param {String} error Error message, if any. + * @param data This operation does not return a value. + * @param {String} response The complete HTTP response. + */ + + /** + * Authenticate service request + * Authenticate & authorize microservice endpoint access + * @param {Object} opts Optional parameters + * @param {String} opts.svc Service requesting authentication + * @param {String} opts.sbox Sandbox name + * @param {module:api/AuthApi~authenticateCallback} callback The callback function, accepting three arguments: error, data, response + */ + this.authenticate = function(opts, callback) { + opts = opts || {}; + var postBody = null; + + + var pathParams = { + }; + var queryParams = { + 'svc': opts['svc'], + 'sbox': opts['sbox'], + }; + var collectionQueryParams = { + }; + var headerParams = { + }; + var formParams = { + }; + + var authNames = []; + var contentTypes = ['application/json']; + var accepts = ['application/json']; + var returnType = null; + + return this.apiClient.callApi( + '/authenticate', 'GET', + pathParams, queryParams, collectionQueryParams, headerParams, formParams, postBody, + authNames, contentTypes, accepts, returnType, callback + ); + } + /** * Callback function to receive the result of the authorize operation. - * @callback module:api/UserAuthenticationApi~authorizeCallback + * @callback module:api/AuthApi~authorizeCallback * @param {String} error Error message, if any. * @param data This operation does not return a value. * @param {String} response The complete HTTP response. @@ -76,7 +122,7 @@ * @param {Object} opts Optional parameters * @param {String} opts.code Temporary authorization code * @param {String} opts.state User-provided random state - * @param {module:api/UserAuthenticationApi~authorizeCallback} callback The callback function, accepting three arguments: error, data, response + * @param {module:api/AuthApi~authorizeCallback} callback The callback function, accepting three arguments: error, data, response */ this.authorize = function(opts, callback) { opts = opts || {}; @@ -109,8 +155,8 @@ } /** - * Callback function to receive the result of the loginOAuth operation. - * @callback module:api/UserAuthenticationApi~loginOAuthCallback + * Callback function to receive the result of the login operation. + * @callback module:api/AuthApi~loginCallback * @param {String} error Error message, if any. * @param data This operation does not return a value. * @param {String} response The complete HTTP response. @@ -121,9 +167,9 @@ * Start OAuth login procedure with provider * @param {Object} opts Optional parameters * @param {module:model/String} opts.provider Oauth provider - * @param {module:api/UserAuthenticationApi~loginOAuthCallback} callback The callback function, accepting three arguments: error, data, response + * @param {module:api/AuthApi~loginCallback} callback The callback function, accepting three arguments: error, data, response */ - this.loginOAuth = function(opts, callback) { + this.login = function(opts, callback) { opts = opts || {}; var postBody = null; @@ -154,7 +200,7 @@ /** * Callback function to receive the result of the loginUser operation. - * @callback module:api/UserAuthenticationApi~loginUserCallback + * @callback module:api/AuthApi~loginUserCallback * @param {String} error Error message, if any. * @param {module:model/Sandbox} data The data returned by the service call. * @param {String} response The complete HTTP response. @@ -166,7 +212,7 @@ * @param {Object} opts Optional parameters * @param {String} opts.username User Name * @param {String} opts.password User Password - * @param {module:api/UserAuthenticationApi~loginUserCallback} callback The callback function, accepting three arguments: error, data, response + * @param {module:api/AuthApi~loginUserCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/Sandbox} */ this.loginUser = function(opts, callback) { @@ -200,8 +246,8 @@ } /** - * Callback function to receive the result of the logoutUser operation. - * @callback module:api/UserAuthenticationApi~logoutUserCallback + * Callback function to receive the result of the logout operation. + * @callback module:api/AuthApi~logoutCallback * @param {String} error Error message, if any. * @param data This operation does not return a value. * @param {String} response The complete HTTP response. @@ -210,9 +256,9 @@ /** * Terminate a session * Terminate a session - * @param {module:api/UserAuthenticationApi~logoutUserCallback} callback The callback function, accepting three arguments: error, data, response + * @param {module:api/AuthApi~logoutCallback} callback The callback function, accepting three arguments: error, data, response */ - this.logoutUser = function(callback) { + this.logout = function(callback) { var postBody = null; @@ -241,7 +287,7 @@ /** * Callback function to receive the result of the triggerWatchdog operation. - * @callback module:api/UserAuthenticationApi~triggerWatchdogCallback + * @callback module:api/AuthApi~triggerWatchdogCallback * @param {String} error Error message, if any. * @param data This operation does not return a value. * @param {String} response The complete HTTP response. @@ -250,7 +296,7 @@ /** * Send heartbeat to watchdog * Send heartbeat to watchdog to keep session alive - * @param {module:api/UserAuthenticationApi~triggerWatchdogCallback} callback The callback function, accepting three arguments: error, data, response + * @param {module:api/AuthApi~triggerWatchdogCallback} callback The callback function, accepting three arguments: error, data, response */ this.triggerWatchdog = function(callback) { var postBody = null; diff --git a/js-packages/meep-auth-svc-client/src/index.js b/js-packages/meep-auth-svc-client/src/index.js new file mode 100644 index 000000000..d7ecd07f4 --- /dev/null +++ b/js-packages/meep-auth-svc-client/src/index.js @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * OpenAPI spec version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient', 'model/Sandbox', 'api/AuthApi'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('./ApiClient'), require('./model/Sandbox'), require('./api/AuthApi')); + } +}(function(ApiClient, Sandbox, AuthApi) { + 'use strict'; + + /** + * This_API_provides_microservice_API_authentication__authorization_services_pMicro_servicebr_meep_auth_httpsgithub_comInterDigitalIncAdvantEDGEtreemastergo_appsmeep_auth_pType__UsagebrPlatform_interface_used_by_ingress_to_authenticate__authorize_microservice_API_access_pDetailsbrAPI_details_available_at__your_AdvantEDGE_ip_addressapi_.
    + * The index module provides access to constructors for all the classes which comprise the public API. + *

    + * An AMD (recommended!) or CommonJS application will generally do something equivalent to the following: + *

    +   * var AdvantEdgeAuthServiceRestApi = require('index'); // See note below*.
    +   * var xxxSvc = new AdvantEdgeAuthServiceRestApi.XxxApi(); // Allocate the API class we're going to use.
    +   * var yyyModel = new AdvantEdgeAuthServiceRestApi.Yyy(); // Construct a model instance.
    +   * yyyModel.someProperty = 'someValue';
    +   * ...
    +   * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
    +   * ...
    +   * 
    + * *NOTE: For a top-level AMD script, use require(['index'], function(){...}) + * and put the application logic within the callback function. + *

    + *

    + * A non-AMD browser application (discouraged) might do something like this: + *

    +   * var xxxSvc = new AdvantEdgeAuthServiceRestApi.XxxApi(); // Allocate the API class we're going to use.
    +   * var yyy = new AdvantEdgeAuthServiceRestApi.Yyy(); // Construct a model instance.
    +   * yyyModel.someProperty = 'someValue';
    +   * ...
    +   * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
    +   * ...
    +   * 
    + *

    + * @module index + * @version 1.0.0 + */ + var exports = { + /** + * The ApiClient constructor. + * @property {module:ApiClient} + */ + ApiClient: ApiClient, + /** + * The Sandbox model constructor. + * @property {module:model/Sandbox} + */ + Sandbox: Sandbox, + /** + * The AuthApi service constructor. + * @property {module:api/AuthApi} + */ + AuthApi: AuthApi + }; + + return exports; +})); diff --git a/js-packages/meep-auth-svc-client/src/model/Sandbox.js b/js-packages/meep-auth-svc-client/src/model/Sandbox.js new file mode 100644 index 000000000..43827fad1 --- /dev/null +++ b/js-packages/meep-auth-svc-client/src/model/Sandbox.js @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * OpenAPI spec version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['ApiClient'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(require('../ApiClient')); + } else { + // Browser globals (root is window) + if (!root.AdvantEdgeAuthServiceRestApi) { + root.AdvantEdgeAuthServiceRestApi = {}; + } + root.AdvantEdgeAuthServiceRestApi.Sandbox = factory(root.AdvantEdgeAuthServiceRestApi.ApiClient); + } +}(this, function(ApiClient) { + 'use strict'; + + /** + * The Sandbox model module. + * @module model/Sandbox + * @version 1.0.0 + */ + + /** + * Constructs a new Sandbox. + * Sandbox object + * @alias module:model/Sandbox + * @class + */ + var exports = function() { + }; + + /** + * Constructs a Sandbox from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/Sandbox} obj Optional instance to populate. + * @return {module:model/Sandbox} The populated Sandbox instance. + */ + exports.constructFromObject = function(data, obj) { + if (data) { + obj = obj || new exports(); + if (data.hasOwnProperty('name')) + obj.name = ApiClient.convertToType(data['name'], 'String'); + } + return obj; + } + + /** + * Sandbox name + * @member {String} name + */ + exports.prototype.name = undefined; + + return exports; + +})); diff --git a/js-packages/meep-platform-ctrl-client/test/api/UserAuthenticationApi.spec.js b/js-packages/meep-auth-svc-client/test/api/AuthApi.spec.js similarity index 69% rename from js-packages/meep-platform-ctrl-client/test/api/UserAuthenticationApi.spec.js rename to js-packages/meep-auth-svc-client/test/api/AuthApi.spec.js index 303e8b3d4..199dfe464 100644 --- a/js-packages/meep-platform-ctrl-client/test/api/UserAuthenticationApi.spec.js +++ b/js-packages/meep-auth-svc-client/test/api/AuthApi.spec.js @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * AdvantEDGE Platform Controller REST API - * This API is the main Platform Controller API for scenario configuration & sandbox management

    **Micro-service**
    [meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

    **Type & Usage**
    Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * AdvantEDGE Auth Service REST API + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ * * OpenAPI spec version: 1.0.0 * Contact: AdvantEDGE@InterDigital.com @@ -37,19 +37,40 @@ factory(require('expect.js'), require('../../src/index')); } else { // Browser globals (root is window) - factory(root.expect, root.AdvantEdgePlatformControllerRestApi); + factory(root.expect, root.AdvantEdgeAuthServiceRestApi); } -}(this, function(expect, AdvantEdgePlatformControllerRestApi) { +}(this, function(expect, AdvantEdgeAuthServiceRestApi) { 'use strict'; var instance; beforeEach(function() { - instance = new AdvantEdgePlatformControllerRestApi.UserAuthenticationApi(); + instance = new AdvantEdgeAuthServiceRestApi.AuthApi(); }); describe('(package)', function() { - describe('UserAuthenticationApi', function() { + describe('AuthApi', function() { + describe('authenticate', function() { + it('should call authenticate successfully', function(done) { + // TODO: uncomment, update parameter values for authenticate call + /* + var opts = {}; + opts.svc = "svc_example"; + opts.sbox = "sbox_example"; + + instance.authenticate(opts, function(error, data, response) { + if (error) { + done(error); + return; + } + + done(); + }); + */ + // TODO: uncomment and complete method invocation above, then delete this line and the next: + done(); + }); + }); describe('authorize', function() { it('should call authorize successfully', function(done) { // TODO: uncomment, update parameter values for authorize call @@ -71,14 +92,14 @@ done(); }); }); - describe('loginOAuth', function() { - it('should call loginOAuth successfully', function(done) { - // TODO: uncomment, update parameter values for loginOAuth call + describe('login', function() { + it('should call login successfully', function(done) { + // TODO: uncomment, update parameter values for login call /* var opts = {}; opts.provider = "provider_example"; - instance.loginOAuth(opts, function(error, data, response) { + instance.login(opts, function(error, data, response) { if (error) { done(error); return; @@ -105,7 +126,7 @@ return; } // TODO: update response assertions - expect(data).to.be.a(AdvantEdgePlatformControllerRestApi.Sandbox); + expect(data).to.be.a(AdvantEdgeAuthServiceRestApi.Sandbox); expect(data.name).to.be.a('string'); expect(data.name).to.be(""); @@ -116,12 +137,12 @@ done(); }); }); - describe('logoutUser', function() { - it('should call logoutUser successfully', function(done) { - // TODO: uncomment logoutUser call + describe('logout', function() { + it('should call logout successfully', function(done) { + // TODO: uncomment logout call /* - instance.logoutUser(function(error, data, response) { + instance.logout(function(error, data, response) { if (error) { done(error); return; diff --git a/js-packages/meep-auth-svc-client/test/assert-equals.js b/js-packages/meep-auth-svc-client/test/assert-equals.js new file mode 100644 index 000000000..b95cd5f03 --- /dev/null +++ b/js-packages/meep-auth-svc-client/test/assert-equals.js @@ -0,0 +1,81 @@ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.assertEquals = factory(); + } +}(this, function() { + 'use strict'; + + var assertEquals = function(expected, actual, ptr) { + if (!ptr) + ptr = ""; + if (actual === expected) + return; + if (expected instanceof Date || actual instanceof Date) { + expected = toISODateString(expected); + actual = toISODateString(actual); + if (actual !== expected) + fail(expected, actual, ptr, "date value incorrect;"); + } + if (!expected || !actual || typeof expected != 'object' && typeof actual != 'object') { + if (typeof actual != typeof expected) + fail(typeof expected, typeof actual, ptr, "value type incorrect;"); + if (actual != expected) + fail(expected, actual, ptr, "value incorrect;"); + } + return checkObject(expected, actual, ptr); + } + + function toISODateString(value) { + if (value instanceof Date) { + // JavaScript's ISO string contains a milliseconds component that must be stripped out. + value = value.toISOString().replace('.000', ''); + } + return value; + } + + function checkObject(expected, actual, ptr) { + if (undefOrNull(expected) || undefOrNull(actual)) + fail(expected, actual, ptr, "missing value;"); + if (typeof expected !== typeof actual) + fail(typeof expected, typeof actual, ptr, "wrong type;"); + if (expected.prototype !== actual.prototype) + fail(expected.prototype, actual.prototype, ptr, "wrong prototype;"); + try { + var expectedKeys = Object.keys(expected); + var actualKeys = Object.keys(actual); + } catch (e) { + fail(expectedKeys, actualKeys, ptr, "wrong keys;"); + } + if (actualKeys.length != expectedKeys.length) + fail(expectedKeys.length, actualKeys.length, ptr, "key count incorrect;"); + expectedKeys.sort(); + actualKeys.sort(); + for (var i = 0; i < expectedKeys.length; i++) { + if (actualKeys[i] != expectedKeys[i]) + fail(expectedKeys, actualKeys, ptr, "wrong keys;"); + } + for (i = 0; i < expectedKeys.length; i++) { + var key = expectedKeys[i]; + assertEquals(expected[key], actual[key], ptr + '/' + key); + } + } + + function undefOrNull(v) { + return v === undefined || v === null; + } + + function fail(expected, actual, ptr, msg) { + var text = ptr + ' ' + msg + " expected: " + expected + ", actual: " + actual; + console.log(text); + throw new Error(text); + } + + return assertEquals; +})); diff --git a/js-packages/meep-auth-svc-client/test/model/Sandbox.spec.js b/js-packages/meep-auth-svc-client/test/model/Sandbox.spec.js new file mode 100644 index 000000000..5626fda40 --- /dev/null +++ b/js-packages/meep-auth-svc-client/test/model/Sandbox.spec.js @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2020 InterDigital Communications, Inc + * + * Licensed under the Apache License, Version 2.0 (the \"License\"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an \"AS IS\" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * AdvantEDGE Auth Service REST API + * This API provides microservice API authentication & authorization services

    **Micro-service**
    [meep-auth](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-auth)

    **Type & Usage**
    Platform interface used by ingress to authenticate & authorize microservice API access

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * + * OpenAPI spec version: 1.0.0 + * Contact: AdvantEDGE@InterDigital.com + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * + * Swagger Codegen version: 2.4.9 + * + * Do not edit the class manually. + * + */ + +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. + define(['expect.js', '../../src/index'], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like environments that support module.exports, like Node. + factory(require('expect.js'), require('../../src/index')); + } else { + // Browser globals (root is window) + factory(root.expect, root.AdvantEdgeAuthServiceRestApi); + } +}(this, function(expect, AdvantEdgeAuthServiceRestApi) { + 'use strict'; + + var instance; + + describe('(package)', function() { + describe('Sandbox', function() { + beforeEach(function() { + instance = new AdvantEdgeAuthServiceRestApi.Sandbox(); + }); + + it('should create an instance of Sandbox', function() { + // TODO: update the code to test Sandbox + expect(instance).to.be.a(AdvantEdgeAuthServiceRestApi.Sandbox); + }); + + it('should have the property name (base name: "name")', function() { + // TODO: update the code to test the property name + expect(instance).to.have.property('name'); + // expect(instance.name).to.be(expectedValueLiteral); + }); + + }); + }); + +})); diff --git a/js-packages/meep-platform-ctrl-client/README.md b/js-packages/meep-platform-ctrl-client/README.md index e58a00de0..6785b1d55 100644 --- a/js-packages/meep-platform-ctrl-client/README.md +++ b/js-packages/meep-platform-ctrl-client/README.md @@ -129,11 +129,6 @@ Class | Method | HTTP request | Description *AdvantEdgePlatformControllerRestApi.ScenarioConfigurationApi* | [**getScenario**](docs/ScenarioConfigurationApi.md#getScenario) | **GET** /scenarios/{name} | Get a specific scenario *AdvantEdgePlatformControllerRestApi.ScenarioConfigurationApi* | [**getScenarioList**](docs/ScenarioConfigurationApi.md#getScenarioList) | **GET** /scenarios | Get all scenarios *AdvantEdgePlatformControllerRestApi.ScenarioConfigurationApi* | [**setScenario**](docs/ScenarioConfigurationApi.md#setScenario) | **PUT** /scenarios/{name} | Update a scenario -*AdvantEdgePlatformControllerRestApi.UserAuthenticationApi* | [**authorize**](docs/UserAuthenticationApi.md#authorize) | **GET** /authorize | OAuth authorization response endpoint -*AdvantEdgePlatformControllerRestApi.UserAuthenticationApi* | [**loginOAuth**](docs/UserAuthenticationApi.md#loginOAuth) | **GET** /login | Initiate OAuth login procedure -*AdvantEdgePlatformControllerRestApi.UserAuthenticationApi* | [**loginUser**](docs/UserAuthenticationApi.md#loginUser) | **POST** /login | Start a session -*AdvantEdgePlatformControllerRestApi.UserAuthenticationApi* | [**logoutUser**](docs/UserAuthenticationApi.md#logoutUser) | **GET** /logout | Terminate a session -*AdvantEdgePlatformControllerRestApi.UserAuthenticationApi* | [**triggerWatchdog**](docs/UserAuthenticationApi.md#triggerWatchdog) | **POST** /watchdog | Send heartbeat to watchdog ## Documentation for Models diff --git a/js-packages/meep-platform-ctrl-client/src/index.js b/js-packages/meep-platform-ctrl-client/src/index.js index 644acfe85..90c262d53 100644 --- a/js-packages/meep-platform-ctrl-client/src/index.js +++ b/js-packages/meep-platform-ctrl-client/src/index.js @@ -31,12 +31,12 @@ (function(factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['ApiClient', 'model/CellularDomainConfig', 'model/CellularPoaConfig', 'model/CpuConfig', 'model/Deployment', 'model/Domain', 'model/EgressService', 'model/ExternalConfig', 'model/GeoData', 'model/GpuConfig', 'model/IngressService', 'model/LineString', 'model/MemoryConfig', 'model/NetworkCharacteristics', 'model/NetworkLocation', 'model/PhysicalLocation', 'model/Poa4GConfig', 'model/Poa5GConfig', 'model/PoaWifiConfig', 'model/Point', 'model/Process', 'model/Sandbox', 'model/SandboxConfig', 'model/SandboxList', 'model/Scenario', 'model/ScenarioConfig', 'model/ScenarioList', 'model/ServiceConfig', 'model/ServicePort', 'model/Zone', 'api/SandboxControlApi', 'api/ScenarioConfigurationApi', 'api/UserAuthenticationApi'], factory); + define(['ApiClient', 'model/CellularDomainConfig', 'model/CellularPoaConfig', 'model/CpuConfig', 'model/Deployment', 'model/Domain', 'model/EgressService', 'model/ExternalConfig', 'model/GeoData', 'model/GpuConfig', 'model/IngressService', 'model/LineString', 'model/MemoryConfig', 'model/NetworkCharacteristics', 'model/NetworkLocation', 'model/PhysicalLocation', 'model/Poa4GConfig', 'model/Poa5GConfig', 'model/PoaWifiConfig', 'model/Point', 'model/Process', 'model/Sandbox', 'model/SandboxConfig', 'model/SandboxList', 'model/Scenario', 'model/ScenarioConfig', 'model/ScenarioList', 'model/ServiceConfig', 'model/ServicePort', 'model/Zone', 'api/SandboxControlApi', 'api/ScenarioConfigurationApi'], factory); } else if (typeof module === 'object' && module.exports) { // CommonJS-like environments that support module.exports, like Node. - module.exports = factory(require('./ApiClient'), require('./model/CellularDomainConfig'), require('./model/CellularPoaConfig'), require('./model/CpuConfig'), require('./model/Deployment'), require('./model/Domain'), require('./model/EgressService'), require('./model/ExternalConfig'), require('./model/GeoData'), require('./model/GpuConfig'), require('./model/IngressService'), require('./model/LineString'), require('./model/MemoryConfig'), require('./model/NetworkCharacteristics'), require('./model/NetworkLocation'), require('./model/PhysicalLocation'), require('./model/Poa4GConfig'), require('./model/Poa5GConfig'), require('./model/PoaWifiConfig'), require('./model/Point'), require('./model/Process'), require('./model/Sandbox'), require('./model/SandboxConfig'), require('./model/SandboxList'), require('./model/Scenario'), require('./model/ScenarioConfig'), require('./model/ScenarioList'), require('./model/ServiceConfig'), require('./model/ServicePort'), require('./model/Zone'), require('./api/SandboxControlApi'), require('./api/ScenarioConfigurationApi'), require('./api/UserAuthenticationApi')); + module.exports = factory(require('./ApiClient'), require('./model/CellularDomainConfig'), require('./model/CellularPoaConfig'), require('./model/CpuConfig'), require('./model/Deployment'), require('./model/Domain'), require('./model/EgressService'), require('./model/ExternalConfig'), require('./model/GeoData'), require('./model/GpuConfig'), require('./model/IngressService'), require('./model/LineString'), require('./model/MemoryConfig'), require('./model/NetworkCharacteristics'), require('./model/NetworkLocation'), require('./model/PhysicalLocation'), require('./model/Poa4GConfig'), require('./model/Poa5GConfig'), require('./model/PoaWifiConfig'), require('./model/Point'), require('./model/Process'), require('./model/Sandbox'), require('./model/SandboxConfig'), require('./model/SandboxList'), require('./model/Scenario'), require('./model/ScenarioConfig'), require('./model/ScenarioList'), require('./model/ServiceConfig'), require('./model/ServicePort'), require('./model/Zone'), require('./api/SandboxControlApi'), require('./api/ScenarioConfigurationApi')); } -}(function(ApiClient, CellularDomainConfig, CellularPoaConfig, CpuConfig, Deployment, Domain, EgressService, ExternalConfig, GeoData, GpuConfig, IngressService, LineString, MemoryConfig, NetworkCharacteristics, NetworkLocation, PhysicalLocation, Poa4GConfig, Poa5GConfig, PoaWifiConfig, Point, Process, Sandbox, SandboxConfig, SandboxList, Scenario, ScenarioConfig, ScenarioList, ServiceConfig, ServicePort, Zone, SandboxControlApi, ScenarioConfigurationApi, UserAuthenticationApi) { +}(function(ApiClient, CellularDomainConfig, CellularPoaConfig, CpuConfig, Deployment, Domain, EgressService, ExternalConfig, GeoData, GpuConfig, IngressService, LineString, MemoryConfig, NetworkCharacteristics, NetworkLocation, PhysicalLocation, Poa4GConfig, Poa5GConfig, PoaWifiConfig, Point, Process, Sandbox, SandboxConfig, SandboxList, Scenario, ScenarioConfig, ScenarioList, ServiceConfig, ServicePort, Zone, SandboxControlApi, ScenarioConfigurationApi) { 'use strict'; /** @@ -230,12 +230,7 @@ * The ScenarioConfigurationApi service constructor. * @property {module:api/ScenarioConfigurationApi} */ - ScenarioConfigurationApi: ScenarioConfigurationApi, - /** - * The UserAuthenticationApi service constructor. - * @property {module:api/UserAuthenticationApi} - */ - UserAuthenticationApi: UserAuthenticationApi + ScenarioConfigurationApi: ScenarioConfigurationApi }; return exports; -- GitLab From bad18cd8a560f0ca63896eff6f61e5b0b25973c4 Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Tue, 19 Jan 2021 21:44:48 -0500 Subject: [PATCH 025/194] switched endpoint authorization from a distibuted solution to a centralized implementation in auth service --- charts/grafana/values.yaml | 3 +- charts/meep-auth-svc/values.yaml | 10 +- charts/meep-gis-engine/values-template.yaml | 8 +- charts/meep-loc-serv/values-template.yaml | 8 +- .../meep-metrics-engine/values-template.yaml | 8 +- charts/meep-mg-manager/values-template.yaml | 8 +- charts/meep-mon-engine/values.yaml | 6 +- charts/meep-platform-ctrl/values.yaml | 8 +- charts/meep-rnis/values-template.yaml | 8 +- charts/meep-sandbox-ctrl/values-template.yaml | 8 +- charts/meep-wais/values-template.yaml | 8 +- config/permissions.yaml | 1232 ++++++++--------- go-apps/meep-auth-svc/server/auth-svc.go | 351 +++-- go-apps/meep-gis-engine/go.mod | 2 - go-apps/meep-gis-engine/go.sum | 6 - go-apps/meep-gis-engine/server/gis-engine.go | 10 - go-apps/meep-gis-engine/server/routers.go | 1 - go-apps/meep-loc-serv/go.mod | 2 - go-apps/meep-loc-serv/go.sum | 19 - go-apps/meep-loc-serv/server/loc-serv.go | 11 - go-apps/meep-loc-serv/server/routers.go | 1 - go-apps/meep-metrics-engine/go.mod | 2 - go-apps/meep-metrics-engine/go.sum | 5 - go-apps/meep-metrics-engine/server/routers.go | 1 - .../server/v2/metrics-engine.go | 10 - go-apps/meep-mg-manager/go.mod | 2 - go-apps/meep-mg-manager/go.sum | 8 - go-apps/meep-mg-manager/server/mg-manager.go | 10 - go-apps/meep-mg-manager/server/routers.go | 1 - go-apps/meep-mon-engine/go.mod | 2 - go-apps/meep-mon-engine/go.sum | 6 - go-apps/meep-mon-engine/server/mon-engine.go | 10 - go-apps/meep-mon-engine/server/routers.go | 1 - go-apps/meep-platform-ctrl/go.mod | 4 - go-apps/meep-platform-ctrl/go.sum | 27 - .../server/platform-ctrl.go | 10 - go-apps/meep-platform-ctrl/server/routers.go | 5 - go-apps/meep-rnis/go.mod | 2 - go-apps/meep-rnis/go.sum | 10 - go-apps/meep-rnis/server/rnis.go | 11 - go-apps/meep-rnis/server/routers.go | 1 - go-apps/meep-sandbox-ctrl/go.mod | 2 - go-apps/meep-sandbox-ctrl/go.sum | 8 - go-apps/meep-sandbox-ctrl/server/routers.go | 3 - .../meep-sandbox-ctrl/server/sandbox-ctrl.go | 10 - go-apps/meep-wais/go.mod | 2 - go-apps/meep-wais/go.sum | 11 - go-apps/meep-wais/server/routers.go | 1 - go-apps/meep-wais/server/wais.go | 11 - 49 files changed, 837 insertions(+), 1057 deletions(-) diff --git a/charts/grafana/values.yaml b/charts/grafana/values.yaml index 4807d124b..684cb30ad 100755 --- a/charts/grafana/values.yaml +++ b/charts/grafana/values.yaml @@ -123,9 +123,8 @@ ingress: enabled: true annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 - nginx.ingress.kubernetes.io/auth-url: https://10.190.114.150/auth/v1/authenticate?svc=grafana&sbox= + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=grafana kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" labels: {} path: /grafana(/|$)(.*) hosts: diff --git a/charts/meep-auth-svc/values.yaml b/charts/meep-auth-svc/values.yaml index 787ae1f94..0dacf7f2b 100644 --- a/charts/meep-auth-svc/values.yaml +++ b/charts/meep-auth-svc/values.yaml @@ -57,23 +57,15 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: - /auth annotations: kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 - # nginx.ingress.kubernetes.io/configuration-snippet: | - # rewrite ^(/api)$ $1/ redirect; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local + codecov: enabled: false diff --git a/charts/meep-gis-engine/values-template.yaml b/charts/meep-gis-engine/values-template.yaml index a37c4f259..fe8fdc2a2 100644 --- a/charts/meep-gis-engine/values-template.yaml +++ b/charts/meep-gis-engine/values-template.yaml @@ -25,7 +25,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -33,16 +32,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-gis-engine&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/gis(/|$)(.*)$ /gis/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/charts/meep-loc-serv/values-template.yaml b/charts/meep-loc-serv/values-template.yaml index b78f345fa..91fabe453 100644 --- a/charts/meep-loc-serv/values-template.yaml +++ b/charts/meep-loc-serv/values-template.yaml @@ -26,7 +26,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -34,16 +33,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-loc-serv&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/location(/|$)(.*)$ /location/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/charts/meep-metrics-engine/values-template.yaml b/charts/meep-metrics-engine/values-template.yaml index a90bb3598..4653e0c5a 100644 --- a/charts/meep-metrics-engine/values-template.yaml +++ b/charts/meep-metrics-engine/values-template.yaml @@ -26,7 +26,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -34,16 +33,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-metrics-engine&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/metrics(/|$)(.*)$ /metrics/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/charts/meep-mg-manager/values-template.yaml b/charts/meep-mg-manager/values-template.yaml index 7e5740f9d..0043bc1af 100644 --- a/charts/meep-mg-manager/values-template.yaml +++ b/charts/meep-mg-manager/values-template.yaml @@ -33,7 +33,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -41,16 +40,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-mg-manager&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/mgm(/|$)(.*)$ /mgm/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/charts/meep-mon-engine/values.yaml b/charts/meep-mon-engine/values.yaml index 5c13f08e0..6b6bdf353 100644 --- a/charts/meep-mon-engine/values.yaml +++ b/charts/meep-mon-engine/values.yaml @@ -37,17 +37,13 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: - /mon-engine annotations: kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 - # nginx.ingress.kubernetes.io/configuration-snippet: | - # rewrite ^(/api)$ $1/ redirect; + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-mon-engine codecov: enabled: false diff --git a/charts/meep-platform-ctrl/values.yaml b/charts/meep-platform-ctrl/values.yaml index 32476e68e..bd0820819 100644 --- a/charts/meep-platform-ctrl/values.yaml +++ b/charts/meep-platform-ctrl/values.yaml @@ -35,7 +35,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -43,18 +42,13 @@ ingress: - /platform-ctrl annotations: kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-platform-ctrl nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/api$ $scheme://$http_host/api/ permanent; rewrite ^/alt$ $scheme://$http_host/alt/ permanent; rewrite ^/alt/api$ $scheme://$http_host/alt/api/ permanent; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/charts/meep-rnis/values-template.yaml b/charts/meep-rnis/values-template.yaml index fb4731355..174aa4896 100644 --- a/charts/meep-rnis/values-template.yaml +++ b/charts/meep-rnis/values-template.yaml @@ -26,7 +26,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -34,16 +33,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-rnis&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/rni(/|$)(.*)$ /rni/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/charts/meep-sandbox-ctrl/values-template.yaml b/charts/meep-sandbox-ctrl/values-template.yaml index d6f63721c..510fca295 100644 --- a/charts/meep-sandbox-ctrl/values-template.yaml +++ b/charts/meep-sandbox-ctrl/values-template.yaml @@ -35,7 +35,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -45,8 +44,7 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-sandbox-ctrl&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/api$ $scheme://$http_host/{{ .SandboxName }}/api/ permanent; rewrite ^/{{ .SandboxName }}/alt/api$ $scheme://$http_host/{{ .SandboxName }}/alt/api/ permanent; @@ -55,10 +53,6 @@ ingress: rewrite ^/{{ .SandboxName }}/sandbox-ctrl(/|$)(.*)$ /sandbox-ctrl/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local user: swagger: diff --git a/charts/meep-wais/values-template.yaml b/charts/meep-wais/values-template.yaml index c16fea81e..8a950a82e 100644 --- a/charts/meep-wais/values-template.yaml +++ b/charts/meep-wais/values-template.yaml @@ -26,7 +26,6 @@ service: ingress: enabled: true - # Used to create an Ingress record. hosts: - name: '' paths: @@ -34,16 +33,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/rewrite-target: /$2 + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-wais&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/wai(/|$)(.*)$ /wai/$2 break; labels: {} tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local codecov: enabled: false diff --git a/config/permissions.yaml b/config/permissions.yaml index 9c1b0675c..0ef0ece6e 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -12,689 +12,563 @@ # See the License for the specific language governing permissions and # limitations under the License. +#------------------------------------------------------------------------------ +# NOTES: +# - Fileserver names must be unique for all fileservers +# - Service endpoint names must be unique within a service +# - 'mode' is the access authorization mode +# -> allow: grant access +# -> block: deny access +# -> verify: obtain session role & verify role-specific access permissions +# - 'roles' is a map of role permissions +# -> allow: grant access +# -> block: deny access +# - Default access mode & role permissions are used when service-specific +# values are not provided +#------------------------------------------------------------------------------ -# Service API & File Server Access Permissions -# -# Each service provides route-specific access authorization mode & role permissions: -# - Route name uniquely identifies http router paths -# -> NOTE: route names are case-insensitive -# - 'mode' is the access authorization mode -# -> allow: grant access -# -> block: deny access -# -> verify: obtain session role & verify role-specific access permissions -# - 'roles' is a map of role permissions -# -> allow: grant access -# -> block: deny access +#------------------------------------------------------------------------------ +# DEFAULT PERMISSIONS: +# Default access mode & permissions for File Server & Service API routes. # -# Default access mode & role permissions are used when service-specific -# values are not provided. -# -services: +# FORMAT: +# mode: 'verify' # access authorization mode: allow|block|verify +# roles: # role permissions: allow|block +# admin: 'allow' +# user: 'block' +#------------------------------------------------------------------------------ +default: + mode: 'block' +#------------------------------------------------------------------------------ +# FILESERVER PERMISSIONS +# File Server access permissions. +# +# FORMAT: +# - name: 'fs-name' # fileserver name +# path: '/path/to/fs' # fileserver path +# sbox: true|false # sandbox deployment +# mode: 'allow|block|verify' # access authorization mode +# roles: # role-specific permissions +# admin: 'allow|block' +# user: 'allow|block' +# +# !!! IMPORTANT NOTE !!! +# Fileserver route matching is performed in the order defined below. +# You must place more specific routes first. +#------------------------------------------------------------------------------ +fileservers: + #------------------------------ + # Grafana (3rd Party) + #------------------------------ + - name: 'grafana' + path: '/grafana/' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # Swagger UI + #------------------------------ + - name: 'meep-swagger-ui' + path: '/api/' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # Alternate Swagger UI + #------------------------------ + - name: 'meep-alt-swagger-ui' + path: '/alt/api/' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # Alternate Frontend + #------------------------------ + - name: 'meep-alt-frontend' + path: '/alt/' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' #------------------------------ - # Default + # Sandbox Swagger UI (Sbox) #------------------------------ - # Default access mode & permissions for File Server & API routes - default: - # access authorization mode: allow|block|verify + - name: 'meep-sbox-swagger-ui' + path: '/api/' + sbox: true + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + #------------------------------ + # Sandbox Alternate Swagger UI (Sbox) + #------------------------------ + - name: 'meep-alt-sbox-swagger-ui' + path: '/alt/api/' + sbox: true + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # Frontend (Default) + #------------------------------ + - name: 'meep-frontend' + path: '/' mode: 'allow' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - - # #------------------------------ - # # GIS Engine - # #------------------------------ - # meep-gis-engine: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # GetAutomationState: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # GetAutomationStateByName: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # SetAutomationStateByName: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # DeleteGeoDataByName: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetAssetData: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # GetGeoDataByName: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # UpdateGeoDataByName: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - - # #------------------------------ - # # Location Service - # #------------------------------ - # meep-loc-serv: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # ApByIdGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ApGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # AreaCircleSubDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # AreaCircleSubGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # AreaCircleSubListGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # AreaCircleSubPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # AreaCircleSubPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DistanceGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DistanceSubDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DistanceSubGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DistanceSubListGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DistanceSubPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DistanceSubPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # PeriodicSubDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # PeriodicSubGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # PeriodicSubListGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # PeriodicSubPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # PeriodicSubPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # UserTrackingSubDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # UserTrackingSubGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # UserTrackingSubListGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # UserTrackingSubPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # UserTrackingSubPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # UsersGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonalTrafficSubDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonalTrafficSubGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonalTrafficSubListGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonalTrafficSubPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonalTrafficSubPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZoneStatusSubDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZoneStatusSubGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZoneStatusSubListGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZoneStatusSubPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZoneStatusSubPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonesGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # ZonesGetById: - # # access authorization mode: allow|block|verify - # mode: 'allow' - - # #------------------------------ - # # Metrics Engine - # #------------------------------ - # meep-metrics-engine: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # IndexV2: - # # access authorization mode: allow|block|verify - # mode: 'block' - # PostEventQuery: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # PostHttpQuery: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # PostNetworkQuery: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # CreateEventSubscription: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # CreateNetworkSubscription: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteEventSubscriptionById: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteNetworkSubscriptionById: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetEventSubscription: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetEventSubscriptionById: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetNetworkSubscription: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetNetworkSubscriptionById: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - - # #------------------------------ - # # Mobility Group Manager - # #------------------------------ - # meep-mg-manager: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # CreateMobilityGroup: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # CreateMobilityGroupApp: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # CreateMobilityGroupUe: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DeleteMobilityGroup: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # DeleteMobilityGroupApp: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # GetMobilityGroup: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # GetMobilityGroupApp: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # GetMobilityGroupAppList: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # GetMobilityGroupList: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SetMobilityGroup: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SetMobilityGroupApp: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # TransferAppState: - # # access authorization mode: allow|block|verify - # mode: 'allow' - - # #------------------------------ - # # Monitoring Engine - # #------------------------------ - # meep-mon-engine: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # GetStates: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - - # #------------------------------ - # # Platform Controller - # #------------------------------ - # meep-platform-ctrl: - # # File server routes: names provided to file server routes during router initialization - # AltSw: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # AltFe: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # PriSw: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # PriFe: - # # access authorization mode: allow|block|verify - # mode: 'allow' - - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # CreateSandbox: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # CreateSandboxWithName: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteSandbox: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteSandboxList: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetSandbox: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # GetSandboxList: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # CreateScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteScenarioList: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # GetScenarioList: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # SetScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # Authorize: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # LoginOAuth: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # LoginUser: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # LogoutUser: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # TriggerWatchdog: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # #------------------------------ - # # RNI Service - # #------------------------------ - # meep-rnis: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # Layer2MeasInfoGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # PlmnInfoGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # RabInfoGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # S1BearerInfoGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionLinkListSubscriptionsGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - - # #------------------------------ - # # WAI Service - # #------------------------------ - # meep-wais: - # # REST API endpoint routes: names provided to endpoint routes during router initialization - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # ApInfoGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # StaInfoGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionLinkListSubscriptionsGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsDELETE: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsGET: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsPOST: - # # access authorization mode: allow|block|verify - # mode: 'allow' - # SubscriptionsPUT: - # # access authorization mode: allow|block|verify - # mode: 'allow' - - # #------------------------------ - # # Sandbox Controller - # #------------------------------ - # meep-sandbox-ctrl: - # # File server routes - # AltSw: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # PriSw: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - - # # REST API endpoints - # Index: - # # access authorization mode: allow|block|verify - # mode: 'block' - # ActivateScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # GetActiveNodeServiceMaps: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetActiveScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # TerminateScenario: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'allow' - # CreateReplayFile: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # CreateReplayFileFromScenarioExec: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteReplayFile: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # DeleteReplayFileList: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetReplayFile: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetReplayFileList: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # GetReplayStatus: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # LoopReplay: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # PlayReplayFile: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # StopReplayFile: - # # access authorization mode: allow|block|verify - # mode: 'verify' - # # role permissions: allow|block - # roles: - # admin: 'allow' - # user: 'block' - # SendEvent: - # # access authorization mode: allow|block|verify - # mode: 'allow' +#------------------------------------------------------------------------------ +# SERVICE ENDPOINT PERMISSIONS +# Service REST API endpoint access permissions. +# +# FORMAT: +# - name: 'svc-name' # service name +# path: '/svc/base/path' # service base path +# sbox: true|false # sandbox deployment +# default: # default service permissions +# mode: 'allow|block|verify' # access authorization mode +# roles: # role-specific permissions +# admin: 'allow|block' +# user: 'allow|block' +# endpoints: # Endpoint permissions (overrides default) +# - name 'endpoint-name' # endpoint name +# path: '/endpoint/path' # endpoint path +# method: 'GET|POST|PUT|DELETE' # endpoint method +# mode: 'allow|block|verify' # access authorization mode +# roles: # role-specific permissions +# admin: 'allow|block' +# user: 'allow|block' +#------------------------------------------------------------------------------ +services: + #------------------------------ + # GIS Engine (Sbox) + #------------------------------ + - name: 'meep-gis-engine' + path: '/gis/v1' + sbox: true + default: + mode: 'block' + endpoints: + - name: 'GetAutomationState' + path: '/automation' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'GetAutomationStateByName' + path: '/automation/{type}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'SetAutomationStateByName' + path: '/automation/{type}' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'DeleteGeoDataByName' + path: '/geodata/{assetName}' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetAssetData' + path: '/geodata' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'GetGeoDataByName' + path: '/geodata/{assetName}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'UpdateGeoDataByName' + path: '/geodata/{assetName}' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # Location Service (Sbox) + #------------------------------ + - name: 'meep-loc-serv' + path: '/location/v1' + sbox: true + default: + mode: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + #------------------------------ + # Metrics Engine (Sbox) + #------------------------------ + - name: 'meep-metrics-engine' + path: '/metrics/v2' + sbox: true + default: + mode: 'block' + endpoints: + - name: 'PostEventQuery' + path: '/metrics/query/event' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'PostHttpQuery' + path: '/metrics/query/http' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'PostNetworkQuery' + path: '/metrics/query/network' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'CreateEventSubscription' + path: '/metrics/subscriptions/event' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'CreateNetworkSubscription' + path: '/metrics/subscriptions/network' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteEventSubscriptionById' + path: '/metrics/subscriptions/event/{subscriptionId}' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteNetworkSubscriptionById' + path: '/metrics/subscriptions/network/{subscriptionId}' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetEventSubscription' + path: '/metrics/subscriptions/event' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetEventSubscriptionById' + path: '/metrics/subscriptions/event/{subscriptionId}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetNetworkSubscription' + path: '/metrics/subscriptions/network' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetNetworkSubscriptionById' + path: '/metrics/subscriptions/network/{subscriptionId}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # Mobility Group Manager (Sbox) + #------------------------------ + - name: 'meep-mg-manager' + path: '/mgm/v1' + sbox: true + default: + mode: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + #------------------------------ + # Monitoring Engine + #------------------------------ + - name: 'meep-mon-engine' + path: '/mon-engine/v1' + sbox: false + default: + mode: 'block' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + - name: 'GetStates' + path: '/states' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + #------------------------------ + # Platform Controller + #------------------------------ + - name: 'meep-platform-ctrl' + path: '/platform-ctrl/v1' + sbox: false + default: + mode: 'block' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + - name: 'CreateSandbox' + path: '/sandboxes' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'CreateSandboxWithName' + path: '/sandboxes/{name}' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteSandbox' + path: '/sandboxes/{name}' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteSandboxList' + path: '/sandboxes' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetSandbox' + path: '/sandboxes/{name}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'GetSandboxList' + path: '/sandboxes' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'CreateScenario' + path: '/scenarios/{name}' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteScenario' + path: '/scenarios/{name}' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteScenarioList' + path: '/scenarios' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetScenario' + path: '/scenarios/{name}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'GetScenarioList' + path: '/scenarios' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'SetScenario' + path: '/scenarios/{name}' + method: 'PUT' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + #------------------------------ + # RNI Service (Sbox) + #------------------------------ + - name: 'meep-rnis' + path: '/rni/v2' + sbox: true + default: + mode: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + #------------------------------ + # Sandbox Controller (Sbox) + #------------------------------ + - name: 'meep-sandbox-ctrl' + path: '/sandbox-ctrl/v1' + sbox: true + default: + mode: 'block' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + - name: 'ActivateScenario' + path: '/active/{name}' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'GetActiveNodeServiceMaps' + path: '/active/serviceMaps' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetActiveScenario' + path: '/active' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + - name: 'TerminateScenario' + path: '/active' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'CreateReplayFile' + path: '/replay/{name}' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'CreateReplayFileFromScenarioExec' + path: '/replay/{name}/generate' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteReplayFile' + path: '/replay/{name}' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'DeleteReplayFileList' + path: '/replay' + method: 'DELETE' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetReplayFile' + path: '/replay/{name}' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetReplayFileList' + path: '/replay' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'GetReplayStatus' + path: '/replaystatus' + method: 'GET' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'LoopReplay' + path: '/replay/{name}/loop' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'PlayReplayFile' + path: '/replay/{name}/play' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'StopReplayFile' + path: '/replay/{name}/stop' + method: 'POST' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'SendEvent' + path: '/events/{type}' + method: 'POST' + mode: 'allow' + #------------------------------ + # WAI Service (Sbox) + #------------------------------ + - name: 'meep-wais' + path: '/wai/v2' + sbox: true + default: + mode: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' \ No newline at end of file diff --git a/go-apps/meep-auth-svc/server/auth-svc.go b/go-apps/meep-auth-svc/server/auth-svc.go index d47c3d45f..c76c7aa3f 100644 --- a/go-apps/meep-auth-svc/server/auth-svc.go +++ b/go-apps/meep-auth-svc/server/auth-svc.go @@ -33,6 +33,7 @@ import ( "fmt" "io" "net/http" + "net/url" "os" "strconv" "strings" @@ -61,14 +62,60 @@ const moduleName = "meep-auth-svc" const moduleNamespace = "default" const postgisUser = "postgres" const postgisPwd = "pwd" -const permissionsRoot = "services" const pfmCtrlBasepath = "http://meep-platform-ctrl/platform-ctrl/v1" +// Permission Configuration types +type Permission struct { + Mode string `yaml:"mode"` + Roles map[string]string `yaml:"roles"` +} +type Fileserver struct { + Name string `yaml:"name"` + Path string `yaml:"path"` + Sbox bool `yaml:"sbox"` + Mode string `yaml:"mode"` + Roles map[string]string `yaml:"roles"` +} +type Endpoint struct { + Name string `yaml:"name"` + Path string `yaml:"path"` + Method string `yaml:"method"` + Sbox bool `yaml:"sbox"` + Mode string `yaml:"mode"` + Roles map[string]string `yaml:"roles"` +} +type Service struct { + Name string `yaml:"name"` + Path string `yaml:"path"` + Sbox bool `yaml:"sbox"` + Default *Permission `yaml:"default"` + Endpoints []*Endpoint `yaml:"endpoints"` +} +type PermissionsConfig struct { + Default *Permission `yaml:"default"` + Fileservers []*Fileserver `yaml:"fileservers"` + Services []*Service `yaml:"services"` +} + +// Auth Service types +type AuthRoute struct { + Name string + Method string + Pattern string + Prefix bool +} + type LoginRequest struct { provider string timer *time.Timer } +type PermissionsCache struct { + Default *Permission + Fileservers map[string]*Permission + Services map[string]map[string]*Permission +} + type AuthSvc struct { sessionMgr *sm.SessionMgr userStore *users.Connector @@ -79,6 +126,8 @@ type AuthSvc struct { uri string oauthConfigs map[string]*oauth2.Config loginRequests map[string]*LoginRequest + router *mux.Router + cache PermissionsCache } var mutex sync.Mutex @@ -131,8 +180,8 @@ func Init() (err error) { _ = authSvc.userStore.CreateTables() log.Info("Connected to User Store") - // Set endpoint authorization permissions - setPermissions() + // Retrieve & cache endpoint authorization permissions + cachePermissions() // Connect to Metric Store authSvc.metricStore, err = ms.NewMetricStore("session-metrics", "global", influxDBAddr, ms.MetricsDbDisabled) @@ -218,49 +267,171 @@ func Run() (err error) { return nil } -func setPermissions() { - - // Flush old permissions - ps := authSvc.sessionMgr.GetPermissionStore() - ps.Flush() - +func getPermissionsConfig() (config *PermissionsConfig, err error) { // Read & apply API permissions from file permissionsFile := "/permissions.yaml" permissions := viper.New() permissions.SetConfigFile(permissionsFile) - err := permissions.ReadInConfig() + err = permissions.ReadInConfig() + if err != nil { + return nil, err + } + + // Unmarshal config into Permission Configuration structure + config = new(PermissionsConfig) + err = permissions.Unmarshal(config) if err != nil { - log.Warn("Failed to read permissions from file") + return nil, err + } + return config, nil +} + +func cachePermissions() { + // Create new Auth Router + authSvc.router = mux.NewRouter().StrictSlash(true) + + // Get permissions from configuration file + config, err := getPermissionsConfig() + if err != nil || config == nil { + log.Warn("Failed to retrieve permissions from file with err: ", err.Error()) log.Warn("Granting full API access for all roles by default") - _ = ps.SetDefaultPermission(&sm.Permission{Mode: sm.ModeAllow}) + + // Cache default permission + authSvc.cache.Default = &Permission{Mode: sm.ModeAllow} return } + // log.Info(fmt.Sprintf("%+v\n", config)) + + // Parse & cache permissions from config file + // IMPORTANT NOTE: Order is important to prevent prefix matches from running first + cacheDefaultPermission(config) + cacheServicePermissions(config) + cacheFileserverPermissions(config) +} + +func cacheDefaultPermission(cfg *PermissionsConfig) { + authSvc.cache.Default = cfg.Default + if authSvc.cache.Default == nil { + log.Warn("Failed to retrieve default permission") + log.Warn("Granting full API access for all roles by default") + permission := new(Permission) + permission.Mode = sm.ModeAllow + authSvc.cache.Default = permission + } +} - // Loop through services - for service := range permissions.GetStringMap(permissionsRoot) { - // Default permissions - if service == "default" { - permissionsRoute := permissionsRoot + ".default" - permission := new(sm.Permission) - permission.Mode = permissions.GetString(permissionsRoute + ".mode") - permission.RolePermissions = make(map[string]string) - for role, access := range permissions.GetStringMapString(permissionsRoute + ".roles") { - permission.RolePermissions[role] = access +func cacheServicePermissions(cfg *PermissionsConfig) { + var routes []*AuthRoute + + // Initialize Service permissions cache + authSvc.cache.Services = make(map[string]map[string]*Permission) + + for _, svc := range cfg.Services { + // Create new service + add it to service cache + svcMap := make(map[string]*Permission) + authSvc.cache.Services[svc.Name] = svcMap + + // Service Endpoints + for _, ep := range svc.Endpoints { + // Cache service endpoint permissions + permission := new(Permission) + permission.Mode = ep.Mode + permission.Roles = make(map[string]string) + for role, access := range ep.Roles { + permission.Roles[role] = access } - _ = ps.SetDefaultPermission(permission) - } else { - // Service route names - permissionsService := permissionsRoot + "." + service - for name := range permissions.GetStringMap(permissionsService) { - permissionsRoute := permissionsService + "." + name - permission := new(sm.Permission) - permission.Mode = permissions.GetString(permissionsRoute + ".mode") - permission.RolePermissions = make(map[string]string) - for role, access := range permissions.GetStringMapString(permissionsRoute + ".roles") { - permission.RolePermissions[role] = access - } - _ = ps.Set(service, name, permission) + svcMap[ep.Name] = permission + + // Add auth service route + route := new(AuthRoute) + route.Name = ep.Name + route.Prefix = false + route.Method = ep.Method + if svc.Sbox { + route.Pattern = "/{sbox}" + svc.Path + ep.Path + } else { + route.Pattern = svc.Path + ep.Path } + routes = append(routes, route) + } + // fmt.Printf("%+v\n", svcMap) + + // Default service permissions + // IMPORTANT NOTE: This prefix route must be added after the service endpoint routes + var permission *Permission + if svc.Default.Mode != "" { + permission := new(Permission) + permission.Roles = make(map[string]string) + permission.Mode = svc.Default.Mode + for role, access := range svc.Default.Roles { + permission.Roles[role] = access + } + } else { + // Use cache default permission if service-specific default is not found + permission = authSvc.cache.Default + } + svcMap[svc.Name] = permission + + // Add auth service default route + route := new(AuthRoute) + route.Name = svc.Name + route.Prefix = true + if svc.Sbox { + route.Pattern = "/{sbox}" + svc.Path + } else { + route.Pattern = svc.Path + } + routes = append(routes, route) + } + + // Add routes to router + addRoutes(routes) +} + +func cacheFileserverPermissions(cfg *PermissionsConfig) { + var routes []*AuthRoute + + // Initialize Fileserver permissions cache + authSvc.cache.Fileservers = make(map[string]*Permission) + + for _, fs := range cfg.Fileservers { + // Cache fileserver permissions + permission := new(Permission) + permission.Mode = fs.Mode + permission.Roles = make(map[string]string) + for role, access := range fs.Roles { + permission.Roles[role] = access + } + authSvc.cache.Fileservers[fs.Name] = permission + + // Add auth service route + route := new(AuthRoute) + route.Name = fs.Name + route.Prefix = true + if fs.Sbox { + route.Pattern = "/{sbox}" + fs.Path + } else { + route.Pattern = fs.Path + } + routes = append(routes, route) + } + + // Add routes to router + addRoutes(routes) +} + +func addRoutes(routes []*AuthRoute) { + for _, route := range routes { + fmt.Printf("%+v\n", route) + if route.Prefix { + authSvc.router. + Name(route.Name). + PathPrefix(route.Pattern) + } else { + authSvc.router. + Name(route.Name). + Methods(route.Method). + Path(route.Pattern) } } } @@ -336,58 +507,74 @@ func getErrUrl(err string) string { return authSvc.uri + "?err=" + strings.ReplaceAll(err, " ", "+") } +// ---------- REST API ---------- + func asAuthenticate(w http.ResponseWriter, r *http.Request) { - // Get service & sandbox name from request parameters - vars := mux.Vars(r) - svcName := vars["svc"] - sboxName := vars["sbox"] - log.Debug("svcName: ", svcName, " sboxName: ", sboxName) - - // Get target method & URL from forwarded request headers - targetMethod := r.Header.Get("X-Original-Method") - targetUrl := r.Header.Get("X-Original-URL") - log.Debug("targetMethod: ", targetMethod, " targetUrl: ", targetUrl) - - // Get target permissions - // TODO -- parse permissions file on startup to create regexp table - // // Get permission store instance - // ps := pfmCtrl.sessionMgr.GetPermissionStore() - - // if targetMethod != "" && targetUrl != "" { - // url, err := url.ParseRequestURI(targetUrl) - // if err == nil { - - // } - // } - permission := new(sm.Permission) - // permission.Mode = sm.ModeAllow - permission.Mode = sm.ModeVerify - permission.RolePermissions = make(map[string]string) - permission.RolePermissions[sm.RoleAdmin] = sm.ModeAllow - permission.RolePermissions[sm.RoleUser] = sm.ModeBlock - - // // Use default permission if none found - // if permission == nil { - // permission, err = ps.GetDefaultPermission() - // if err != nil || permission == nil { - // http.Error(w, "Unauthorized", http.StatusUnauthorized) - // return - // } - // } - - // Get session store instance - ss := authSvc.sessionMgr.GetSessionStore() + // Get service & sandbox name from request query parameters + query := r.URL.Query() + svcName := query.Get("svc") + // sboxName := query.Get("sbox") + var sboxName string + + // Get original request URL & method + originalUrl := r.Header.Get("X-Original-URL") + originalMethod := r.Header.Get("X-Original-Method") + if originalUrl == "" || originalMethod == "" { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Update request URL & method before running through matchers + var err error + r.Method = originalMethod + r.URL, err = url.ParseRequestURI(originalUrl) + if err != nil { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Get permissions for matching route or default if not found + var permission *Permission + var match mux.RouteMatch + if authSvc.router.Match(r, &match) { + routeName := match.Route.GetName() + sboxName = match.Vars["sbox"] + + log.Error("routeName: ", routeName, " sboxName: ", sboxName) + + // Check service-specific routes + if svcName != "" { + if svcPermissions, found := authSvc.cache.Services[svcName]; found { + permission = svcPermissions[routeName] + } + } + // Check file servers if not already found + if permission == nil { + if fsPermission, found := authSvc.cache.Fileservers[routeName]; found { + permission = fsPermission + } + } + } else { + permission = authSvc.cache.Default + } + + // Verify permission + if permission == nil { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } // Handle according to permission mode switch permission.Mode { + case sm.ModeAllow: + // break case sm.ModeBlock: http.Error(w, "Unauthorized", http.StatusUnauthorized) return - case sm.ModeAllow: case sm.ModeVerify: // Retrieve user session, if any - session, err := ss.Get(r) + session, err := authSvc.sessionMgr.GetSessionStore().Get(r) if err != nil || session == nil { http.Error(w, "Unauthorized", http.StatusUnauthorized) return @@ -399,7 +586,7 @@ func asAuthenticate(w http.ResponseWriter, r *http.Request) { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } - access := permission.RolePermissions[role] + access := permission.Roles[role] if access != sm.AccessGranted { http.Error(w, "Unauthorized", http.StatusUnauthorized) return @@ -410,13 +597,21 @@ func asAuthenticate(w http.ResponseWriter, r *http.Request) { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } + default: http.Error(w, "Unauthorized", http.StatusUnauthorized) return } + // Allow request w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) + + // Invoke handler + // handler.ServeHTTP(w, r) + // handler(w, r) + + // authSvc.router.ServeHTTP(w, r) } func asAuthorize(w http.ResponseWriter, r *http.Request) { diff --git a/go-apps/meep-gis-engine/go.mod b/go-apps/meep-gis-engine/go.mod index c03129686..7924fe00c 100644 --- a/go-apps/meep-gis-engine/go.mod +++ b/go-apps/meep-gis-engine/go.mod @@ -10,7 +10,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/gorilla/handlers v1.4.2 github.com/gorilla/mux v1.7.4 ) @@ -25,5 +24,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client => ../../go-packages/meep-sandbox-ctrl-client - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-gis-engine/go.sum b/go-apps/meep-gis-engine/go.sum index b70d732a0..eb46c2c06 100644 --- a/go-apps/meep-gis-engine/go.sum +++ b/go-apps/meep-gis-engine/go.sum @@ -20,10 +20,6 @@ github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YAR github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -34,8 +30,6 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/go-apps/meep-gis-engine/server/gis-engine.go b/go-apps/meep-gis-engine/server/gis-engine.go index 44f9ce15b..d344293e2 100644 --- a/go-apps/meep-gis-engine/server/gis-engine.go +++ b/go-apps/meep-gis-engine/server/gis-engine.go @@ -33,7 +33,6 @@ import ( mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" sbox "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" "github.com/gorilla/mux" ) @@ -87,7 +86,6 @@ type GisEngine struct { sboxCtrlClient *sbox.APIClient activeModel *mod.Model gisCache *gc.GisCache - sessionMgr *sm.SessionMgr assetMgr *am.AssetMgr assets map[string]*Asset ueInfo map[string]*UeInfo @@ -148,14 +146,6 @@ func Init() (err error) { return err } - // Connect to Session Manager - ge.sessionMgr, err = sm.NewSessionMgr(moduleName, ge.sandboxName, redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - // Connect to GIS cache ge.gisCache, err = gc.NewGisCache(ge.sandboxName, redisAddr) if err != nil { diff --git a/go-apps/meep-gis-engine/server/routers.go b/go-apps/meep-gis-engine/server/routers.go index d1f7cc9a9..a094832fa 100644 --- a/go-apps/meep-gis-engine/server/routers.go +++ b/go-apps/meep-gis-engine/server/routers.go @@ -46,7 +46,6 @@ func NewRouter() *mux.Router { for _, route := range routes { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) - handler = ge.sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-loc-serv/go.mod b/go-apps/meep-loc-serv/go.mod index dfdd266e2..2a1771489 100644 --- a/go-apps/meep-loc-serv/go.mod +++ b/go-apps/meep-loc-serv/go.mod @@ -12,7 +12,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.4 golang.org/x/sys v0.0.0-20190412213103-97732733099d // indirect @@ -29,5 +28,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-loc-serv/go.sum b/go-apps/meep-loc-serv/go.sum index 274d30199..9205997c6 100644 --- a/go-apps/meep-loc-serv/go.sum +++ b/go-apps/meep-loc-serv/go.sum @@ -1,4 +1,3 @@ -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= @@ -12,16 +11,11 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -32,30 +26,17 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= diff --git a/go-apps/meep-loc-serv/server/loc-serv.go b/go-apps/meep-loc-serv/server/loc-serv.go index 084a52ca2..0a56f0b29 100644 --- a/go-apps/meep-loc-serv/server/loc-serv.go +++ b/go-apps/meep-loc-serv/server/loc-serv.go @@ -34,12 +34,10 @@ import ( httpLog "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" "github.com/gorilla/mux" ) -const moduleName = "meep-loc-serv" const LocServBasePath = "/location/v2/" const locServKey string = "loc-serv:" const logModuleLocServ string = "meep-loc-serv" @@ -99,7 +97,6 @@ var hostUrl *url.URL var sandboxName string var basePath string var baseKey string -var sessionMgr *sm.SessionMgr var mutex sync.Mutex func notImplemented(w http.ResponseWriter, r *http.Request) { @@ -147,14 +144,6 @@ func Init() (err error) { _ = rc.DBFlush(baseKey) log.Info("Connected to Redis DB, location service table") - // Connect to Session Manager - sessionMgr, err = sm.NewSessionMgr(moduleName, sandboxName, redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - userTrackingReInit() zonalTrafficReInit() zoneStatusReInit() diff --git a/go-apps/meep-loc-serv/server/routers.go b/go-apps/meep-loc-serv/server/routers.go index 8f69c0a50..f813addc5 100644 --- a/go-apps/meep-loc-serv/server/routers.go +++ b/go-apps/meep-loc-serv/server/routers.go @@ -48,7 +48,6 @@ func NewRouter() *mux.Router { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) handler = httpLog.LogRx(handler, "") - handler = sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-metrics-engine/go.mod b/go-apps/meep-metrics-engine/go.mod index 9564d85d3..08f0131f4 100644 --- a/go-apps/meep-metrics-engine/go.mod +++ b/go-apps/meep-metrics-engine/go.mod @@ -12,7 +12,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/fortytw2/leaktest v1.3.0 // indirect github.com/google/go-cmp v0.3.1 // indirect github.com/gorilla/handlers v1.4.0 @@ -32,5 +31,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-metrics-engine/go.sum b/go-apps/meep-metrics-engine/go.sum index 59af54e09..4ccfa6b31 100644 --- a/go-apps/meep-metrics-engine/go.sum +++ b/go-apps/meep-metrics-engine/go.sum @@ -18,13 +18,9 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.7.1 h1:Dw4jY2nghMMRsh1ol8dv1axHkDwMQK2DHerMNJsIpJU= -github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= @@ -39,7 +35,6 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= diff --git a/go-apps/meep-metrics-engine/server/routers.go b/go-apps/meep-metrics-engine/server/routers.go index 79a6f514b..ad26435db 100644 --- a/go-apps/meep-metrics-engine/server/routers.go +++ b/go-apps/meep-metrics-engine/server/routers.go @@ -49,7 +49,6 @@ func NewRouter() *mux.Router { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) // handler = httpLog.LogRx(handler, "") - handler = v2.SessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-metrics-engine/server/v2/metrics-engine.go b/go-apps/meep-metrics-engine/server/v2/metrics-engine.go index a5ab5dada..f7750e4a4 100644 --- a/go-apps/meep-metrics-engine/server/v2/metrics-engine.go +++ b/go-apps/meep-metrics-engine/server/v2/metrics-engine.go @@ -37,7 +37,6 @@ import ( mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" "github.com/gorilla/mux" ) @@ -74,7 +73,6 @@ var hostUrl *url.URL var basePath string var baseKey string -var SessionMgr *sm.SessionMgr var rc *redis.Connector type EventRegistration struct { @@ -154,14 +152,6 @@ func Init() (err error) { } log.Info("Connected to Redis DB") - // Connect to Session Manager - SessionMgr, err = sm.NewSessionMgr(moduleName, sandboxName, redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - nextNetworkSubscriptionIdAvailable = 1 nextEventSubscriptionIdAvailable = 1 diff --git a/go-apps/meep-mg-manager/go.mod b/go-apps/meep-mg-manager/go.mod index d5c536a31..61167d7aa 100644 --- a/go-apps/meep-mg-manager/go.mod +++ b/go-apps/meep-mg-manager/go.mod @@ -12,7 +12,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.4 @@ -29,5 +28,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-mg-manager/go.sum b/go-apps/meep-mg-manager/go.sum index 87a4ed3a6..ff3f4db90 100644 --- a/go-apps/meep-mg-manager/go.sum +++ b/go-apps/meep-mg-manager/go.sum @@ -16,14 +16,8 @@ github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -34,8 +28,6 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/go-apps/meep-mg-manager/server/mg-manager.go b/go-apps/meep-mg-manager/server/mg-manager.go index b41087870..c3eba81e0 100644 --- a/go-apps/meep-mg-manager/server/mg-manager.go +++ b/go-apps/meep-mg-manager/server/mg-manager.go @@ -34,7 +34,6 @@ import ( mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" "github.com/RyanCarrier/dijkstra" "github.com/gorilla/mux" @@ -133,7 +132,6 @@ type MgManager struct { networkGraph *dijkstra.Graph activeModel *mod.Model lbRulesStore *lbRulesStore - sessionMgr *sm.SessionMgr // Scenario network location list netLocList []string @@ -212,14 +210,6 @@ func Init() (err error) { // Flush module data _ = mgm.lbRulesStore.rc.DBFlush(mgm.baseKey) - // Connect to Session Manager - mgm.sessionMgr, err = sm.NewSessionMgr(moduleName, mgm.sandboxName, redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - // Initialize Edge-LB rules with current active scenario processActiveScenarioUpdate() diff --git a/go-apps/meep-mg-manager/server/routers.go b/go-apps/meep-mg-manager/server/routers.go index f235f0e35..c02089172 100644 --- a/go-apps/meep-mg-manager/server/routers.go +++ b/go-apps/meep-mg-manager/server/routers.go @@ -49,7 +49,6 @@ func NewRouter() *mux.Router { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) handler = httpLog.LogRx(handler, "") - handler = mgm.sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-mon-engine/go.mod b/go-apps/meep-mon-engine/go.mod index 9b211ad3c..86271083a 100644 --- a/go-apps/meep-mon-engine/go.mod +++ b/go-apps/meep-mon-engine/go.mod @@ -8,7 +8,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/gogo/protobuf v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect github.com/google/btree v1.0.0 // indirect @@ -41,5 +40,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store => ../../go-packages/meep-sandbox-store - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-mon-engine/go.sum b/go-apps/meep-mon-engine/go.sum index 86061949a..026faf5c6 100644 --- a/go-apps/meep-mon-engine/go.sum +++ b/go-apps/meep-mon-engine/go.sum @@ -22,10 +22,6 @@ github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YAR github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc h1:f8eY6cV/x1x+HLjOp4r72s/31/V2aTUtg5oKRRPf8/Q= github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= @@ -47,8 +43,6 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= diff --git a/go-apps/meep-mon-engine/server/mon-engine.go b/go-apps/meep-mon-engine/server/mon-engine.go index 6ed1db95a..1b4589c5b 100644 --- a/go-apps/meep-mon-engine/server/mon-engine.go +++ b/go-apps/meep-mon-engine/server/mon-engine.go @@ -28,7 +28,6 @@ import ( mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" sbs "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/fields" @@ -85,7 +84,6 @@ var stopChan = make(chan struct{}) var mqGlobal *mq.MsgQueue var handlerId int var sandboxStore *sbs.SandboxStore -var sessionMgr *sm.SessionMgr var depPodsList []string var corePodsList []string @@ -165,14 +163,6 @@ func Init() (err error) { } log.Info("Connected to Sandbox Store") - // Connect to Session Manager - sessionMgr, err = sm.NewSessionMgr(moduleName, "", redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - return nil } diff --git a/go-apps/meep-mon-engine/server/routers.go b/go-apps/meep-mon-engine/server/routers.go index 4426c0d0a..8b030832e 100644 --- a/go-apps/meep-mon-engine/server/routers.go +++ b/go-apps/meep-mon-engine/server/routers.go @@ -46,7 +46,6 @@ func NewRouter() *mux.Router { for _, route := range routes { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) - handler = sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-platform-ctrl/go.mod b/go-apps/meep-platform-ctrl/go.mod index 2a3afe39b..fe1aa17ab 100644 --- a/go-apps/meep-platform-ctrl/go.mod +++ b/go-apps/meep-platform-ctrl/go.mod @@ -12,8 +12,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users v0.0.0 // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect github.com/google/go-github v17.0.0+incompatible // indirect github.com/google/go-querystring v1.0.0 // indirect @@ -35,6 +33,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store => ../../go-packages/meep-sandbox-store - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users => ../../go-packages/meep-users ) diff --git a/go-apps/meep-platform-ctrl/go.sum b/go-apps/meep-platform-ctrl/go.sum index ff160c49b..783d709c1 100644 --- a/go-apps/meep-platform-ctrl/go.sum +++ b/go-apps/meep-platform-ctrl/go.sum @@ -60,7 +60,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/flimzy/kivik v1.8.1 h1:URl7e0OnfSvAu3ZHQ5BkvzRZlCmyYuDyWUCcPWIHlU0= github.com/flimzy/kivik v1.8.1/go.mod h1:S2aPycbG0eDFll4wgXt9uacSNkXISPufutnc9sv+mdA= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -93,7 +92,6 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -104,9 +102,7 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -124,17 +120,12 @@ github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZs github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -144,38 +135,25 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.5.2 h1:yTSXVswvWUOQ3k1sd7vJfDrbSl8lKuscqFJRqjC0ifw= -github.com/lib/pq v1.5.2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lkysow/go-gitlab v0.7.1 h1:xYb6fBv04QE28bR14+SFGzZCkYtPyTJDuPzG7pQPGEQ= github.com/lkysow/go-gitlab v0.7.1/go.mod h1:V/jEItjZ+vsbFT6RPjkPPHyf6xddwmyDjoD+3Qlkaqo= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237/go.mod h1:UOnLAUmVG5paym8pD3C4B9BQylUDC2vXFJJpT7JrlEA= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3 h1:lBNvYUFo7d4fHs8BXUmoTzbdUo4usq6PlP5qn894sGA= github.com/roymx/viper v1.3.3-0.20190416163942-b9a223fc58a3/go.mod h1:jo59Sv6xirZtbxbaZbCtrQd1CSufmcxJZIC8hm2tepw= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -260,7 +238,6 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -303,7 +280,6 @@ golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fq golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -373,7 +349,6 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -425,7 +400,6 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -433,7 +407,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/go-apps/meep-platform-ctrl/server/platform-ctrl.go b/go-apps/meep-platform-ctrl/server/platform-ctrl.go index 246e9cb06..1143400a0 100644 --- a/go-apps/meep-platform-ctrl/server/platform-ctrl.go +++ b/go-apps/meep-platform-ctrl/server/platform-ctrl.go @@ -35,7 +35,6 @@ import ( mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" ss "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" ) type Scenario struct { @@ -45,7 +44,6 @@ type Scenario struct { type PlatformCtrl struct { scenarioStore *couch.Connector rc *redis.Connector - sessionMgr *sm.SessionMgr sandboxStore *ss.SandboxStore mqGlobal *mq.MsgQueue } @@ -135,14 +133,6 @@ func Init() (err error) { } log.Info("Connected to Sandbox Store") - // Connect to Session Manager - pfmCtrl.sessionMgr, err = sm.NewSessionMgr(moduleName, "", redisDBAddr, redisDBAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - log.Info("Platform Controller initialized") return nil } diff --git a/go-apps/meep-platform-ctrl/server/routers.go b/go-apps/meep-platform-ctrl/server/routers.go index 3d8f7e6ef..97c847500 100644 --- a/go-apps/meep-platform-ctrl/server/routers.go +++ b/go-apps/meep-platform-ctrl/server/routers.go @@ -45,7 +45,6 @@ func NewRouter(priFe string, priSw string, altFe string, altSw string) *mux.Rout for _, route := range routes { var handler http.Handler = Logger(route.HandlerFunc, route.Name) - handler = pfmCtrl.sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). @@ -56,7 +55,6 @@ func NewRouter(priFe string, priSw string, altFe string, altSw string) *mux.Rout // Path prefix router order is important if altSw != "" { var handler http.Handler = http.StripPrefix("/alt/api/", http.FileServer(http.Dir(altSw))) - handler = pfmCtrl.sessionMgr.Authorizer(handler) router. PathPrefix("/alt/api/"). Name("AltSw"). @@ -64,7 +62,6 @@ func NewRouter(priFe string, priSw string, altFe string, altSw string) *mux.Rout } if altFe != "" { var handler http.Handler = http.StripPrefix("/alt/", http.FileServer(http.Dir(altFe))) - handler = pfmCtrl.sessionMgr.Authorizer(handler) router. PathPrefix("/alt/"). Name("AltFe"). @@ -73,7 +70,6 @@ func NewRouter(priFe string, priSw string, altFe string, altSw string) *mux.Rout if priSw != "" { var handler http.Handler = http.StripPrefix("/api/", http.FileServer(http.Dir(priSw))) - handler = pfmCtrl.sessionMgr.Authorizer(handler) router. PathPrefix("/api/"). Name("PriSw"). @@ -81,7 +77,6 @@ func NewRouter(priFe string, priSw string, altFe string, altSw string) *mux.Rout } if priFe != "" { var handler http.Handler = http.StripPrefix("/", http.FileServer(http.Dir(priFe))) - handler = pfmCtrl.sessionMgr.Authorizer(handler) router. PathPrefix("/"). Name("PriFe"). diff --git a/go-apps/meep-rnis/go.mod b/go-apps/meep-rnis/go.mod index b7c547f8c..165bc71c7 100644 --- a/go-apps/meep-rnis/go.mod +++ b/go-apps/meep-rnis/go.mod @@ -13,7 +13,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client v0.0.0 // indirect - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/antihax/optional v1.0.0 // indirect github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.4 @@ -32,5 +31,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-rnis-client => ../../go-packages/meep-rnis-client - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-rnis/go.sum b/go-apps/meep-rnis/go.sum index 673007411..72357dde1 100644 --- a/go-apps/meep-rnis/go.sum +++ b/go-apps/meep-rnis/go.sum @@ -13,16 +13,11 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -33,8 +28,6 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -43,9 +36,7 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -55,7 +46,6 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= diff --git a/go-apps/meep-rnis/server/rnis.go b/go-apps/meep-rnis/server/rnis.go index e0e2b04f9..b83a913ad 100644 --- a/go-apps/meep-rnis/server/rnis.go +++ b/go-apps/meep-rnis/server/rnis.go @@ -35,11 +35,9 @@ import ( httpLog "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" "github.com/gorilla/mux" ) -const moduleName = "meep-rnis" const rnisBasePath = "/rni/v2/" const rnisKey string = "rnis:" const logModuleRNIS string = "meep-rnis" @@ -79,7 +77,6 @@ const NR_MEAS_REP_UE_NOTIFICATION = "NrMeasRepUeNotification" var RNIS_DB = 5 var rc *redis.Connector -var sessionMgr *sm.SessionMgr var hostUrl *url.URL var sandboxName string var basePath string @@ -196,14 +193,6 @@ func Init() (err error) { _ = rc.DBFlush(baseKey) log.Info("Connected to Redis DB, RNI service table") - // Connect to Session Manager - sessionMgr, err = sm.NewSessionMgr(moduleName, sandboxName, redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - reInit() expiryTicker = time.NewTicker(time.Second) diff --git a/go-apps/meep-rnis/server/routers.go b/go-apps/meep-rnis/server/routers.go index 435169633..0a314b424 100644 --- a/go-apps/meep-rnis/server/routers.go +++ b/go-apps/meep-rnis/server/routers.go @@ -48,7 +48,6 @@ func NewRouter() *mux.Router { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) handler = httpLog.LogRx(handler, "") - handler = sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-sandbox-ctrl/go.mod b/go-apps/meep-sandbox-ctrl/go.mod index 38213665e..e251eaf8c 100644 --- a/go-apps/meep-sandbox-ctrl/go.mod +++ b/go-apps/meep-sandbox-ctrl/go.mod @@ -12,7 +12,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-replay-manager v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.4 ) @@ -30,5 +29,4 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-replay-manager => ../../go-packages/meep-replay-manager github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-ctrl-client => ../../go-packages/meep-sandbox-ctrl-client github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store => ../../go-packages/meep-sandbox-store - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions ) diff --git a/go-apps/meep-sandbox-ctrl/go.sum b/go-apps/meep-sandbox-ctrl/go.sum index 4766c3082..adab47b82 100644 --- a/go-apps/meep-sandbox-ctrl/go.sum +++ b/go-apps/meep-sandbox-ctrl/go.sum @@ -23,14 +23,8 @@ github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= @@ -45,8 +39,6 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/go-apps/meep-sandbox-ctrl/server/routers.go b/go-apps/meep-sandbox-ctrl/server/routers.go index 7750b2a35..270c9cd55 100644 --- a/go-apps/meep-sandbox-ctrl/server/routers.go +++ b/go-apps/meep-sandbox-ctrl/server/routers.go @@ -46,7 +46,6 @@ func NewRouter(priSw string, altSw string) *mux.Router { for _, route := range routes { var handler http.Handler = Logger(route.HandlerFunc, route.Name) - handler = sbxCtrl.sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). @@ -57,7 +56,6 @@ func NewRouter(priSw string, altSw string) *mux.Router { // Path prefix router order is important if altSw != "" { var handler http.Handler = http.StripPrefix("/alt/api/", http.FileServer(http.Dir(altSw))) - handler = sbxCtrl.sessionMgr.Authorizer(handler) router. PathPrefix("/alt/api/"). Name("AltSw"). @@ -65,7 +63,6 @@ func NewRouter(priSw string, altSw string) *mux.Router { } if priSw != "" { var handler http.Handler = http.StripPrefix("/api/", http.FileServer(http.Dir(priSw))) - handler = sbxCtrl.sessionMgr.Authorizer(handler) router. PathPrefix("/api/"). Name("PriSw"). diff --git a/go-apps/meep-sandbox-ctrl/server/sandbox-ctrl.go b/go-apps/meep-sandbox-ctrl/server/sandbox-ctrl.go index 5038423aa..b1eab6d8d 100644 --- a/go-apps/meep-sandbox-ctrl/server/sandbox-ctrl.go +++ b/go-apps/meep-sandbox-ctrl/server/sandbox-ctrl.go @@ -38,7 +38,6 @@ import ( mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" replay "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-replay-manager" ss "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sandbox-store" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" ) type Scenario struct { @@ -56,7 +55,6 @@ type SandboxCtrl struct { metricStore *ms.MetricStore replayMgr *replay.ReplayMgr sandboxStore *ss.SandboxStore - sessionMgr *sm.SessionMgr } const scenarioDBName = "scenarios" @@ -167,14 +165,6 @@ func Init() (err error) { } log.Info("Connected to Sandbox Store") - // Connect to Session Manager - sbxCtrl.sessionMgr, err = sm.NewSessionMgr(moduleName, sbxCtrl.sandboxName, redisDBAddr, redisDBAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - return nil } diff --git a/go-apps/meep-wais/go.mod b/go-apps/meep-wais/go.mod index a03e831df..b0363ede7 100644 --- a/go-apps/meep-wais/go.mod +++ b/go-apps/meep-wais/go.mod @@ -12,7 +12,6 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client v0.0.0 // indirect github.com/antihax/optional v1.0.0 // indirect github.com/gorilla/handlers v1.4.0 @@ -31,6 +30,5 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis - github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions => ../../go-packages/meep-sessions github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-wais-client => ../../go-packages/meep-wais-client ) diff --git a/go-apps/meep-wais/go.sum b/go-apps/meep-wais/go.sum index 8fbf2a251..72357dde1 100644 --- a/go-apps/meep-wais/go.sum +++ b/go-apps/meep-wais/go.sum @@ -1,5 +1,4 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/InterDigitalInc/AdvantEDGE v1.5.0 h1:Gv1wxW7kV31reTqxX5TflvvYEEqnxaUlKWvgoandpfI= github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= @@ -14,16 +13,11 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= @@ -34,8 +28,6 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -44,9 +36,7 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -56,7 +46,6 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= diff --git a/go-apps/meep-wais/server/routers.go b/go-apps/meep-wais/server/routers.go index 522b0466c..83610558a 100644 --- a/go-apps/meep-wais/server/routers.go +++ b/go-apps/meep-wais/server/routers.go @@ -48,7 +48,6 @@ func NewRouter() *mux.Router { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) handler = httpLog.LogRx(handler, "") - handler = sessionMgr.Authorizer(handler) router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-wais/server/wais.go b/go-apps/meep-wais/server/wais.go index b9abe3d16..c520757e8 100644 --- a/go-apps/meep-wais/server/wais.go +++ b/go-apps/meep-wais/server/wais.go @@ -36,12 +36,10 @@ import ( httpLog "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-http-logger" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" - sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" "github.com/gorilla/mux" ) -const moduleName = "meep-wais" const waisBasePath = "/wai/v2/" const waisKey string = "wais:" const logModuleWAIS string = "meep-wais" @@ -61,7 +59,6 @@ var currentStoreName = "" var WAIS_DB = 5 var rc *redis.Connector -var sessionMgr *sm.SessionMgr var hostUrl *url.URL var sandboxName string var basePath string @@ -126,14 +123,6 @@ func Init() (err error) { _ = rc.DBFlush(baseKey) log.Info("Connected to Redis DB, RNI service table") - // Connect to Session Manager - sessionMgr, err = sm.NewSessionMgr(moduleName, sandboxName, redisAddr, redisAddr) - if err != nil { - log.Error("Failed connection to Session Manager: ", err.Error()) - return err - } - log.Info("Connected to Session Manager") - reInit() expiryTicker = time.NewTicker(time.Second) -- GitLab From d5f4dba7e019d6704b8b257325a7ed0ee7aa213d Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Wed, 20 Jan 2021 09:29:13 -0500 Subject: [PATCH 026/194] new deployment configuration to enable/disable authentication & authorization --- .meepctl-repocfg.yaml | 13 +-- charts/grafana/values.yaml | 2 +- charts/meep-gis-engine/values-template.yaml | 5 +- charts/meep-loc-serv/values-template.yaml | 5 +- .../meep-metrics-engine/values-template.yaml | 5 +- charts/meep-mg-manager/values-template.yaml | 5 +- charts/meep-mon-engine/values.yaml | 6 +- charts/meep-platform-ctrl/values.yaml | 5 +- charts/meep-rnis/values-template.yaml | 5 +- charts/meep-sandbox-ctrl/values-template.yaml | 5 +- charts/meep-virt-engine/values.yaml | 4 +- charts/meep-wais/values-template.yaml | 5 +- .../meep-virt-engine/server/chart-template.go | 4 +- .../meep-virt-engine/server/virt-engine.go | 12 +-- go-apps/meepctl/cmd/deploy.go | 82 ++++++++++++------- go-apps/meepctl/cmd/version.go | 2 +- go-apps/meepctl/utils/config.go | 2 +- 17 files changed, 96 insertions(+), 71 deletions(-) diff --git a/.meepctl-repocfg.yaml b/.meepctl-repocfg.yaml index 160126d60..129079b78 100644 --- a/.meepctl-repocfg.yaml +++ b/.meepctl-repocfg.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -version: 1.6.0 +version: 1.6.2 repo: name: AdvantEDGE @@ -47,6 +47,9 @@ repo: # authentication & authorization config auth: + # enable authentication & authorization + enabled: false + # Session config session: # session encryption key k8s secret (data: encryption-key) key-secret: meep-session @@ -96,15 +99,15 @@ repo: # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-auth-svc.yaml # enable meepctl build - build: true + build: false # enable meepctl dockerize - dockerize: true + dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # supports code coverage measurement when built in codecov mode codecov: true # supports linting - lint: true + lint: false # location of API specification api: go-apps/meep-auth-svc/api/swagger.yaml # AdvantEDGE resources included in Docker container image diff --git a/charts/grafana/values.yaml b/charts/grafana/values.yaml index 684cb30ad..f4f99fca2 100755 --- a/charts/grafana/values.yaml +++ b/charts/grafana/values.yaml @@ -123,8 +123,8 @@ ingress: enabled: true annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=grafana kubernetes.io/ingress.class: nginx + # nginx.ingress.kubernetes.io/auth-url: <-- set by 'meepctl deploy' when auth enabled labels: {} path: /grafana(/|$)(.*) hosts: diff --git a/charts/meep-gis-engine/values-template.yaml b/charts/meep-gis-engine/values-template.yaml index fe8fdc2a2..f42bcd55e 100644 --- a/charts/meep-gis-engine/values-template.yaml +++ b/charts/meep-gis-engine/values-template.yaml @@ -16,7 +16,6 @@ image: pullPolicy: Always env: MEEP_SANDBOX_NAME: {{ .SandboxName }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: name: meep-gis-engine @@ -32,9 +31,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-gis-engine&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/gis(/|$)(.*)$ /gis/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-gis-engine&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/charts/meep-loc-serv/values-template.yaml b/charts/meep-loc-serv/values-template.yaml index 91fabe453..3ec8e42f8 100644 --- a/charts/meep-loc-serv/values-template.yaml +++ b/charts/meep-loc-serv/values-template.yaml @@ -17,7 +17,6 @@ image: env: MEEP_SANDBOX_NAME: {{ .SandboxName }} MEEP_HOST_URL: {{ .HostUrl }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: name: meep-loc-serv @@ -33,9 +32,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-loc-serv&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/location(/|$)(.*)$ /location/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-loc-serv&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/charts/meep-metrics-engine/values-template.yaml b/charts/meep-metrics-engine/values-template.yaml index 4653e0c5a..09a008bca 100644 --- a/charts/meep-metrics-engine/values-template.yaml +++ b/charts/meep-metrics-engine/values-template.yaml @@ -17,7 +17,6 @@ image: env: MEEP_SANDBOX_NAME: {{ .SandboxName }} MEEP_HOST_URL: {{ .HostUrl }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: name: meep-metrics-engine @@ -33,9 +32,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-metrics-engine&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/metrics(/|$)(.*)$ /metrics/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-metrics-engine&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/charts/meep-mg-manager/values-template.yaml b/charts/meep-mg-manager/values-template.yaml index 0043bc1af..5e2ca6351 100644 --- a/charts/meep-mg-manager/values-template.yaml +++ b/charts/meep-mg-manager/values-template.yaml @@ -24,7 +24,6 @@ image: pullPolicy: Always env: MEEP_SANDBOX_NAME: {{ .SandboxName }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: name: meep-mg-manager @@ -40,9 +39,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-mg-manager&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/mgm(/|$)(.*)$ /mgm/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-mg-manager&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/charts/meep-mon-engine/values.yaml b/charts/meep-mon-engine/values.yaml index 6b6bdf353..4af43fcab 100644 --- a/charts/meep-mon-engine/values.yaml +++ b/charts/meep-mon-engine/values.yaml @@ -28,9 +28,7 @@ image: MEEP_CORE_PODS: "" MEEP_SANDBOX_PODS: "" envSecret: - MEEP_SESSION_KEY: - name: meep-session - key: encryption-key + service: type: ClusterIP port: 80 @@ -43,7 +41,7 @@ ingress: - /mon-engine annotations: kubernetes.io/ingress.class: nginx - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-mon-engine + # nginx.ingress.kubernetes.io/auth-url: <-- set by 'meepctl deploy' when auth enabled codecov: enabled: false diff --git a/charts/meep-platform-ctrl/values.yaml b/charts/meep-platform-ctrl/values.yaml index bd0820819..1601874c2 100644 --- a/charts/meep-platform-ctrl/values.yaml +++ b/charts/meep-platform-ctrl/values.yaml @@ -25,9 +25,6 @@ image: pullPolicy: Always env: envSecret: - MEEP_SESSION_KEY: - name: meep-session - key: encryption-key service: type: ClusterIP @@ -42,11 +39,11 @@ ingress: - /platform-ctrl annotations: kubernetes.io/ingress.class: nginx - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-platform-ctrl nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/api$ $scheme://$http_host/api/ permanent; rewrite ^/alt$ $scheme://$http_host/alt/ permanent; rewrite ^/alt/api$ $scheme://$http_host/alt/api/ permanent; + # nginx.ingress.kubernetes.io/auth-url: <-- set by 'meepctl deploy' when auth enabled labels: {} tls: diff --git a/charts/meep-rnis/values-template.yaml b/charts/meep-rnis/values-template.yaml index 174aa4896..e831bb076 100644 --- a/charts/meep-rnis/values-template.yaml +++ b/charts/meep-rnis/values-template.yaml @@ -17,7 +17,6 @@ image: env: MEEP_SANDBOX_NAME: {{ .SandboxName }} MEEP_HOST_URL: {{ .HostUrl }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: name: meep-rnis @@ -33,9 +32,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-rnis&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/rni(/|$)(.*)$ /rni/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-rnis&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/charts/meep-sandbox-ctrl/values-template.yaml b/charts/meep-sandbox-ctrl/values-template.yaml index 510fca295..e2bef7cbe 100644 --- a/charts/meep-sandbox-ctrl/values-template.yaml +++ b/charts/meep-sandbox-ctrl/values-template.yaml @@ -27,7 +27,6 @@ image: env: MEEP_SANDBOX_NAME: {{ .SandboxName }} MEEP_HOST_URL: {{ .HostUrl }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: type: ClusterIP @@ -44,13 +43,15 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-sandbox-ctrl&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/api$ $scheme://$http_host/{{ .SandboxName }}/api/ permanent; rewrite ^/{{ .SandboxName }}/alt/api$ $scheme://$http_host/{{ .SandboxName }}/alt/api/ permanent; rewrite ^/{{ .SandboxName }}/api(/|$)(.*)$ /api/$2 break; rewrite ^/{{ .SandboxName }}/alt/api(/|$)(.*)$ /alt/api/$2 break; rewrite ^/{{ .SandboxName }}/sandbox-ctrl(/|$)(.*)$ /sandbox-ctrl/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-sandbox-ctrl&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/charts/meep-virt-engine/values.yaml b/charts/meep-virt-engine/values.yaml index b8e21c80e..297ac0133 100644 --- a/charts/meep-virt-engine/values.yaml +++ b/charts/meep-virt-engine/values.yaml @@ -29,10 +29,8 @@ image: MEEP_USER_SWAGGER: "false" MEEP_USER_SWAGGER_DIR: "/path/to/user/swagger" MEEP_HTTPS_ONLY: "false" + MEEP_AUTH_ENABLED: "\"false\"" envSecret: - MEEP_SESSION_KEY: - name: meep-session - key: encryption-key service: type: ClusterIP diff --git a/charts/meep-wais/values-template.yaml b/charts/meep-wais/values-template.yaml index 8a950a82e..79b32a640 100644 --- a/charts/meep-wais/values-template.yaml +++ b/charts/meep-wais/values-template.yaml @@ -17,7 +17,6 @@ image: env: MEEP_SANDBOX_NAME: {{ .SandboxName }} MEEP_HOST_URL: {{ .HostUrl }} - MEEP_SESSION_KEY: {{ .SessionKey }} service: name: meep-wais @@ -33,9 +32,11 @@ ingress: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} - nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-wais&sbox={{ .SandboxName }} nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/{{ .SandboxName }}/wai(/|$)(.*)$ /wai/$2 break; + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-wais&sbox={{ .SandboxName }} + {{- end }} labels: {} tls: diff --git a/go-apps/meep-virt-engine/server/chart-template.go b/go-apps/meep-virt-engine/server/chart-template.go index c6577ec3c..2cbf77ac3 100644 --- a/go-apps/meep-virt-engine/server/chart-template.go +++ b/go-apps/meep-virt-engine/server/chart-template.go @@ -124,8 +124,8 @@ type SandboxTemplate struct { HostUrl string UserSwagger string UserSwaggerDir string - SessionKey string HttpsOnly bool + AuthEnabled bool } // Service map @@ -542,8 +542,8 @@ func generateSandboxCharts(sandboxName string) (charts []helm.Chart, err error) sandboxTemplate.HostUrl = ve.hostUrl sandboxTemplate.UserSwagger = ve.userSwagger sandboxTemplate.UserSwaggerDir = ve.userSwaggerDir - sandboxTemplate.SessionKey = ve.sessionKey sandboxTemplate.HttpsOnly = ve.httpsOnly + sandboxTemplate.AuthEnabled = ve.authEnabled // Create sandbox charts for pod := range ve.sboxPods { diff --git a/go-apps/meep-virt-engine/server/virt-engine.go b/go-apps/meep-virt-engine/server/virt-engine.go index 4fae097ec..925209ffd 100644 --- a/go-apps/meep-virt-engine/server/virt-engine.go +++ b/go-apps/meep-virt-engine/server/virt-engine.go @@ -49,8 +49,8 @@ type VirtEngine struct { hostUrl string userSwagger string userSwaggerDir string - sessionKey string httpsOnly bool + authEnabled bool handlerId int sboxPods map[string]string } @@ -115,11 +115,13 @@ func Init() (err error) { } log.Info("MEEP_HTTPS_ONLY: ", httpsOnlyStr) - // Retrieve Session Encryption Key from environment variable - ve.sessionKey = strings.TrimSpace(os.Getenv("MEEP_SESSION_KEY")) - if ve.sessionKey == "" { - log.Warn("MEEP_SESSION_KEY not found") + // Retrieve Auth mode from environment variable + authEnabledStr := strings.TrimSpace(os.Getenv("MEEP_AUTH_ENABLED")) + authEnabled, err := strconv.ParseBool(authEnabledStr) + if err == nil { + ve.authEnabled = authEnabled } + log.Info("MEEP_AUTH_ENABLED: ", authEnabledStr) // Create message queue ve.mqGlobal, err = mq.NewMsgQueue(mq.GetGlobalName(), moduleName, moduleNamespace, redisAddr) diff --git a/go-apps/meepctl/cmd/deploy.go b/go-apps/meepctl/cmd/deploy.go index 7d31041e8..74b4f5128 100644 --- a/go-apps/meepctl/cmd/deploy.go +++ b/go-apps/meepctl/cmd/deploy.go @@ -173,7 +173,6 @@ func deployCore(cobraCmd *cobra.Command) { for _, app := range deployData.coreApps { chart := deployData.gitdir + "/" + utils.RepoCfg.GetString("repo.core.go-apps."+app+".chart") - sessionKeySecret := utils.RepoCfg.GetString("repo.deployment.auth.session.key-secret") codecov := utils.RepoCfg.GetBool("repo.core.go-apps." + app + ".codecov") userFe := utils.RepoCfg.GetBool("repo.deployment.user.frontend") userSwagger := utils.RepoCfg.GetBool("repo.deployment.user.swagger") @@ -182,9 +181,6 @@ func deployCore(cobraCmd *cobra.Command) { // Set core flags coreFlags := utils.HelmFlags(flags, "--set", "image.repository="+deployData.registry+"/"+app) coreFlags = utils.HelmFlags(coreFlags, "--set", "image.tag="+deployData.tag) - if sessionKeySecret != "" { - coreFlags = utils.HelmFlags(coreFlags, "--set", "image.envSecret.MEEP_SESSION_KEY.name="+sessionKeySecret) - } if deployData.codecov && codecov { coreFlags = utils.HelmFlags(coreFlags, "--set", "codecov.enabled=true") coreFlags = utils.HelmFlags(coreFlags, "--set", "codecov.location="+deployData.workdir+"/codecov/"+app) @@ -214,6 +210,8 @@ func deployDep(cobraCmd *cobra.Command) { func deployRunScriptsAndGetFlags(targetName string, chart string, cobraCmd *cobra.Command) [][]string { var flags [][]string + authUrlAnnotation := "ingress.annotations.nginx\\.ingress\\.kubernetes\\.io/auth-url" + authUrl := "https://$http_host/auth/v1/authenticate" userValueDir := deployData.workdir + "/user/values" @@ -236,18 +234,19 @@ func deployRunScriptsAndGetFlags(targetName string, chart string, cobraCmd *cobr // Service-specific flags switch targetName { + + // Dependency Pods case "meep-couchdb": flags = utils.HelmFlags(flags, "--set", "persistentVolume.location="+deployData.workdir+"/couchdb/") - case "meep-open-map-tiles": - deploySetOmtConfig(chart, cobraCmd) - flags = utils.HelmFlags(flags, "--set", "persistentVolume.location="+deployData.workdir+"/omt/") - case "meep-postgis": - flags = utils.HelmFlags(flags, "--set", "persistence.location="+deployData.workdir+"/postgis/") case "meep-docker-registry": deployCreateRegistryCerts(chart, cobraCmd) flags = utils.HelmFlags(flags, "--set", "persistence.location="+deployData.workdir+"/docker-registry/") case "meep-grafana": flags = utils.HelmFlags(flags, "--set", "persistentVolume.location="+deployData.workdir+"/grafana/") + authEnabled := utils.RepoCfg.GetBool("repo.deployment.auth.enabled") + if authEnabled { + flags = utils.HelmFlags(flags, "--set", authUrlAnnotation+"="+authUrl+"?svc=grafana") + } case "meep-influxdb": flags = utils.HelmFlags(flags, "--set", "persistence.location="+deployData.workdir+"/influxdb/") case "meep-ingress": @@ -270,27 +269,18 @@ func deployRunScriptsAndGetFlags(targetName string, chart string, cobraCmd *cobr flags = utils.HelmFlags(flags, "--set", "controller.service.nodePorts.http="+httpPort) flags = utils.HelmFlags(flags, "--set", "controller.service.nodePorts.https="+httpsPort) } - case "meep-ingress-certs": - // Deploy Lets-Encrypt or self-signed Certificates - ca := utils.RepoCfg.GetString("repo.deployment.ingress.ca") - switch ca { - case "lets-encrypt": - host := utils.RepoCfg.GetString("repo.deployment.ingress.host") - prod := utils.RepoCfg.GetBool("repo.deployment.ingress.le-server-prod") - flags = utils.HelmFlags(flags, "--set", "letsEncrypt.enabled=true") - flags = utils.HelmFlags(flags, "--set", "letsEncrypt.tls.host="+host) - flags = utils.HelmFlags(flags, "--set", "letsEncrypt.acme.prod="+strconv.FormatBool(prod)) - case "self-signed": - deployCreateIngressCerts(chart, cobraCmd) - default: - // none - } - case "meep-mon-engine": - monEngineTarget := "repo.core.go-apps.meep-mon-engine" - flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_DEPENDENCY_PODS="+getPodList(monEngineTarget+".dependency-pods")) - flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_CORE_PODS="+getPodList(monEngineTarget+".core-pods")) - flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_SANDBOX_PODS="+getPodList(monEngineTarget+".sandbox-pods")) + case "meep-open-map-tiles": + deploySetOmtConfig(chart, cobraCmd) + flags = utils.HelmFlags(flags, "--set", "persistentVolume.location="+deployData.workdir+"/omt/") + case "meep-postgis": + flags = utils.HelmFlags(flags, "--set", "persistence.location="+deployData.workdir+"/postgis/") + + // Core pods case "meep-auth-svc": + sessionKeySecret := utils.RepoCfg.GetString("repo.deployment.auth.session.key-secret") + if sessionKeySecret != "" { + flags = utils.HelmFlags(flags, "--set", "image.envSecret.MEEP_SESSION_KEY.name="+sessionKeySecret) + } hostName := utils.RepoCfg.GetString("repo.deployment.ingress.host") flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HOST_URL=https://"+hostName) maxSessions := utils.RepoCfg.GetString("repo.deployment.auth.session.max-sessions") @@ -331,18 +321,48 @@ func deployRunScriptsAndGetFlags(targetName string, chart string, cobraCmd *cobr flags = utils.HelmFlags(flags, "--set", "image.envSecret.MEEP_OAUTH_GITLAB_SECRET.name="+secret) } } + case "meep-ingress-certs": + // Deploy Lets-Encrypt or self-signed Certificates + ca := utils.RepoCfg.GetString("repo.deployment.ingress.ca") + switch ca { + case "lets-encrypt": + host := utils.RepoCfg.GetString("repo.deployment.ingress.host") + prod := utils.RepoCfg.GetBool("repo.deployment.ingress.le-server-prod") + flags = utils.HelmFlags(flags, "--set", "letsEncrypt.enabled=true") + flags = utils.HelmFlags(flags, "--set", "letsEncrypt.tls.host="+host) + flags = utils.HelmFlags(flags, "--set", "letsEncrypt.acme.prod="+strconv.FormatBool(prod)) + case "self-signed": + deployCreateIngressCerts(chart, cobraCmd) + default: + // none + } + case "meep-mon-engine": + authEnabled := utils.RepoCfg.GetBool("repo.deployment.auth.enabled") + if authEnabled { + flags = utils.HelmFlags(flags, "--set", authUrlAnnotation+"="+authUrl+"?svc=meep-mon-engine") + } + monEngineTarget := "repo.core.go-apps.meep-mon-engine" + flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_DEPENDENCY_PODS="+getPodList(monEngineTarget+".dependency-pods")) + flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_CORE_PODS="+getPodList(monEngineTarget+".core-pods")) + flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_SANDBOX_PODS="+getPodList(monEngineTarget+".sandbox-pods")) + case "meep-platform-ctrl": + authEnabled := utils.RepoCfg.GetBool("repo.deployment.auth.enabled") + if authEnabled { + flags = utils.HelmFlags(flags, "--set", authUrlAnnotation+"="+authUrl+"?svc=meep-platform-ctrl") + } case "meep-virt-engine": + authEnabled := utils.RepoCfg.GetBool("repo.deployment.auth.enabled") + flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_AUTH_ENABLED=\""+strconv.FormatBool(authEnabled)+"\"") virtEngineTarget := "repo.core.go-apps.meep-virt-engine" hostName := utils.RepoCfg.GetString("repo.deployment.ingress.host") userSwagger := utils.RepoCfg.GetBool("repo.deployment.user.swagger") flags = utils.HelmFlags(flags, "--set", "persistence.location="+deployData.workdir+"/virt-engine") flags = utils.HelmFlags(flags, "--set", "user.values.location="+deployData.workdir+"/user/values") flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_SANDBOX_PODS="+getPodList(virtEngineTarget+".sandbox-pods")) + flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HTTPS_ONLY=\""+strconv.FormatBool(httpsOnly)+"\"") if httpsOnly { - flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HTTPS_ONLY=\"true\"") flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HOST_URL=https://"+hostName) } else { - flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HTTPS_ONLY=\"false\"") flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_HOST_URL=http://"+hostName) } flags = utils.HelmFlags(flags, "--set", "image.env.MEEP_USER_SWAGGER=\""+strconv.FormatBool(userSwagger)+"\"") diff --git a/go-apps/meepctl/cmd/version.go b/go-apps/meepctl/cmd/version.go index a25e77e5d..d8606be78 100644 --- a/go-apps/meepctl/cmd/version.go +++ b/go-apps/meepctl/cmd/version.go @@ -41,7 +41,7 @@ type versionInfo struct { BuildID string `json:"build,omitempty"` } -const meepctlVersion = "1.6.0" +const meepctlVersion = "1.6.2" const na = "NA" const versionDesc = `Display version information diff --git a/go-apps/meepctl/utils/config.go b/go-apps/meepctl/utils/config.go index 158ebeae7..3347f2e4f 100644 --- a/go-apps/meepctl/utils/config.go +++ b/go-apps/meepctl/utils/config.go @@ -31,7 +31,7 @@ import ( yaml "gopkg.in/yaml.v2" ) -const configVersion = "1.6.0" +const configVersion = "1.6.2" const defaultNotSet = "not set" -- GitLab From 3df7633066dd4c6534db58406ca4659d63399dab Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Wed, 20 Jan 2021 15:42:27 -0500 Subject: [PATCH 027/194] minor deployment fixes --- charts/meep-auth-svc/values.yaml | 7 + config/permissions.yaml | 6 +- go-apps/meep-auth-svc/server/auth-svc.go | 32 +- go-packages/meep-sessions/session-mgr.go | 60 -- .../meep-auth-svc-client/package-lock.json | 594 ++++++++++++++++++ 5 files changed, 616 insertions(+), 83 deletions(-) create mode 100644 js-packages/meep-auth-svc-client/package-lock.json diff --git a/charts/meep-auth-svc/values.yaml b/charts/meep-auth-svc/values.yaml index 0dacf7f2b..df8a9c79a 100644 --- a/charts/meep-auth-svc/values.yaml +++ b/charts/meep-auth-svc/values.yaml @@ -61,8 +61,15 @@ ingress: - name: '' paths: - /auth + # Deprecated endpoint support + - /platform-ctrl/v1/authorize + - /platform-ctrl/v1/login + - /platform-ctrl/v1/logout + - /platform-ctrl/v1/watchdog annotations: kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/configuration-snippet: | + rewrite ^/platform-ctrl(/|$)(.*)$ /auth/$2 break; labels: {} tls: diff --git a/config/permissions.yaml b/config/permissions.yaml index 0ef0ece6e..12f61d57a 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -62,7 +62,7 @@ fileservers: # Grafana (3rd Party) #------------------------------ - name: 'grafana' - path: '/grafana/' + path: '/grafana' mode: 'verify' roles: admin: 'allow' @@ -206,7 +206,7 @@ services: # Location Service (Sbox) #------------------------------ - name: 'meep-loc-serv' - path: '/location/v1' + path: '/location/v2' sbox: true default: mode: 'allow' @@ -484,7 +484,7 @@ services: mode: 'verify' roles: admin: 'allow' - user: 'block' + user: 'allow' - name: 'CreateReplayFile' path: '/replay/{name}' method: 'POST' diff --git a/go-apps/meep-auth-svc/server/auth-svc.go b/go-apps/meep-auth-svc/server/auth-svc.go index c76c7aa3f..d5bd90154 100644 --- a/go-apps/meep-auth-svc/server/auth-svc.go +++ b/go-apps/meep-auth-svc/server/auth-svc.go @@ -85,16 +85,16 @@ type Endpoint struct { Roles map[string]string `yaml:"roles"` } type Service struct { - Name string `yaml:"name"` - Path string `yaml:"path"` - Sbox bool `yaml:"sbox"` - Default *Permission `yaml:"default"` - Endpoints []*Endpoint `yaml:"endpoints"` + Name string `yaml:"name"` + Path string `yaml:"path"` + Sbox bool `yaml:"sbox"` + Default Permission `yaml:"default"` + Endpoints []Endpoint `yaml:"endpoints"` } type PermissionsConfig struct { - Default *Permission `yaml:"default"` - Fileservers []*Fileserver `yaml:"fileservers"` - Services []*Service `yaml:"services"` + Default Permission `yaml:"default"` + Fileservers []Fileserver `yaml:"fileservers"` + Services []Service `yaml:"services"` } // Auth Service types @@ -300,7 +300,7 @@ func cachePermissions() { authSvc.cache.Default = &Permission{Mode: sm.ModeAllow} return } - // log.Info(fmt.Sprintf("%+v\n", config)) + fmt.Printf("%+v\n", config) // Parse & cache permissions from config file // IMPORTANT NOTE: Order is important to prevent prefix matches from running first @@ -310,7 +310,7 @@ func cachePermissions() { } func cacheDefaultPermission(cfg *PermissionsConfig) { - authSvc.cache.Default = cfg.Default + authSvc.cache.Default = &cfg.Default if authSvc.cache.Default == nil { log.Warn("Failed to retrieve default permission") log.Warn("Granting full API access for all roles by default") @@ -354,13 +354,12 @@ func cacheServicePermissions(cfg *PermissionsConfig) { } routes = append(routes, route) } - // fmt.Printf("%+v\n", svcMap) // Default service permissions // IMPORTANT NOTE: This prefix route must be added after the service endpoint routes var permission *Permission if svc.Default.Mode != "" { - permission := new(Permission) + permission = new(Permission) permission.Roles = make(map[string]string) permission.Mode = svc.Default.Mode for role, access := range svc.Default.Roles { @@ -540,8 +539,7 @@ func asAuthenticate(w http.ResponseWriter, r *http.Request) { if authSvc.router.Match(r, &match) { routeName := match.Route.GetName() sboxName = match.Vars["sbox"] - - log.Error("routeName: ", routeName, " sboxName: ", sboxName) + log.Debug("routeName: ", routeName, " sboxName: ", sboxName) // Check service-specific routes if svcName != "" { @@ -606,12 +604,6 @@ func asAuthenticate(w http.ResponseWriter, r *http.Request) { // Allow request w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) - - // Invoke handler - // handler.ServeHTTP(w, r) - // handler(w, r) - - // authSvc.router.ServeHTTP(w, r) } func asAuthorize(w http.ResponseWriter, r *http.Request) { diff --git a/go-packages/meep-sessions/session-mgr.go b/go-packages/meep-sessions/session-mgr.go index 978d2ff0e..9ec86f2aa 100644 --- a/go-packages/meep-sessions/session-mgr.go +++ b/go-packages/meep-sessions/session-mgr.go @@ -18,12 +18,9 @@ package sessions import ( "errors" - "net/http" - "strings" "time" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" - "github.com/gorilla/mux" ) type SessionTimeoutHandler func(*Session) @@ -78,63 +75,6 @@ func (sm *SessionMgr) GetPermissionStore() *PermissionStore { return sm.ps } -// Authorizer - Authorization handler for API access -func (sm *SessionMgr) Authorizer(inner http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - - // Get route access permissions - permission, err := sm.ps.Get(sm.service, strings.ToLower(mux.CurrentRoute(r).GetName())) - if err != nil || permission == nil { - permission, err = sm.ps.GetDefaultPermission() - if err != nil || permission == nil { - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - } - } - - // Handle according to permission mode - switch permission.Mode { - case ModeBlock: - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - case ModeAllow: - inner.ServeHTTP(w, r) - return - case ModeVerify: - // Retrieve user session, if any - session, err := sm.ss.Get(r) - if err != nil || session == nil { - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - } - - // Verify role permissions - role := session.Role - if role == "" { - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - } - access := permission.RolePermissions[role] - if access != AccessGranted { - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - } - - // For non-admin users, verify session sandbox matches service sandbox, if any - if session.Role != RoleAdmin && sm.sboxName != "" && sm.sboxName != session.Sandbox { - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - } - - inner.ServeHTTP(w, r) - return - default: - http.Error(w, "Unauthorized", http.StatusUnauthorized) - return - } - }) -} - // StartSessionWatchdog - Start Session Watchdog func (sm *SessionMgr) StartSessionWatchdog(handler SessionTimeoutHandler) error { // Validate input diff --git a/js-packages/meep-auth-svc-client/package-lock.json b/js-packages/meep-auth-svc-client/package-lock.json new file mode 100644 index 000000000..5724b2f98 --- /dev/null +++ b/js-packages/meep-auth-svc-client/package-lock.json @@ -0,0 +1,594 @@ +{ + "name": "advant_edge_auth_service_rest_api", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "dev": true + }, + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "dev": true + }, + "expect.js": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", + "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "dev": true, + "requires": { + "samsam": "~1.1" + } + }, + "formidable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "glob": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "integrity": "sha1-4xPusknHr/qlxHUoaw4RW1mDlGc=", + "dev": true, + "requires": { + "graceful-fs": "~2.0.0", + "inherits": "2", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=", + "dev": true + }, + "growl": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", + "integrity": "sha1-Sy3sjZB+k9szZiTc7AGDUC+MlCg=", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.4.tgz", + "integrity": "sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "dev": true, + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" + }, + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "dev": true + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", + "dev": true + } + } + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "requires": { + "mime-db": "1.45.0" + } + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.3.4.tgz", + "integrity": "sha1-himm+wRPLSJapLgaKuLQAWmesmY=", + "dev": true, + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.3", + "growl": "1.8.1", + "jade": "0.26.3", + "mkdirp": "0.5.0", + "supports-color": "1.2.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "sinon": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.3.tgz", + "integrity": "sha1-RNZLx0jQI4gARsFUPO/Oo0xH0X4=", + "dev": true, + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "util": ">=0.10.3 <1" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "superagent": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.7.0.tgz", + "integrity": "sha512-/8trxO6NbLx4YXb7IeeFTSmsQ35pQBiTBsLNvobZx7qBzBeHYvKCyIIhW2gNcWbLzYxPAjdgFbiepd8ypwC0Gw==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", + "dev": true + }, + "util": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + } + } +} -- GitLab From 612eef3b65b7114b3b8705e318917f19922311a1 Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Thu, 21 Jan 2021 16:26:13 -0500 Subject: [PATCH 028/194] regenerated API code & doc --- .../Apis/NotificationsApi.md | 2 +- docs/api-metric-engine-notif/README.md | 2 +- .../Apis/StateTransferApi.md | 2 +- docs/api-mg-manager-notif/README.md | 2 +- .../.openapi-generator/FILES | 1 - .../Apis/UserAuthenticationApi.md | 144 ------------------ docs/api-platform-ctrl/README.md | 5 - examples/demo1/src/demo-server/go/README.md | 2 +- examples/demo1/src/iperf-proxy/go/README.md | 2 +- go-apps/meep-auth-svc/server/README.md | 2 +- go-apps/meep-gis-engine/server/README.md | 2 +- go-apps/meep-gis-engine/server/routers.go | 1 + go-apps/meep-loc-serv/server/README.md | 2 +- go-apps/meep-loc-serv/server/api_location.go | 66 +------- go-apps/meep-loc-serv/server/logger.go | 2 +- .../server/model_connection_type.go | 2 +- .../server/model_entering_leaving_criteria.go | 2 +- .../server/model_operation_status.go | 2 +- .../server/model_user_event_type.go | 2 +- .../meep-metrics-engine/server/v2/README.md | 2 +- go-apps/meep-mg-manager/server/README.md | 2 +- go-apps/meep-mon-engine/server/README.md | 2 +- go-apps/meep-mon-engine/server/routers.go | 1 + go-apps/meep-platform-ctrl/server/README.md | 2 +- go-apps/meep-platform-ctrl/server/routers.go | 1 + go-apps/meep-rnis/server/README.md | 2 +- go-apps/meep-rnis/server/api_rni.go | 2 +- go-apps/meep-rnis/server/logger.go | 2 +- .../model_one_of_inline_notification.go | 2 +- .../model_one_of_inline_subscription.go | 2 +- go-apps/meep-rnis/server/model_trigger.go | 2 +- go-apps/meep-rnis/server/model_trigger_nr.go | 2 +- go-apps/meep-rnis/server/routers.go | 2 +- go-apps/meep-sandbox-ctrl/server/README.md | 2 +- go-apps/meep-wais/server/README.md | 2 +- go-apps/meep-wais/server/api_wai.go | 2 +- go-apps/meep-wais/server/logger.go | 2 +- .../model_one_of_inline_notification.go | 2 +- .../model_one_of_inline_subscription.go | 2 +- go-apps/meep-wais/server/routers.go | 2 +- go-packages/meep-gis-engine-client/.gitignore | 24 +++ .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-gis-engine-client/.travis.yml | 8 + .../.swagger-codegen/VERSION | 2 +- .../README.md | 2 +- .../api/swagger.yaml | 2 +- .../configuration.go | 2 +- .../docs/NotificationsApi.md | 2 +- go-packages/meep-mg-app-client/README.md | 2 +- .../meep-mg-app-client/api/swagger.yaml | 2 +- .../meep-mg-app-client/configuration.go | 2 +- .../docs/StateTransferApi.md | 2 +- .../meep-platform-ctrl-client/.gitignore | 24 +++ .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-platform-ctrl-client/.travis.yml | 8 + go-packages/meep-rnis-client/.gitignore | 24 +++ .../meep-rnis-client/.swagger-codegen-ignore | 23 +++ .../meep-rnis-client/.swagger-codegen/VERSION | 1 + go-packages/meep-rnis-client/.travis.yml | 8 + go-packages/meep-rnis-client/api/swagger.yaml | 15 +- go-packages/meep-rnis-client/docs/RniApi.md | 118 +------------- .../meep-rnis-client/docs/UnsupportedApi.md | 124 +++++++++++++++ .../model_inline_subscription.go | 2 +- go-packages/meep-rnis-client/model_trigger.go | 2 +- .../meep-rnis-client/model_trigger_nr.go | 2 +- .../meep-sandbox-ctrl-client/.gitignore | 24 +++ .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-sandbox-ctrl-client/.travis.yml | 8 + go-packages/meep-wais-client/.gitignore | 24 +++ .../meep-wais-client/.swagger-codegen-ignore | 23 +++ .../meep-wais-client/.swagger-codegen/VERSION | 1 + go-packages/meep-wais-client/.travis.yml | 8 + go-packages/meep-wais-client/api/swagger.yaml | 10 +- go-packages/meep-wais-client/docs/WaiApi.md | 2 +- .../model_inline_subscription.go | 2 +- .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-metrics-engine-client/.travis.yml | 7 + .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-mon-engine-client/.travis.yml | 7 + .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-platform-ctrl-client/.travis.yml | 7 + .../.swagger-codegen-ignore | 23 +++ .../.swagger-codegen/VERSION | 1 + .../meep-sandbox-ctrl-client/.travis.yml | 7 + 90 files changed, 595 insertions(+), 389 deletions(-) delete mode 100644 docs/api-platform-ctrl/Apis/UserAuthenticationApi.md create mode 100644 go-packages/meep-gis-engine-client/.gitignore create mode 100644 go-packages/meep-gis-engine-client/.swagger-codegen-ignore create mode 100644 go-packages/meep-gis-engine-client/.swagger-codegen/VERSION create mode 100644 go-packages/meep-gis-engine-client/.travis.yml create mode 100644 go-packages/meep-platform-ctrl-client/.gitignore create mode 100644 go-packages/meep-platform-ctrl-client/.swagger-codegen-ignore create mode 100644 go-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION create mode 100644 go-packages/meep-platform-ctrl-client/.travis.yml create mode 100644 go-packages/meep-rnis-client/.gitignore create mode 100644 go-packages/meep-rnis-client/.swagger-codegen-ignore create mode 100644 go-packages/meep-rnis-client/.swagger-codegen/VERSION create mode 100644 go-packages/meep-rnis-client/.travis.yml create mode 100644 go-packages/meep-rnis-client/docs/UnsupportedApi.md create mode 100644 go-packages/meep-sandbox-ctrl-client/.gitignore create mode 100644 go-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore create mode 100644 go-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION create mode 100644 go-packages/meep-sandbox-ctrl-client/.travis.yml create mode 100644 go-packages/meep-wais-client/.gitignore create mode 100644 go-packages/meep-wais-client/.swagger-codegen-ignore create mode 100644 go-packages/meep-wais-client/.swagger-codegen/VERSION create mode 100644 go-packages/meep-wais-client/.travis.yml create mode 100644 js-packages/meep-metrics-engine-client/.swagger-codegen-ignore create mode 100644 js-packages/meep-metrics-engine-client/.swagger-codegen/VERSION create mode 100644 js-packages/meep-metrics-engine-client/.travis.yml create mode 100644 js-packages/meep-mon-engine-client/.swagger-codegen-ignore create mode 100644 js-packages/meep-mon-engine-client/.swagger-codegen/VERSION create mode 100644 js-packages/meep-mon-engine-client/.travis.yml create mode 100644 js-packages/meep-platform-ctrl-client/.swagger-codegen-ignore create mode 100644 js-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION create mode 100644 js-packages/meep-platform-ctrl-client/.travis.yml create mode 100644 js-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore create mode 100644 js-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION create mode 100644 js-packages/meep-sandbox-ctrl-client/.travis.yml diff --git a/docs/api-metric-engine-notif/Apis/NotificationsApi.md b/docs/api-metric-engine-notif/Apis/NotificationsApi.md index 44ddfe762..098affaa3 100644 --- a/docs/api-metric-engine-notif/Apis/NotificationsApi.md +++ b/docs/api-metric-engine-notif/Apis/NotificationsApi.md @@ -1,6 +1,6 @@ # NotificationsApi -All URIs are relative to *http://localhost/metrics-notif/v2* +All URIs are relative to *http://localhost/sandboxname/metrics-notif/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-metric-engine-notif/README.md b/docs/api-metric-engine-notif/README.md index e5af8c762..8606477bf 100644 --- a/docs/api-metric-engine-notif/README.md +++ b/docs/api-metric-engine-notif/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *http://localhost/metrics-notif/v2* +All URIs are relative to *http://localhost/sandboxname/metrics-notif/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/docs/api-mg-manager-notif/Apis/StateTransferApi.md b/docs/api-mg-manager-notif/Apis/StateTransferApi.md index ac0e8542b..111b87485 100644 --- a/docs/api-mg-manager-notif/Apis/StateTransferApi.md +++ b/docs/api-mg-manager-notif/Apis/StateTransferApi.md @@ -1,6 +1,6 @@ # StateTransferApi -All URIs are relative to *http://mgm-notif/v1* +All URIs are relative to *http://localhost/sandboxname/mgm-notif/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/docs/api-mg-manager-notif/README.md b/docs/api-mg-manager-notif/README.md index 075ff713c..da6fb498e 100644 --- a/docs/api-mg-manager-notif/README.md +++ b/docs/api-mg-manager-notif/README.md @@ -3,7 +3,7 @@ ## Documentation for API Endpoints -All URIs are relative to *http://mgm-notif/v1* +All URIs are relative to *http://localhost/sandboxname/mgm-notif/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/docs/api-platform-ctrl/.openapi-generator/FILES b/docs/api-platform-ctrl/.openapi-generator/FILES index aa1202dac..2f643628d 100644 --- a/docs/api-platform-ctrl/.openapi-generator/FILES +++ b/docs/api-platform-ctrl/.openapi-generator/FILES @@ -1,7 +1,6 @@ .openapi-generator-ignore Apis/SandboxControlApi.md Apis/ScenarioConfigurationApi.md -Apis/UserAuthenticationApi.md Models/CellularDomainConfig.md Models/CellularPoaConfig.md Models/CpuConfig.md diff --git a/docs/api-platform-ctrl/Apis/UserAuthenticationApi.md b/docs/api-platform-ctrl/Apis/UserAuthenticationApi.md deleted file mode 100644 index 676d19cde..000000000 --- a/docs/api-platform-ctrl/Apis/UserAuthenticationApi.md +++ /dev/null @@ -1,144 +0,0 @@ -# UserAuthenticationApi - -All URIs are relative to *http://localhost/platform-ctrl/v1* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**authorize**](UserAuthenticationApi.md#authorize) | **GET** /authorize | OAuth authorization response endpoint -[**loginOAuth**](UserAuthenticationApi.md#loginOAuth) | **GET** /login | Initiate OAuth login procedure -[**loginUser**](UserAuthenticationApi.md#loginUser) | **POST** /login | Start a session -[**logoutUser**](UserAuthenticationApi.md#logoutUser) | **GET** /logout | Terminate a session -[**triggerWatchdog**](UserAuthenticationApi.md#triggerWatchdog) | **POST** /watchdog | Send heartbeat to watchdog - - - -# **authorize** -> authorize(code, state) - -OAuth authorization response endpoint - - Redirect URI endpoint for OAuth authorization responses. Starts a user session. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **code** | **String**| Temporary authorization code | [optional] [default to null] - **state** | **String**| User-provided random state | [optional] [default to null] - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: Not defined - - -# **loginOAuth** -> loginOAuth(provider) - -Initiate OAuth login procedure - - Start OAuth login procedure with provider - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **provider** | **String**| Oauth provider | [optional] [default to null] [enum: github, gitlab] - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: Not defined - - -# **loginUser** -> Sandbox loginUser(username, password) - -Start a session - - Start a session after authenticating user - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **username** | **String**| User Name | [optional] [default to null] - **password** | **String**| User Password | [optional] [default to null] - -### Return type - -[**Sandbox**](../Models/Sandbox.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: application/x-www-form-urlencoded -- **Accept**: application/json - - -# **logoutUser** -> logoutUser() - -Terminate a session - - Terminate a session - -### Parameters -This endpoint does not need any parameter. - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: Not defined - - -# **triggerWatchdog** -> triggerWatchdog() - -Send heartbeat to watchdog - - Send heartbeat to watchdog to keep session alive - -### Parameters -This endpoint does not need any parameter. - -### Return type - -null (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: Not defined - diff --git a/docs/api-platform-ctrl/README.md b/docs/api-platform-ctrl/README.md index db719054d..9d478bc0a 100644 --- a/docs/api-platform-ctrl/README.md +++ b/docs/api-platform-ctrl/README.md @@ -19,11 +19,6 @@ Class | Method | HTTP request | Description *ScenarioConfigurationApi* | [**getScenario**](Apis/ScenarioConfigurationApi.md#getscenario) | **GET** /scenarios/{name} | Get a specific scenario *ScenarioConfigurationApi* | [**getScenarioList**](Apis/ScenarioConfigurationApi.md#getscenariolist) | **GET** /scenarios | Get all scenarios *ScenarioConfigurationApi* | [**setScenario**](Apis/ScenarioConfigurationApi.md#setscenario) | **PUT** /scenarios/{name} | Update a scenario -*UserAuthenticationApi* | [**authorize**](Apis/UserAuthenticationApi.md#authorize) | **GET** /authorize | OAuth authorization response endpoint -*UserAuthenticationApi* | [**loginOAuth**](Apis/UserAuthenticationApi.md#loginoauth) | **GET** /login | Initiate OAuth login procedure -*UserAuthenticationApi* | [**loginUser**](Apis/UserAuthenticationApi.md#loginuser) | **POST** /login | Start a session -*UserAuthenticationApi* | [**logoutUser**](Apis/UserAuthenticationApi.md#logoutuser) | **GET** /logout | Terminate a session -*UserAuthenticationApi* | [**triggerWatchdog**](Apis/UserAuthenticationApi.md#triggerwatchdog) | **POST** /watchdog | Send heartbeat to watchdog diff --git a/examples/demo1/src/demo-server/go/README.md b/examples/demo1/src/demo-server/go/README.md index db6dfe102..677ef0efc 100644 --- a/examples/demo1/src/demo-server/go/README.md +++ b/examples/demo1/src/demo-server/go/README.md @@ -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: 2021-01-14T11:46:21.137-05:00 +- Build date: 2021-01-21T14:48:49.743-05:00 ### Running the server diff --git a/examples/demo1/src/iperf-proxy/go/README.md b/examples/demo1/src/iperf-proxy/go/README.md index 436a4875a..e0808f981 100644 --- a/examples/demo1/src/iperf-proxy/go/README.md +++ b/examples/demo1/src/iperf-proxy/go/README.md @@ -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: 2021-01-14T11:46:23.388-05:00 +- Build date: 2021-01-21T14:48:51.163-05:00 ### Running the server diff --git a/go-apps/meep-auth-svc/server/README.md b/go-apps/meep-auth-svc/server/README.md index 3597ba52a..26d4025de 100644 --- a/go-apps/meep-auth-svc/server/README.md +++ b/go-apps/meep-auth-svc/server/README.md @@ -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: 2021-01-14T16:56:07.637-05:00 +- Build date: 2021-01-21T14:48:48.458-05:00 ### Running the server diff --git a/go-apps/meep-gis-engine/server/README.md b/go-apps/meep-gis-engine/server/README.md index 908ae3555..19db99548 100644 --- a/go-apps/meep-gis-engine/server/README.md +++ b/go-apps/meep-gis-engine/server/README.md @@ -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: 2021-01-14T11:46:05.611-05:00 +- Build date: 2021-01-21T14:48:39.655-05:00 ### Running the server diff --git a/go-apps/meep-gis-engine/server/routers.go b/go-apps/meep-gis-engine/server/routers.go index a094832fa..16099e171 100644 --- a/go-apps/meep-gis-engine/server/routers.go +++ b/go-apps/meep-gis-engine/server/routers.go @@ -46,6 +46,7 @@ func NewRouter() *mux.Router { for _, route := range routes { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) + router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-loc-serv/server/README.md b/go-apps/meep-loc-serv/server/README.md index 123a6ceb4..035565bc3 100644 --- a/go-apps/meep-loc-serv/server/README.md +++ b/go-apps/meep-loc-serv/server/README.md @@ -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: 2.1.1 -- Build date: 2021-01-14T11:46:07.164-05:00[America/New_York] +- Build date: 2021-01-21T14:48:40.546180-05:00[America/Toronto] ### Running the server diff --git a/go-apps/meep-loc-serv/server/api_location.go b/go-apps/meep-loc-serv/server/api_location.go index f349b7e46..433d440ec 100644 --- a/go-apps/meep-loc-serv/server/api_location.go +++ b/go-apps/meep-loc-serv/server/api_location.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -35,70 +35,6 @@ func ApGET(w http.ResponseWriter, r *http.Request) { apGet(w, r) } -func AreaCircleSubDELETE(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func AreaCircleSubGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func AreaCircleSubListGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func AreaCircleSubPOST(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func AreaCircleSubPUT(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func DistanceGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func DistanceSubDELETE(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func DistanceSubGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func DistanceSubListGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func DistanceSubPOST(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func DistanceSubPUT(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func PeriodicSubDELETE(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func PeriodicSubGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func PeriodicSubListGET(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func PeriodicSubPOST(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - -func PeriodicSubPUT(w http.ResponseWriter, r *http.Request) { - notImplemented(w, r) -} - func UserTrackingSubDELETE(w http.ResponseWriter, r *http.Request) { userTrackingSubDelete(w, r) } diff --git a/go-apps/meep-loc-serv/server/logger.go b/go-apps/meep-loc-serv/server/logger.go index c17a823a6..40de951f8 100644 --- a/go-apps/meep-loc-serv/server/logger.go +++ b/go-apps/meep-loc-serv/server/logger.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_connection_type.go b/go-apps/meep-loc-serv/server/model_connection_type.go index db284faa1..5a4258c25 100644 --- a/go-apps/meep-loc-serv/server/model_connection_type.go +++ b/go-apps/meep-loc-serv/server/model_connection_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_entering_leaving_criteria.go b/go-apps/meep-loc-serv/server/model_entering_leaving_criteria.go index ed867675f..540d0905f 100644 --- a/go-apps/meep-loc-serv/server/model_entering_leaving_criteria.go +++ b/go-apps/meep-loc-serv/server/model_entering_leaving_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_operation_status.go b/go-apps/meep-loc-serv/server/model_operation_status.go index 8527f95a8..60d49d0ae 100644 --- a/go-apps/meep-loc-serv/server/model_operation_status.go +++ b/go-apps/meep-loc-serv/server/model_operation_status.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-loc-serv/server/model_user_event_type.go b/go-apps/meep-loc-serv/server/model_user_event_type.go index c47236680..5cdc29adc 100644 --- a/go-apps/meep-loc-serv/server/model_user_event_type.go +++ b/go-apps/meep-loc-serv/server/model_user_event_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Location Service REST API * - * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Location Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC013 Location API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf)

    The API is based on the Open Mobile Alliance's specification RESTful Network API for Zonal Presence

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-loc-serv](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-loc-serv)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about Users (UE) and Zone locations

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of Location API endpoints (see below) * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-metrics-engine/server/v2/README.md b/go-apps/meep-metrics-engine/server/v2/README.md index 01feb42b8..7196eed2a 100644 --- a/go-apps/meep-metrics-engine/server/v2/README.md +++ b/go-apps/meep-metrics-engine/server/v2/README.md @@ -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: 2021-01-14T11:46:00.276-05:00 +- Build date: 2021-01-21T14:48:36.678-05:00 ### Running the server diff --git a/go-apps/meep-mg-manager/server/README.md b/go-apps/meep-mg-manager/server/README.md index cd2839345..2cc79b85b 100644 --- a/go-apps/meep-mg-manager/server/README.md +++ b/go-apps/meep-mg-manager/server/README.md @@ -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: 2021-01-14T11:45:53.035-05:00 +- Build date: 2021-01-21T14:48:32.850-05:00 ### Running the server diff --git a/go-apps/meep-mon-engine/server/README.md b/go-apps/meep-mon-engine/server/README.md index 9ef82d3b8..3eef79d31 100644 --- a/go-apps/meep-mon-engine/server/README.md +++ b/go-apps/meep-mon-engine/server/README.md @@ -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: 2021-01-14T11:45:50.640-05:00 +- Build date: 2021-01-21T14:48:31.561-05:00 ### Running the server diff --git a/go-apps/meep-mon-engine/server/routers.go b/go-apps/meep-mon-engine/server/routers.go index 8b030832e..0cea20e02 100644 --- a/go-apps/meep-mon-engine/server/routers.go +++ b/go-apps/meep-mon-engine/server/routers.go @@ -46,6 +46,7 @@ func NewRouter() *mux.Router { for _, route := range routes { var handler http.Handler = route.HandlerFunc handler = Logger(handler, route.Name) + router. Methods(route.Method). Path(route.Pattern). diff --git a/go-apps/meep-platform-ctrl/server/README.md b/go-apps/meep-platform-ctrl/server/README.md index 257507805..6505da6bd 100644 --- a/go-apps/meep-platform-ctrl/server/README.md +++ b/go-apps/meep-platform-ctrl/server/README.md @@ -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: 2021-01-14T16:45:19.169-05:00 +- Build date: 2021-01-21T14:48:09.893-05:00 ### Running the server diff --git a/go-apps/meep-platform-ctrl/server/routers.go b/go-apps/meep-platform-ctrl/server/routers.go index 97c847500..5154c65c9 100644 --- a/go-apps/meep-platform-ctrl/server/routers.go +++ b/go-apps/meep-platform-ctrl/server/routers.go @@ -38,6 +38,7 @@ type Route struct { Pattern string HandlerFunc http.HandlerFunc } + type Routes []Route func NewRouter(priFe string, priSw string, altFe string, altSw string) *mux.Router { diff --git a/go-apps/meep-rnis/server/README.md b/go-apps/meep-rnis/server/README.md index edb2f18e9..2c45ab6f0 100644 --- a/go-apps/meep-rnis/server/README.md +++ b/go-apps/meep-rnis/server/README.md @@ -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: 2.1.1 -- Build date: 2021-01-14T11:46:11.824-05:00[America/New_York] +- Build date: 2021-01-21T14:48:43.268703-05:00[America/Toronto] ### Running the server diff --git a/go-apps/meep-rnis/server/api_rni.go b/go-apps/meep-rnis/server/api_rni.go index 21f6fe5e3..b101ab79f 100644 --- a/go-apps/meep-rnis/server/api_rni.go +++ b/go-apps/meep-rnis/server/api_rni.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/logger.go b/go-apps/meep-rnis/server/logger.go index 8dcce0e29..38e8cc8dc 100644 --- a/go-apps/meep-rnis/server/logger.go +++ b/go-apps/meep-rnis/server/logger.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_one_of_inline_notification.go b/go-apps/meep-rnis/server/model_one_of_inline_notification.go index 03b1f843c..0b58567ba 100644 --- a/go-apps/meep-rnis/server/model_one_of_inline_notification.go +++ b/go-apps/meep-rnis/server/model_one_of_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_one_of_inline_subscription.go b/go-apps/meep-rnis/server/model_one_of_inline_subscription.go index bf9a2a0a2..adac56421 100644 --- a/go-apps/meep-rnis/server/model_one_of_inline_subscription.go +++ b/go-apps/meep-rnis/server/model_one_of_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_trigger.go b/go-apps/meep-rnis/server/model_trigger.go index 210b9d664..e7fee27e8 100644 --- a/go-apps/meep-rnis/server/model_trigger.go +++ b/go-apps/meep-rnis/server/model_trigger.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_trigger_nr.go b/go-apps/meep-rnis/server/model_trigger_nr.go index eadbaeefa..5549d2a2f 100644 --- a/go-apps/meep-rnis/server/model_trigger_nr.go +++ b/go-apps/meep-rnis/server/model_trigger_nr.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/routers.go b/go-apps/meep-rnis/server/routers.go index 0a314b424..c6c595be7 100644 --- a/go-apps/meep-rnis/server/routers.go +++ b/go-apps/meep-rnis/server/routers.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-sandbox-ctrl/server/README.md b/go-apps/meep-sandbox-ctrl/server/README.md index dc6957d59..3af977fd6 100644 --- a/go-apps/meep-sandbox-ctrl/server/README.md +++ b/go-apps/meep-sandbox-ctrl/server/README.md @@ -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: 2021-01-14T11:45:48.426-05:00 +- Build date: 2021-01-21T14:48:30.266-05:00 ### Running the server diff --git a/go-apps/meep-wais/server/README.md b/go-apps/meep-wais/server/README.md index dafd005cd..eab325663 100644 --- a/go-apps/meep-wais/server/README.md +++ b/go-apps/meep-wais/server/README.md @@ -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: 2.1.1 -- Build date: 2021-01-14T11:46:17.024-05:00[America/New_York] +- Build date: 2021-01-21T14:48:46.111020-05:00[America/Toronto] ### Running the server diff --git a/go-apps/meep-wais/server/api_wai.go b/go-apps/meep-wais/server/api_wai.go index 47ce12380..23adf13a4 100644 --- a/go-apps/meep-wais/server/api_wai.go +++ b/go-apps/meep-wais/server/api_wai.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/logger.go b/go-apps/meep-wais/server/logger.go index 8d21f7bd2..b8244b9c0 100644 --- a/go-apps/meep-wais/server/logger.go +++ b/go-apps/meep-wais/server/logger.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_one_of_inline_notification.go b/go-apps/meep-wais/server/model_one_of_inline_notification.go index 3ba0b4cad..223afd544 100644 --- a/go-apps/meep-wais/server/model_one_of_inline_notification.go +++ b/go-apps/meep-wais/server/model_one_of_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/model_one_of_inline_subscription.go b/go-apps/meep-wais/server/model_one_of_inline_subscription.go index ec37554ba..4c18ff166 100644 --- a/go-apps/meep-wais/server/model_one_of_inline_subscription.go +++ b/go-apps/meep-wais/server/model_one_of_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-wais/server/routers.go b/go-apps/meep-wais/server/routers.go index 83610558a..c25b96488 100644 --- a/go-apps/meep-wais/server/routers.go +++ b/go-apps/meep-wais/server/routers.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-gis-engine-client/.gitignore b/go-packages/meep-gis-engine-client/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/go-packages/meep-gis-engine-client/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/go-packages/meep-gis-engine-client/.swagger-codegen-ignore b/go-packages/meep-gis-engine-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/go-packages/meep-gis-engine-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/go-packages/meep-gis-engine-client/.swagger-codegen/VERSION b/go-packages/meep-gis-engine-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/go-packages/meep-gis-engine-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/go-packages/meep-gis-engine-client/.travis.yml b/go-packages/meep-gis-engine-client/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/go-packages/meep-gis-engine-client/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/go-packages/meep-loc-serv-client/.swagger-codegen/VERSION b/go-packages/meep-loc-serv-client/.swagger-codegen/VERSION index 6795d4dc3..812aaafe6 100644 --- a/go-packages/meep-loc-serv-client/.swagger-codegen/VERSION +++ b/go-packages/meep-loc-serv-client/.swagger-codegen/VERSION @@ -1 +1 @@ -3.0.22 +3.0.22 \ No newline at end of file diff --git a/go-packages/meep-metrics-engine-notification-client/README.md b/go-packages/meep-metrics-engine-notification-client/README.md index 46a338734..fe42513b6 100644 --- a/go-packages/meep-metrics-engine-notification-client/README.md +++ b/go-packages/meep-metrics-engine-notification-client/README.md @@ -17,7 +17,7 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhost/metrics-notif/v2* +All URIs are relative to *https://localhost/sandboxname/metrics-notif/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/go-packages/meep-metrics-engine-notification-client/api/swagger.yaml b/go-packages/meep-metrics-engine-notification-client/api/swagger.yaml index 286af234c..b8e7c911c 100644 --- a/go-packages/meep-metrics-engine-notification-client/api/swagger.yaml +++ b/go-packages/meep-metrics-engine-notification-client/api/swagger.yaml @@ -14,7 +14,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "/metrics-notif/v2" +basePath: "/sandboxname/metrics-notif/v2" tags: - name: "notifications" consumes: diff --git a/go-packages/meep-metrics-engine-notification-client/configuration.go b/go-packages/meep-metrics-engine-notification-client/configuration.go index b0cb1d9ed..be10a05ae 100644 --- a/go-packages/meep-metrics-engine-notification-client/configuration.go +++ b/go-packages/meep-metrics-engine-notification-client/configuration.go @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhost/metrics-notif/v2", + BasePath: "https://localhost/sandboxname/metrics-notif/v2", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-metrics-engine-notification-client/docs/NotificationsApi.md b/go-packages/meep-metrics-engine-notification-client/docs/NotificationsApi.md index 621afcf84..20254ea5f 100644 --- a/go-packages/meep-metrics-engine-notification-client/docs/NotificationsApi.md +++ b/go-packages/meep-metrics-engine-notification-client/docs/NotificationsApi.md @@ -1,6 +1,6 @@ # \NotificationsApi -All URIs are relative to *https://localhost/metrics-notif/v2* +All URIs are relative to *https://localhost/sandboxname/metrics-notif/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-mg-app-client/README.md b/go-packages/meep-mg-app-client/README.md index 47287cc78..07b0b71c9 100644 --- a/go-packages/meep-mg-app-client/README.md +++ b/go-packages/meep-mg-app-client/README.md @@ -17,7 +17,7 @@ import "./client" ## Documentation for API Endpoints -All URIs are relative to *https://localhostmgm-notif/v1* +All URIs are relative to *https://localhost/sandboxname/mgm-notif/v1* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- diff --git a/go-packages/meep-mg-app-client/api/swagger.yaml b/go-packages/meep-mg-app-client/api/swagger.yaml index 6d354d380..a405601bf 100644 --- a/go-packages/meep-mg-app-client/api/swagger.yaml +++ b/go-packages/meep-mg-app-client/api/swagger.yaml @@ -14,7 +14,7 @@ info: license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" -basePath: "mgm-notif/v1" +basePath: "/sandboxname/mgm-notif/v1" tags: - name: "State Transfer" consumes: diff --git a/go-packages/meep-mg-app-client/configuration.go b/go-packages/meep-mg-app-client/configuration.go index d99777ff6..be76b61f3 100644 --- a/go-packages/meep-mg-app-client/configuration.go +++ b/go-packages/meep-mg-app-client/configuration.go @@ -75,7 +75,7 @@ type Configuration struct { func NewConfiguration() *Configuration { cfg := &Configuration{ - BasePath: "https://localhostmgm-notif/v1", + BasePath: "https://localhost/sandboxname/mgm-notif/v1", DefaultHeader: make(map[string]string), UserAgent: "Swagger-Codegen/1.0.0/go", } diff --git a/go-packages/meep-mg-app-client/docs/StateTransferApi.md b/go-packages/meep-mg-app-client/docs/StateTransferApi.md index c51850734..701c8a9b8 100644 --- a/go-packages/meep-mg-app-client/docs/StateTransferApi.md +++ b/go-packages/meep-mg-app-client/docs/StateTransferApi.md @@ -1,6 +1,6 @@ # \StateTransferApi -All URIs are relative to *https://localhostmgm-notif/v1* +All URIs are relative to *https://localhost/sandboxname/mgm-notif/v1* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-platform-ctrl-client/.gitignore b/go-packages/meep-platform-ctrl-client/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/go-packages/meep-platform-ctrl-client/.swagger-codegen-ignore b/go-packages/meep-platform-ctrl-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/go-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION b/go-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/go-packages/meep-platform-ctrl-client/.travis.yml b/go-packages/meep-platform-ctrl-client/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/go-packages/meep-platform-ctrl-client/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/go-packages/meep-rnis-client/.gitignore b/go-packages/meep-rnis-client/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/go-packages/meep-rnis-client/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/go-packages/meep-rnis-client/.swagger-codegen-ignore b/go-packages/meep-rnis-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/go-packages/meep-rnis-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/go-packages/meep-rnis-client/.swagger-codegen/VERSION b/go-packages/meep-rnis-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..812aaafe6 --- /dev/null +++ b/go-packages/meep-rnis-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.22 \ No newline at end of file diff --git a/go-packages/meep-rnis-client/.travis.yml b/go-packages/meep-rnis-client/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/go-packages/meep-rnis-client/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/go-packages/meep-rnis-client/api/swagger.yaml b/go-packages/meep-rnis-client/api/swagger.yaml index 6727b83fe..0d6c8446b 100644 --- a/go-packages/meep-rnis-client/api/swagger.yaml +++ b/go-packages/meep-rnis-client/api/swagger.yaml @@ -1,13 +1,15 @@ openapi: 3.0.0 info: title: AdvantEDGE Radio Network Information Service REST API - description: Radio Network Information Service is AdvantEDGE's implementation of - [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf) + description: 'Radio Network Information Service is AdvantEDGE''s implementation + of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details - available at _your-AdvantEDGE-ip-address/api_ + available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected + subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported + subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription' contact: name: InterDigital AdvantEDGE Support email: AdvantEDGE@InterDigital.com @@ -19,9 +21,10 @@ externalDocs: description: ETSI GS MEC 012 Radio Network Information API, V2.1.1 url: http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_mec012v020101p.pdf servers: -- url: https://localhost/rni/v2 +- url: https://localhost/sandboxname/rni/v2 tags: - name: rni +- name: unsupported paths: /queries/rab_info: get: @@ -286,7 +289,7 @@ paths: /queries/s1_bearer_info: get: tags: - - rni + - unsupported summary: Retrieve S1-U bearer information related to specific UE(s) description: Queries information about the S1 bearer(s) operationId: s1_bearer_infoGET @@ -425,7 +428,7 @@ paths: /queries/layer2_meas: get: tags: - - rni + - unsupported summary: Retrieve information on layer 2 measurements description: Queries information about the layer 2 measurements. operationId: layer2_meas_infoGET diff --git a/go-packages/meep-rnis-client/docs/RniApi.md b/go-packages/meep-rnis-client/docs/RniApi.md index 395d23b1b..2fc98ccdc 100644 --- a/go-packages/meep-rnis-client/docs/RniApi.md +++ b/go-packages/meep-rnis-client/docs/RniApi.md @@ -1,13 +1,11 @@ # \RniApi -All URIs are relative to *https://localhost/rni/v2* +All URIs are relative to *https://localhost/sandboxname/rni/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**Layer2MeasInfoGET**](RniApi.md#Layer2MeasInfoGET) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements [**PlmnInfoGET**](RniApi.md#PlmnInfoGET) | **Get** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to [**RabInfoGET**](RniApi.md#RabInfoGET) | **Get** /queries/rab_info | Retrieve information on Radio Access Bearers -[**S1BearerInfoGET**](RniApi.md#S1BearerInfoGET) | **Get** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) [**SubscriptionLinkListSubscriptionsGET**](RniApi.md#SubscriptionLinkListSubscriptionsGET) | **Get** /subscriptions | Retrieve information on subscriptions for notifications [**SubscriptionsDELETE**](RniApi.md#SubscriptionsDELETE) | **Delete** /subscriptions/{subscriptionId} | Cancel an existing subscription [**SubscriptionsGET**](RniApi.md#SubscriptionsGET) | **Get** /subscriptions/{subscriptionId} | Retrieve information on current specific subscription @@ -15,79 +13,6 @@ Method | HTTP request | Description [**SubscriptionsPUT**](RniApi.md#SubscriptionsPUT) | **Put** /subscriptions/{subscriptionId} | Modify an existing subscription -# **Layer2MeasInfoGET** -> L2Meas Layer2MeasInfoGET(ctx, optional) -Retrieve information on layer 2 measurements - -Queries information about the layer 2 measurements. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **optional** | ***Layer2MeasInfoGETOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a Layer2MeasInfoGETOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **appInsId** | **optional.String**| Application instance identifier | - **cellId** | [**optional.Interface of []string**](string.md)| Comma separated list of E-UTRAN Cell Identities | - **ueIpv4Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | - **ueIpv6Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | - **natedIpAddress** | [**optional.Interface of []string**](string.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | - **gtpTeid** | [**optional.Interface of []string**](string.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | - **dlGbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulGbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlNongbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulNongbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlTotalPrbUsageCell** | **optional.Int32**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | - **ulTotalPrbUsageCell** | **optional.Int32**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | - **receivedDedicatedPreamblesCell** | **optional.Int32**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | - **receivedRandomlySelectedPreamblesLowRangeCell** | **optional.Int32**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | - **receivedRandomlySelectedPreamblesHighRangeCell** | **optional.Int32**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | - **numberOfActiveUeDlGbrCell** | **optional.Int32**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | - **numberOfActiveUeUlGbrCell** | **optional.Int32**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | - **numberOfActiveUeDlNongbrCell** | **optional.Int32**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | - **numberOfActiveUeUlNongbrCell** | **optional.Int32**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | - **dlGbrPdrCell** | **optional.Int32**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulGbrPdrCell** | **optional.Int32**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlNongbrPdrCell** | **optional.Int32**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulNongbrPdrCell** | **optional.Int32**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlGbrDelayUe** | **optional.Int32**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulGbrDelayUe** | **optional.Int32**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlNongbrDelayUe** | **optional.Int32**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulNongbrDelayUe** | **optional.Int32**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlGbrPdrUe** | **optional.Int32**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **ulGbrPdrUe** | **optional.Int32**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **dlNongbrPdrUe** | **optional.Int32**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **ulNongbrPdrUe** | **optional.Int32**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **dlGbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulGbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlGbrDataVolumeUe** | **optional.Int32**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulGbrDataVolumeUe** | **optional.Int32**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlNongbrDataVolumeUe** | **optional.Int32**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulNongbrDataVolumeUe** | **optional.Int32**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - -### Return type - -[**L2Meas**](L2Meas.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json, application/problem+json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **PlmnInfoGET** > PlmnInfo PlmnInfoGET(ctx, appInsId) Retrieve information on the underlying Mobile Network that the MEC application is associated to @@ -162,47 +87,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **S1BearerInfoGET** -> S1BearerInfo S1BearerInfoGET(ctx, optional) -Retrieve S1-U bearer information related to specific UE(s) - -Queries information about the S1 bearer(s) - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **optional** | ***S1BearerInfoGETOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a S1BearerInfoGETOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **tempUeId** | [**optional.Interface of []string**](string.md)| Comma separated list of temporary identifiers allocated for the specific UE as defined in ETSI TS 136 413 | - **ueIpv4Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | - **ueIpv6Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | - **natedIpAddress** | [**optional.Interface of []string**](string.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | - **gtpTeid** | [**optional.Interface of []string**](string.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | - **cellId** | [**optional.Interface of []string**](string.md)| Comma separated list of E-UTRAN Cell Identities | - **erabId** | [**optional.Interface of []int32**](int32.md)| Comma separated list of E-RAB identifiers | - -### Return type - -[**S1BearerInfo**](S1BearerInfo.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json, application/problem+json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **SubscriptionLinkListSubscriptionsGET** > SubscriptionLinkList SubscriptionLinkListSubscriptionsGET(ctx, optional) Retrieve information on subscriptions for notifications diff --git a/go-packages/meep-rnis-client/docs/UnsupportedApi.md b/go-packages/meep-rnis-client/docs/UnsupportedApi.md new file mode 100644 index 000000000..7dd1e52f4 --- /dev/null +++ b/go-packages/meep-rnis-client/docs/UnsupportedApi.md @@ -0,0 +1,124 @@ +# \UnsupportedApi + +All URIs are relative to *https://localhost/sandboxname/rni/v2* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**Layer2MeasInfoGET**](UnsupportedApi.md#Layer2MeasInfoGET) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements +[**S1BearerInfoGET**](UnsupportedApi.md#S1BearerInfoGET) | **Get** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) + + +# **Layer2MeasInfoGET** +> L2Meas Layer2MeasInfoGET(ctx, optional) +Retrieve information on layer 2 measurements + +Queries information about the layer 2 measurements. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***Layer2MeasInfoGETOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a Layer2MeasInfoGETOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **appInsId** | **optional.String**| Application instance identifier | + **cellId** | [**optional.Interface of []string**](string.md)| Comma separated list of E-UTRAN Cell Identities | + **ueIpv4Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | + **ueIpv6Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | + **natedIpAddress** | [**optional.Interface of []string**](string.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | + **gtpTeid** | [**optional.Interface of []string**](string.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | + **dlGbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulGbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlNongbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulNongbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlTotalPrbUsageCell** | **optional.Int32**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | + **ulTotalPrbUsageCell** | **optional.Int32**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | + **receivedDedicatedPreamblesCell** | **optional.Int32**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | + **receivedRandomlySelectedPreamblesLowRangeCell** | **optional.Int32**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | + **receivedRandomlySelectedPreamblesHighRangeCell** | **optional.Int32**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | + **numberOfActiveUeDlGbrCell** | **optional.Int32**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | + **numberOfActiveUeUlGbrCell** | **optional.Int32**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | + **numberOfActiveUeDlNongbrCell** | **optional.Int32**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | + **numberOfActiveUeUlNongbrCell** | **optional.Int32**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | + **dlGbrPdrCell** | **optional.Int32**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulGbrPdrCell** | **optional.Int32**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlNongbrPdrCell** | **optional.Int32**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulNongbrPdrCell** | **optional.Int32**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlGbrDelayUe** | **optional.Int32**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulGbrDelayUe** | **optional.Int32**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlNongbrDelayUe** | **optional.Int32**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulNongbrDelayUe** | **optional.Int32**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlGbrPdrUe** | **optional.Int32**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **ulGbrPdrUe** | **optional.Int32**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **dlNongbrPdrUe** | **optional.Int32**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **ulNongbrPdrUe** | **optional.Int32**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **dlGbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulGbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlGbrDataVolumeUe** | **optional.Int32**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulGbrDataVolumeUe** | **optional.Int32**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlNongbrDataVolumeUe** | **optional.Int32**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulNongbrDataVolumeUe** | **optional.Int32**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + +### Return type + +[**L2Meas**](L2Meas.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json, application/problem+json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **S1BearerInfoGET** +> S1BearerInfo S1BearerInfoGET(ctx, optional) +Retrieve S1-U bearer information related to specific UE(s) + +Queries information about the S1 bearer(s) + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***S1BearerInfoGETOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a S1BearerInfoGETOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tempUeId** | [**optional.Interface of []string**](string.md)| Comma separated list of temporary identifiers allocated for the specific UE as defined in ETSI TS 136 413 | + **ueIpv4Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | + **ueIpv6Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | + **natedIpAddress** | [**optional.Interface of []string**](string.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | + **gtpTeid** | [**optional.Interface of []string**](string.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | + **cellId** | [**optional.Interface of []string**](string.md)| Comma separated list of E-UTRAN Cell Identities | + **erabId** | [**optional.Interface of []int32**](int32.md)| Comma separated list of E-RAB identifiers | + +### Return type + +[**S1BearerInfo**](S1BearerInfo.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json, application/problem+json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/go-packages/meep-rnis-client/model_inline_subscription.go b/go-packages/meep-rnis-client/model_inline_subscription.go index 6eb696aac..3238ad541 100644 --- a/go-packages/meep-rnis-client/model_inline_subscription.go +++ b/go-packages/meep-rnis-client/model_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_trigger.go b/go-packages/meep-rnis-client/model_trigger.go index 6bb12f034..8700d44c3 100644 --- a/go-packages/meep-rnis-client/model_trigger.go +++ b/go-packages/meep-rnis-client/model_trigger.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_trigger_nr.go b/go-packages/meep-rnis-client/model_trigger_nr.go index ca7ef9006..264050f37 100644 --- a/go-packages/meep-rnis-client/model_trigger_nr.go +++ b/go-packages/meep-rnis-client/model_trigger_nr.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-sandbox-ctrl-client/.gitignore b/go-packages/meep-sandbox-ctrl-client/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/go-packages/meep-sandbox-ctrl-client/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/go-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore b/go-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/go-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/go-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION b/go-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/go-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/go-packages/meep-sandbox-ctrl-client/.travis.yml b/go-packages/meep-sandbox-ctrl-client/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/go-packages/meep-sandbox-ctrl-client/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/go-packages/meep-wais-client/.gitignore b/go-packages/meep-wais-client/.gitignore new file mode 100644 index 000000000..daf913b1b --- /dev/null +++ b/go-packages/meep-wais-client/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/go-packages/meep-wais-client/.swagger-codegen-ignore b/go-packages/meep-wais-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/go-packages/meep-wais-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/go-packages/meep-wais-client/.swagger-codegen/VERSION b/go-packages/meep-wais-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..812aaafe6 --- /dev/null +++ b/go-packages/meep-wais-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.22 \ No newline at end of file diff --git a/go-packages/meep-wais-client/.travis.yml b/go-packages/meep-wais-client/.travis.yml new file mode 100644 index 000000000..f5cb2ce9a --- /dev/null +++ b/go-packages/meep-wais-client/.travis.yml @@ -0,0 +1,8 @@ +language: go + +install: + - go get -d -v . + +script: + - go build -v ./ + diff --git a/go-packages/meep-wais-client/api/swagger.yaml b/go-packages/meep-wais-client/api/swagger.yaml index ed051e930..5a5e38540 100644 --- a/go-packages/meep-wais-client/api/swagger.yaml +++ b/go-packages/meep-wais-client/api/swagger.yaml @@ -1,13 +1,15 @@ openapi: 3.0.0 info: title: AdvantEDGE WLAN Access Information API - description: WLAN Access Information Service is AdvantEDGE's implementation of [ETSI - MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf) + description: 'WLAN Access Information Service is AdvantEDGE''s implementation of + [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API - details available at _your-AdvantEDGE-ip-address/api_ + details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a + selected subset of WAI API subscription types.

    Supported subscriptions:

    + - AssocStaSubscription' contact: name: InterDigital AdvantEDGE Support email: AdvantEDGE@InterDigital.com @@ -19,7 +21,7 @@ externalDocs: description: ETSI MEC028 V2.1.1 WLAN Information API url: http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_mec028v020101p.pdf servers: -- url: https://localhost/wai/v2 +- url: https://localhost/sandboxname/wai/v2 tags: - name: wai paths: diff --git a/go-packages/meep-wais-client/docs/WaiApi.md b/go-packages/meep-wais-client/docs/WaiApi.md index 174729be2..7a0b470f1 100644 --- a/go-packages/meep-wais-client/docs/WaiApi.md +++ b/go-packages/meep-wais-client/docs/WaiApi.md @@ -1,6 +1,6 @@ # \WaiApi -All URIs are relative to *https://localhost/wai/v2* +All URIs are relative to *https://localhost/sandboxname/wai/v2* Method | HTTP request | Description ------------- | ------------- | ------------- diff --git a/go-packages/meep-wais-client/model_inline_subscription.go b/go-packages/meep-wais-client/model_inline_subscription.go index d52c8e229..fa9b7825f 100644 --- a/go-packages/meep-wais-client/model_inline_subscription.go +++ b/go-packages/meep-wais-client/model_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE WLAN Access Information API * - * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_ + * WLAN Access Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC028 WAI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.01.01_60/gs_MEC028v020101p.pdf)

    [Copyright (c) ETSI 2020](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-wais](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-wais)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about WLAN access information in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of WAI API subscription types.

    Supported subscriptions:

    - AssocStaSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/js-packages/meep-metrics-engine-client/.swagger-codegen-ignore b/js-packages/meep-metrics-engine-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/js-packages/meep-metrics-engine-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/js-packages/meep-metrics-engine-client/.swagger-codegen/VERSION b/js-packages/meep-metrics-engine-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/js-packages/meep-metrics-engine-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/js-packages/meep-metrics-engine-client/.travis.yml b/js-packages/meep-metrics-engine-client/.travis.yml new file mode 100644 index 000000000..e49f4692f --- /dev/null +++ b/js-packages/meep-metrics-engine-client/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "6" + - "6.1" + - "5" + - "5.11" + diff --git a/js-packages/meep-mon-engine-client/.swagger-codegen-ignore b/js-packages/meep-mon-engine-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/js-packages/meep-mon-engine-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/js-packages/meep-mon-engine-client/.swagger-codegen/VERSION b/js-packages/meep-mon-engine-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/js-packages/meep-mon-engine-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/js-packages/meep-mon-engine-client/.travis.yml b/js-packages/meep-mon-engine-client/.travis.yml new file mode 100644 index 000000000..e49f4692f --- /dev/null +++ b/js-packages/meep-mon-engine-client/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "6" + - "6.1" + - "5" + - "5.11" + diff --git a/js-packages/meep-platform-ctrl-client/.swagger-codegen-ignore b/js-packages/meep-platform-ctrl-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/js-packages/meep-platform-ctrl-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/js-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION b/js-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/js-packages/meep-platform-ctrl-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/js-packages/meep-platform-ctrl-client/.travis.yml b/js-packages/meep-platform-ctrl-client/.travis.yml new file mode 100644 index 000000000..e49f4692f --- /dev/null +++ b/js-packages/meep-platform-ctrl-client/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "6" + - "6.1" + - "5" + - "5.11" + diff --git a/js-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore b/js-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore new file mode 100644 index 000000000..c5fa491b4 --- /dev/null +++ b/js-packages/meep-sandbox-ctrl-client/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/js-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION b/js-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION new file mode 100644 index 000000000..158349812 --- /dev/null +++ b/js-packages/meep-sandbox-ctrl-client/.swagger-codegen/VERSION @@ -0,0 +1 @@ +2.4.9 \ No newline at end of file diff --git a/js-packages/meep-sandbox-ctrl-client/.travis.yml b/js-packages/meep-sandbox-ctrl-client/.travis.yml new file mode 100644 index 000000000..e49f4692f --- /dev/null +++ b/js-packages/meep-sandbox-ctrl-client/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "6" + - "6.1" + - "5" + - "5.11" + -- GitLab From 2718e972738900731545ee1621429071f4e34c6b Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Thu, 21 Jan 2021 18:09:01 -0500 Subject: [PATCH 029/194] loc-serv router fix --- go-apps/meep-loc-serv/server/api_location.go | 64 ++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/go-apps/meep-loc-serv/server/api_location.go b/go-apps/meep-loc-serv/server/api_location.go index 433d440ec..82e2b5b69 100644 --- a/go-apps/meep-loc-serv/server/api_location.go +++ b/go-apps/meep-loc-serv/server/api_location.go @@ -35,6 +35,70 @@ func ApGET(w http.ResponseWriter, r *http.Request) { apGet(w, r) } +func AreaCircleSubDELETE(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func AreaCircleSubGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func AreaCircleSubListGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func AreaCircleSubPOST(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func AreaCircleSubPUT(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func DistanceGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func DistanceSubDELETE(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func DistanceSubGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func DistanceSubListGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func DistanceSubPOST(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func DistanceSubPUT(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func PeriodicSubDELETE(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func PeriodicSubGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func PeriodicSubListGET(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func PeriodicSubPOST(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + +func PeriodicSubPUT(w http.ResponseWriter, r *http.Request) { + notImplemented(w, r) +} + func UserTrackingSubDELETE(w http.ResponseWriter, r *http.Request) { userTrackingSubDelete(w, r) } -- GitLab From 785acf6d8c2254c66fbc2dbbad8e000ae0035486 Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Mon, 25 Jan 2021 12:33:54 -0500 Subject: [PATCH 030/194] regenerated code & doc --- docs/api-rnis/Apis/RniApi.md | 66 ++++ docs/api-rnis/Apis/UnsupportedApi.md | 66 ---- docs/api-rnis/README.md | 2 +- examples/demo1/src/demo-server/go/README.md | 2 +- examples/demo1/src/iperf-proxy/go/README.md | 2 +- go-apps/meep-auth-svc/server/README.md | 2 +- go-apps/meep-gis-engine/server/README.md | 2 +- go-apps/meep-loc-serv/server/README.md | 2 +- .../meep-metrics-engine/server/v2/README.md | 2 +- go-apps/meep-mg-manager/server/README.md | 2 +- go-apps/meep-mon-engine/server/README.md | 2 +- go-apps/meep-platform-ctrl/server/README.md | 2 +- go-apps/meep-rnis/api/swagger.yaml | 6 +- go-apps/meep-rnis/server/README.md | 4 +- .../meep-rnis/server/model_associate_id.go | 2 +- .../server/model_ca_reconf_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ..._reconf_notification_secondary_cell_add.go | 2 +- .../server/model_ca_reconf_subscription.go | 2 +- .../model_ca_reconf_subscription__links.go | 2 +- ...conf_subscription_filter_criteria_assoc.go | 2 +- .../server/model_cell_change_notification.go | 2 +- ...del_cell_change_notification_temp_ue_id.go | 2 +- .../server/model_cell_change_subscription.go | 2 +- ...e_subscription_filter_criteria_assoc_ho.go | 2 +- go-apps/meep-rnis/server/model_ecgi.go | 2 +- .../server/model_expiry_notification.go | 2 +- .../model_expiry_notification__links.go | 2 +- .../server/model_inline_notification.go | 2 +- .../server/model_inline_subscription.go | 2 +- go-apps/meep-rnis/server/model_l2_meas.go | 2 +- .../server/model_l2_meas_cell_info.go | 2 +- .../server/model_l2_meas_cell_ue_info.go | 2 +- go-apps/meep-rnis/server/model_link_type.go | 2 +- .../server/model_meas_quantity_results_nr.go | 2 +- .../server/model_meas_rep_ue_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ...ication_eutran_neighbour_cell_meas_info.go | 2 +- ...rep_ue_notification_new_radio_meas_info.go | 2 +- ...ue_notification_new_radio_meas_nei_info.go | 2 +- ...model_meas_rep_ue_notification_nr_bn_cs.go | 2 +- ...e_notification_nr_bn_cs_nr_bn_cell_info.go | 2 +- ...meas_rep_ue_notification_nr_n_cell_info.go | 2 +- .../model_meas_rep_ue_notification_nr_s_cs.go | 2 +- ..._ue_notification_nr_s_cs_nr_s_cell_info.go | 2 +- .../server/model_meas_rep_ue_subscription.go | 2 +- ..._subscription_filter_criteria_assoc_tri.go | 2 +- .../server/model_meas_ta_notification.go | 2 +- .../server/model_meas_ta_subscription.go | 2 +- go-apps/meep-rnis/server/model_n_rcgi.go | 2 +- .../model_nr_meas_rep_ue_notification.go | 2 +- ...notification_eutra_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_n_cell.go | 2 +- ...ue_notification_nr_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_s_cell.go | 2 +- ...rep_ue_notification_serv_cell_meas_info.go | 2 +- .../model_nr_meas_rep_ue_subscription.go | 2 +- ..._ue_subscription_filter_criteria_nr_mrs.go | 2 +- go-apps/meep-rnis/server/model_plmn.go | 2 +- go-apps/meep-rnis/server/model_plmn_info.go | 2 +- .../meep-rnis/server/model_problem_details.go | 2 +- .../server/model_rab_est_notification.go | 2 +- ...ab_est_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../model_rab_est_notification_temp_ue_id.go | 2 +- .../server/model_rab_est_subscription.go | 2 +- ...ab_est_subscription_filter_criteria_qci.go | 2 +- go-apps/meep-rnis/server/model_rab_info.go | 2 +- .../server/model_rab_info_cell_user_info.go | 2 +- .../server/model_rab_info_erab_info.go | 2 +- .../server/model_rab_info_ue_info.go | 2 +- .../server/model_rab_mod_notification.go | 2 +- ...ab_mod_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../server/model_rab_mod_subscription.go | 2 +- ...ab_mod_subscription_filter_criteria_qci.go | 2 +- .../server/model_rab_rel_notification.go | 2 +- ..._rab_rel_notification_erab_release_info.go | 2 +- .../server/model_rab_rel_subscription.go | 2 +- .../server/model_results_per_csi_rs_index.go | 2 +- .../model_results_per_csi_rs_index_list.go | 2 +- ..._rs_index_list_results_per_csi_rs_index.go | 2 +- .../server/model_results_per_ssb_index.go | 2 +- .../model_results_per_ssb_index_list.go | 2 +- ...er_ssb_index_list_results_per_ssb_index.go | 2 +- .../server/model_rs_index_results.go | 2 +- .../meep-rnis/server/model_s1_bearer_info.go | 2 +- .../server/model_s1_bearer_info_enb_info.go | 2 +- ..._s1_bearer_info_s1_bearer_info_detailed.go | 2 +- .../server/model_s1_bearer_info_s1_ue_info.go | 2 +- .../server/model_s1_bearer_info_s_gw_info.go | 2 +- .../server/model_s1_bearer_notification.go | 2 +- ...model_s1_bearer_notification_s1_ue_info.go | 2 +- .../server/model_s1_bearer_subscription.go | 2 +- ...ription_s1_bearer_subscription_criteria.go | 2 +- .../server/model_subscription_link_list.go | 2 +- .../model_subscription_link_list__links.go | 2 +- ...scription_link_list__links_subscription.go | 2 +- go-apps/meep-rnis/server/model_time_stamp.go | 2 +- go-apps/meep-sandbox-ctrl/server/README.md | 2 +- go-apps/meep-wais/server/README.md | 2 +- go-packages/meep-rnis-client/README.md | 4 +- go-packages/meep-rnis-client/api/swagger.yaml | 5 +- go-packages/meep-rnis-client/api_rni.go | 366 +++++++++++++++++- .../meep-rnis-client/api_unsupported.go | 366 +----------------- go-packages/meep-rnis-client/client.go | 2 +- go-packages/meep-rnis-client/configuration.go | 2 +- go-packages/meep-rnis-client/docs/RniApi.md | 74 ++++ .../meep-rnis-client/docs/UnsupportedApi.md | 74 ---- .../meep-rnis-client/model_associate_id.go | 2 +- .../model_ca_reconf_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ..._reconf_notification_secondary_cell_add.go | 2 +- .../model_ca_reconf_subscription.go | 2 +- .../model_ca_reconf_subscription__links.go | 2 +- ...conf_subscription_filter_criteria_assoc.go | 2 +- .../model_cell_change_notification.go | 2 +- ...del_cell_change_notification_temp_ue_id.go | 2 +- .../model_cell_change_subscription.go | 2 +- ...e_subscription_filter_criteria_assoc_ho.go | 2 +- go-packages/meep-rnis-client/model_ecgi.go | 2 +- .../model_expiry_notification.go | 2 +- .../model_expiry_notification__links.go | 2 +- .../model_inline_notification.go | 2 +- go-packages/meep-rnis-client/model_l2_meas.go | 2 +- .../model_l2_meas_cell_info.go | 2 +- .../model_l2_meas_cell_ue_info.go | 2 +- .../meep-rnis-client/model_link_type.go | 2 +- .../model_meas_quantity_results_nr.go | 2 +- .../model_meas_rep_ue_notification.go | 2 +- ...ification_carrier_aggregation_meas_info.go | 2 +- ...ication_eutran_neighbour_cell_meas_info.go | 2 +- ...rep_ue_notification_new_radio_meas_info.go | 2 +- ...ue_notification_new_radio_meas_nei_info.go | 2 +- ...model_meas_rep_ue_notification_nr_bn_cs.go | 2 +- ...e_notification_nr_bn_cs_nr_bn_cell_info.go | 2 +- ...meas_rep_ue_notification_nr_n_cell_info.go | 2 +- .../model_meas_rep_ue_notification_nr_s_cs.go | 2 +- ..._ue_notification_nr_s_cs_nr_s_cell_info.go | 2 +- .../model_meas_rep_ue_subscription.go | 2 +- ..._subscription_filter_criteria_assoc_tri.go | 2 +- .../model_meas_ta_notification.go | 2 +- .../model_meas_ta_subscription.go | 2 +- go-packages/meep-rnis-client/model_n_rcgi.go | 2 +- .../model_nr_meas_rep_ue_notification.go | 2 +- ...notification_eutra_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_n_cell.go | 2 +- ...ue_notification_nr_neigh_cell_meas_info.go | 2 +- ...odel_nr_meas_rep_ue_notification_s_cell.go | 2 +- ...rep_ue_notification_serv_cell_meas_info.go | 2 +- .../model_nr_meas_rep_ue_subscription.go | 2 +- ..._ue_subscription_filter_criteria_nr_mrs.go | 2 +- .../model_one_of_inline_notification.go | 2 +- .../model_one_of_inline_subscription.go | 2 +- go-packages/meep-rnis-client/model_plmn.go | 2 +- .../meep-rnis-client/model_plmn_info.go | 2 +- .../meep-rnis-client/model_problem_details.go | 2 +- .../model_rab_est_notification.go | 2 +- ...ab_est_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../model_rab_est_notification_temp_ue_id.go | 2 +- .../model_rab_est_subscription.go | 2 +- ...ab_est_subscription_filter_criteria_qci.go | 2 +- .../meep-rnis-client/model_rab_info.go | 2 +- .../model_rab_info_cell_user_info.go | 2 +- .../model_rab_info_erab_info.go | 2 +- .../model_rab_info_ue_info.go | 2 +- .../model_rab_mod_notification.go | 2 +- ...ab_mod_notification_erab_qos_parameters.go | 2 +- ...ion_erab_qos_parameters_qos_information.go | 2 +- .../model_rab_mod_subscription.go | 2 +- ...ab_mod_subscription_filter_criteria_qci.go | 2 +- .../model_rab_rel_notification.go | 2 +- ..._rab_rel_notification_erab_release_info.go | 2 +- .../model_rab_rel_subscription.go | 2 +- .../model_results_per_csi_rs_index.go | 2 +- .../model_results_per_csi_rs_index_list.go | 2 +- ..._rs_index_list_results_per_csi_rs_index.go | 2 +- .../model_results_per_ssb_index.go | 2 +- .../model_results_per_ssb_index_list.go | 2 +- ...er_ssb_index_list_results_per_ssb_index.go | 2 +- .../model_rs_index_results.go | 2 +- .../meep-rnis-client/model_s1_bearer_info.go | 2 +- .../model_s1_bearer_info_enb_info.go | 2 +- ..._s1_bearer_info_s1_bearer_info_detailed.go | 2 +- .../model_s1_bearer_info_s1_ue_info.go | 2 +- .../model_s1_bearer_info_s_gw_info.go | 2 +- .../model_s1_bearer_notification.go | 2 +- ...model_s1_bearer_notification_s1_ue_info.go | 2 +- .../model_s1_bearer_subscription.go | 2 +- ...ription_s1_bearer_subscription_criteria.go | 2 +- .../model_subscription_link_list.go | 2 +- .../model_subscription_link_list__links.go | 2 +- ...scription_link_list__links_subscription.go | 2 +- .../meep-rnis-client/model_time_stamp.go | 2 +- go-packages/meep-rnis-client/response.go | 2 +- 196 files changed, 703 insertions(+), 700 deletions(-) diff --git a/docs/api-rnis/Apis/RniApi.md b/docs/api-rnis/Apis/RniApi.md index e20ab8917..0c38bfa0a 100644 --- a/docs/api-rnis/Apis/RniApi.md +++ b/docs/api-rnis/Apis/RniApi.md @@ -4,6 +4,7 @@ All URIs are relative to *https://localhost/sandboxname/rni/v2* Method | HTTP request | Description ------------- | ------------- | ------------- +[**layer2MeasInfoGET**](RniApi.md#layer2MeasInfoGET) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements [**plmnInfoGET**](RniApi.md#plmnInfoGET) | **GET** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to [**rabInfoGET**](RniApi.md#rabInfoGET) | **GET** /queries/rab_info | Retrieve information on Radio Access Bearers [**subscriptionLinkListSubscriptionsGET**](RniApi.md#subscriptionLinkListSubscriptionsGET) | **GET** /subscriptions | Retrieve information on subscriptions for notifications @@ -13,6 +14,71 @@ Method | HTTP request | Description [**subscriptionsPUT**](RniApi.md#subscriptionsPUT) | **PUT** /subscriptions/{subscriptionId} | Modify an existing subscription + +# **layer2MeasInfoGET** +> L2Meas layer2MeasInfoGET(app\_ins\_id, cell\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, dl\_gbr\_prb\_usage\_cell, ul\_gbr\_prb\_usage\_cell, dl\_nongbr\_prb\_usage\_cell, ul\_nongbr\_prb\_usage\_cell, dl\_total\_prb\_usage\_cell, ul\_total\_prb\_usage\_cell, received\_dedicated\_preambles\_cell, received\_randomly\_selected\_preambles\_low\_range\_cell, received\_randomly\_selected\_preambles\_high\_range\_cell, number\_of\_active\_ue\_dl\_gbr\_cell, number\_of\_active\_ue\_ul\_gbr\_cell, number\_of\_active\_ue\_dl\_nongbr\_cell, number\_of\_active\_ue\_ul\_nongbr\_cell, dl\_gbr\_pdr\_cell, ul\_gbr\_pdr\_cell, dl\_nongbr\_pdr\_cell, ul\_nongbr\_pdr\_cell, dl\_gbr\_delay\_ue, ul\_gbr\_delay\_ue, dl\_nongbr\_delay\_ue, ul\_nongbr\_delay\_ue, dl\_gbr\_pdr\_ue, ul\_gbr\_pdr\_ue, dl\_nongbr\_pdr\_ue, ul\_nongbr\_pdr\_ue, dl\_gbr\_throughput\_ue, ul\_gbr\_throughput\_ue, dl\_nongbr\_throughput\_ue, ul\_nongbr\_throughput\_ue, dl\_gbr\_data\_volume\_ue, ul\_gbr\_data\_volume\_ue, dl\_nongbr\_data\_volume\_ue, ul\_nongbr\_data\_volume\_ue) + +Retrieve information on layer 2 measurements + + Queries information about the layer 2 measurements. + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **app\_ins\_id** | **String**| Application instance identifier | [optional] [default to null] + **cell\_id** | [**List**](../Models/String.md)| Comma separated list of E-UTRAN Cell Identities | [optional] [default to null] + **ue\_ipv4\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | [optional] [default to null] + **ue\_ipv6\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | [optional] [default to null] + **nated\_ip\_address** | [**List**](../Models/String.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | [optional] [default to null] + **gtp\_teid** | [**List**](../Models/String.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | [optional] [default to null] + **dl\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **received\_dedicated\_preambles\_cell** | **Integer**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **received\_randomly\_selected\_preambles\_low\_range\_cell** | **Integer**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **received\_randomly\_selected\_preambles\_high\_range\_cell** | **Integer**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_dl\_gbr\_cell** | **Integer**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_ul\_gbr\_cell** | **Integer**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_dl\_nongbr\_cell** | **Integer**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **number\_of\_active\_ue\_ul\_nongbr\_cell** | **Integer**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_delay\_ue** | **Integer**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_delay\_ue** | **Integer**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_delay\_ue** | **Integer**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_delay\_ue** | **Integer**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_gbr\_data\_volume\_ue** | **Integer**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_gbr\_data\_volume\_ue** | **Integer**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **dl\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + **ul\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] + +### Return type + +[**L2Meas**](../Models/L2Meas.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: application/json, application/problem+json + # **plmnInfoGET** > PlmnInfo plmnInfoGET(app\_ins\_id) diff --git a/docs/api-rnis/Apis/UnsupportedApi.md b/docs/api-rnis/Apis/UnsupportedApi.md index c5b795cbf..29fd00e03 100644 --- a/docs/api-rnis/Apis/UnsupportedApi.md +++ b/docs/api-rnis/Apis/UnsupportedApi.md @@ -4,75 +4,9 @@ All URIs are relative to *https://localhost/sandboxname/rni/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**layer2MeasInfoGET**](UnsupportedApi.md#layer2MeasInfoGET) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements [**s1BearerInfoGET**](UnsupportedApi.md#s1BearerInfoGET) | **GET** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) - -# **layer2MeasInfoGET** -> L2Meas layer2MeasInfoGET(app\_ins\_id, cell\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, dl\_gbr\_prb\_usage\_cell, ul\_gbr\_prb\_usage\_cell, dl\_nongbr\_prb\_usage\_cell, ul\_nongbr\_prb\_usage\_cell, dl\_total\_prb\_usage\_cell, ul\_total\_prb\_usage\_cell, received\_dedicated\_preambles\_cell, received\_randomly\_selected\_preambles\_low\_range\_cell, received\_randomly\_selected\_preambles\_high\_range\_cell, number\_of\_active\_ue\_dl\_gbr\_cell, number\_of\_active\_ue\_ul\_gbr\_cell, number\_of\_active\_ue\_dl\_nongbr\_cell, number\_of\_active\_ue\_ul\_nongbr\_cell, dl\_gbr\_pdr\_cell, ul\_gbr\_pdr\_cell, dl\_nongbr\_pdr\_cell, ul\_nongbr\_pdr\_cell, dl\_gbr\_delay\_ue, ul\_gbr\_delay\_ue, dl\_nongbr\_delay\_ue, ul\_nongbr\_delay\_ue, dl\_gbr\_pdr\_ue, ul\_gbr\_pdr\_ue, dl\_nongbr\_pdr\_ue, ul\_nongbr\_pdr\_ue, dl\_gbr\_throughput\_ue, ul\_gbr\_throughput\_ue, dl\_nongbr\_throughput\_ue, ul\_nongbr\_throughput\_ue, dl\_gbr\_data\_volume\_ue, ul\_gbr\_data\_volume\_ue, dl\_nongbr\_data\_volume\_ue, ul\_nongbr\_data\_volume\_ue) - -Retrieve information on layer 2 measurements - - Queries information about the layer 2 measurements. - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **app\_ins\_id** | **String**| Application instance identifier | [optional] [default to null] - **cell\_id** | [**List**](../Models/String.md)| Comma separated list of E-UTRAN Cell Identities | [optional] [default to null] - **ue\_ipv4\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | [optional] [default to null] - **ue\_ipv6\_address** | [**List**](../Models/String.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | [optional] [default to null] - **nated\_ip\_address** | [**List**](../Models/String.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | [optional] [default to null] - **gtp\_teid** | [**List**](../Models/String.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | [optional] [default to null] - **dl\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_prb\_usage\_cell** | **Integer**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_total\_prb\_usage\_cell** | **Integer**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **received\_dedicated\_preambles\_cell** | **Integer**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **received\_randomly\_selected\_preambles\_low\_range\_cell** | **Integer**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **received\_randomly\_selected\_preambles\_high\_range\_cell** | **Integer**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_dl\_gbr\_cell** | **Integer**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_ul\_gbr\_cell** | **Integer**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_dl\_nongbr\_cell** | **Integer**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **number\_of\_active\_ue\_ul\_nongbr\_cell** | **Integer**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_pdr\_cell** | **Integer**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_delay\_ue** | **Integer**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_delay\_ue** | **Integer**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_delay\_ue** | **Integer**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_delay\_ue** | **Integer**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_pdr\_ue** | **Integer**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_throughput\_ue** | **Integer**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_gbr\_data\_volume\_ue** | **Integer**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_gbr\_data\_volume\_ue** | **Integer**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **dl\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - **ul\_nongbr\_data\_volume\_ue** | **Integer**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | [optional] [default to null] - -### Return type - -[**L2Meas**](../Models/L2Meas.md) - -### Authorization - -No authorization required - -### HTTP request headers - -- **Content-Type**: Not defined -- **Accept**: application/json, application/problem+json - # **s1BearerInfoGET** > S1BearerInfo s1BearerInfoGET(temp\_ue\_id, ue\_ipv4\_address, ue\_ipv6\_address, nated\_ip\_address, gtp\_teid, cell\_id, erab\_id) diff --git a/docs/api-rnis/README.md b/docs/api-rnis/README.md index cf37c7008..7278c6d35 100644 --- a/docs/api-rnis/README.md +++ b/docs/api-rnis/README.md @@ -7,6 +7,7 @@ All URIs are relative to *https://localhost/sandboxname/rni/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- +*RniApi* | [**layer2MeasInfoGET**](Apis/RniApi.md#layer2measinfoget) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements *RniApi* | [**plmnInfoGET**](Apis/RniApi.md#plmninfoget) | **GET** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to *RniApi* | [**rabInfoGET**](Apis/RniApi.md#rabinfoget) | **GET** /queries/rab_info | Retrieve information on Radio Access Bearers *RniApi* | [**subscriptionLinkListSubscriptionsGET**](Apis/RniApi.md#subscriptionlinklistsubscriptionsget) | **GET** /subscriptions | Retrieve information on subscriptions for notifications @@ -14,7 +15,6 @@ Class | Method | HTTP request | Description *RniApi* | [**subscriptionsGET**](Apis/RniApi.md#subscriptionsget) | **GET** /subscriptions/{subscriptionId} | Retrieve information on current specific subscription *RniApi* | [**subscriptionsPOST**](Apis/RniApi.md#subscriptionspost) | **POST** /subscriptions | Create a new subscription *RniApi* | [**subscriptionsPUT**](Apis/RniApi.md#subscriptionsput) | **PUT** /subscriptions/{subscriptionId} | Modify an existing subscription -*UnsupportedApi* | [**layer2MeasInfoGET**](Apis/UnsupportedApi.md#layer2measinfoget) | **GET** /queries/layer2_meas | Retrieve information on layer 2 measurements *UnsupportedApi* | [**s1BearerInfoGET**](Apis/UnsupportedApi.md#s1bearerinfoget) | **GET** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) diff --git a/examples/demo1/src/demo-server/go/README.md b/examples/demo1/src/demo-server/go/README.md index 677ef0efc..15c920bb7 100644 --- a/examples/demo1/src/demo-server/go/README.md +++ b/examples/demo1/src/demo-server/go/README.md @@ -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: 2021-01-21T14:48:49.743-05:00 +- Build date: 2021-01-25T12:01:21.619-05:00 ### Running the server diff --git a/examples/demo1/src/iperf-proxy/go/README.md b/examples/demo1/src/iperf-proxy/go/README.md index e0808f981..642063536 100644 --- a/examples/demo1/src/iperf-proxy/go/README.md +++ b/examples/demo1/src/iperf-proxy/go/README.md @@ -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: 2021-01-21T14:48:51.163-05:00 +- Build date: 2021-01-25T12:01:22.943-05:00 ### Running the server diff --git a/go-apps/meep-auth-svc/server/README.md b/go-apps/meep-auth-svc/server/README.md index 26d4025de..e7fdc6ff3 100644 --- a/go-apps/meep-auth-svc/server/README.md +++ b/go-apps/meep-auth-svc/server/README.md @@ -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: 2021-01-21T14:48:48.458-05:00 +- Build date: 2021-01-25T12:01:20.363-05:00 ### Running the server diff --git a/go-apps/meep-gis-engine/server/README.md b/go-apps/meep-gis-engine/server/README.md index 19db99548..37d55f3d4 100644 --- a/go-apps/meep-gis-engine/server/README.md +++ b/go-apps/meep-gis-engine/server/README.md @@ -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: 2021-01-21T14:48:39.655-05:00 +- Build date: 2021-01-25T12:01:11.318-05:00 ### Running the server diff --git a/go-apps/meep-loc-serv/server/README.md b/go-apps/meep-loc-serv/server/README.md index 035565bc3..64d696865 100644 --- a/go-apps/meep-loc-serv/server/README.md +++ b/go-apps/meep-loc-serv/server/README.md @@ -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: 2.1.1 -- Build date: 2021-01-21T14:48:40.546180-05:00[America/Toronto] +- Build date: 2021-01-25T12:01:12.267934-05:00[America/Toronto] ### Running the server diff --git a/go-apps/meep-metrics-engine/server/v2/README.md b/go-apps/meep-metrics-engine/server/v2/README.md index 7196eed2a..7daae6e7a 100644 --- a/go-apps/meep-metrics-engine/server/v2/README.md +++ b/go-apps/meep-metrics-engine/server/v2/README.md @@ -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: 2021-01-21T14:48:36.678-05:00 +- Build date: 2021-01-25T12:01:08.163-05:00 ### Running the server diff --git a/go-apps/meep-mg-manager/server/README.md b/go-apps/meep-mg-manager/server/README.md index 2cc79b85b..4c927991a 100644 --- a/go-apps/meep-mg-manager/server/README.md +++ b/go-apps/meep-mg-manager/server/README.md @@ -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: 2021-01-21T14:48:32.850-05:00 +- Build date: 2021-01-25T12:01:04.365-05:00 ### Running the server diff --git a/go-apps/meep-mon-engine/server/README.md b/go-apps/meep-mon-engine/server/README.md index 3eef79d31..9892f11d7 100644 --- a/go-apps/meep-mon-engine/server/README.md +++ b/go-apps/meep-mon-engine/server/README.md @@ -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: 2021-01-21T14:48:31.561-05:00 +- Build date: 2021-01-25T12:01:02.980-05:00 ### Running the server diff --git a/go-apps/meep-platform-ctrl/server/README.md b/go-apps/meep-platform-ctrl/server/README.md index 6505da6bd..9eb509ed3 100644 --- a/go-apps/meep-platform-ctrl/server/README.md +++ b/go-apps/meep-platform-ctrl/server/README.md @@ -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: 2021-01-21T14:48:09.893-05:00 +- Build date: 2021-01-25T12:00:41.933-05:00 ### Running the server diff --git a/go-apps/meep-rnis/api/swagger.yaml b/go-apps/meep-rnis/api/swagger.yaml index 6dea6ed33..1d2fa996f 100644 --- a/go-apps/meep-rnis/api/swagger.yaml +++ b/go-apps/meep-rnis/api/swagger.yaml @@ -15,7 +15,9 @@ info:

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription -

    - RabRelSubscription" +

    - RabRelSubscription +

    - MeasRepUeSubscription +

    - NrMeasRepUeSubscription" license: name: "Apache 2.0" url: "https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE" @@ -135,7 +137,7 @@ paths: /queries/layer2_meas: get: tags: - - 'unsupported' + - 'rni' summary: 'Retrieve information on layer 2 measurements' description: 'Queries information about the layer 2 measurements.' operationId: layer2_meas_infoGET diff --git a/go-apps/meep-rnis/server/README.md b/go-apps/meep-rnis/server/README.md index 2c45ab6f0..0f577231b 100644 --- a/go-apps/meep-rnis/server/README.md +++ b/go-apps/meep-rnis/server/README.md @@ -1,6 +1,6 @@ # Go API Server for server -Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription +Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription ## Overview This server was generated by the [swagger-codegen] @@ -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: 2.1.1 -- Build date: 2021-01-21T14:48:43.268703-05:00[America/Toronto] +- Build date: 2021-01-25T12:01:15.083941-05:00[America/Toronto] ### Running the server diff --git a/go-apps/meep-rnis/server/model_associate_id.go b/go-apps/meep-rnis/server/model_associate_id.go index 8bc91e516..76128392d 100644 --- a/go-apps/meep-rnis/server/model_associate_id.go +++ b/go-apps/meep-rnis/server/model_associate_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_notification.go b/go-apps/meep-rnis/server/model_ca_reconf_notification.go index e6c7a5310..72e19e8b0 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_notification.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go b/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go index cf98adcca..5cfa29397 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go b/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go index 6588463d9..5ad4d7968 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_notification_secondary_cell_add.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_subscription.go b/go-apps/meep-rnis/server/model_ca_reconf_subscription.go index 706ae63a0..b077bc4b8 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_subscription.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go b/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go index 49e21aa80..5f9ed490f 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_subscription__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go b/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go index 45209ab8d..e67b8d231 100644 --- a/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go +++ b/go-apps/meep-rnis/server/model_ca_reconf_subscription_filter_criteria_assoc.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_notification.go b/go-apps/meep-rnis/server/model_cell_change_notification.go index ee0bd578d..ac0824afd 100644 --- a/go-apps/meep-rnis/server/model_cell_change_notification.go +++ b/go-apps/meep-rnis/server/model_cell_change_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go b/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go index 7d025ef8a..8e2d0745b 100644 --- a/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go +++ b/go-apps/meep-rnis/server/model_cell_change_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_subscription.go b/go-apps/meep-rnis/server/model_cell_change_subscription.go index 7cc4b7938..e2929356c 100644 --- a/go-apps/meep-rnis/server/model_cell_change_subscription.go +++ b/go-apps/meep-rnis/server/model_cell_change_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go b/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go index f2d6a3421..0ecddca6f 100644 --- a/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go +++ b/go-apps/meep-rnis/server/model_cell_change_subscription_filter_criteria_assoc_ho.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_ecgi.go b/go-apps/meep-rnis/server/model_ecgi.go index bf62e2b5f..0ac6605dd 100644 --- a/go-apps/meep-rnis/server/model_ecgi.go +++ b/go-apps/meep-rnis/server/model_ecgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_expiry_notification.go b/go-apps/meep-rnis/server/model_expiry_notification.go index 21182080a..e56e0932f 100644 --- a/go-apps/meep-rnis/server/model_expiry_notification.go +++ b/go-apps/meep-rnis/server/model_expiry_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_expiry_notification__links.go b/go-apps/meep-rnis/server/model_expiry_notification__links.go index c88bb14c3..8b6a652a0 100644 --- a/go-apps/meep-rnis/server/model_expiry_notification__links.go +++ b/go-apps/meep-rnis/server/model_expiry_notification__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_inline_notification.go b/go-apps/meep-rnis/server/model_inline_notification.go index 16d2294af..ef7030ca8 100644 --- a/go-apps/meep-rnis/server/model_inline_notification.go +++ b/go-apps/meep-rnis/server/model_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_inline_subscription.go b/go-apps/meep-rnis/server/model_inline_subscription.go index c2e645813..0ee2a603c 100644 --- a/go-apps/meep-rnis/server/model_inline_subscription.go +++ b/go-apps/meep-rnis/server/model_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_l2_meas.go b/go-apps/meep-rnis/server/model_l2_meas.go index 4250bdd70..0678ec7df 100644 --- a/go-apps/meep-rnis/server/model_l2_meas.go +++ b/go-apps/meep-rnis/server/model_l2_meas.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_l2_meas_cell_info.go b/go-apps/meep-rnis/server/model_l2_meas_cell_info.go index 8a6a4f75c..ae1866cb7 100644 --- a/go-apps/meep-rnis/server/model_l2_meas_cell_info.go +++ b/go-apps/meep-rnis/server/model_l2_meas_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go b/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go index 3ae37c9c4..6e3630ed0 100644 --- a/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go +++ b/go-apps/meep-rnis/server/model_l2_meas_cell_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_link_type.go b/go-apps/meep-rnis/server/model_link_type.go index e793606e3..2e9ee8508 100644 --- a/go-apps/meep-rnis/server/model_link_type.go +++ b/go-apps/meep-rnis/server/model_link_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go b/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go index b2b5caa60..eaddc5bdc 100644 --- a/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go +++ b/go-apps/meep-rnis/server/model_meas_quantity_results_nr.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go index a828aa8f7..0912fff28 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go index 75b6a77ac..dfbb62cb3 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go index 1aa6254ad..f7f17e536 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go index 0e6de968c..cccb0739a 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go index ca7e36fd9..e5b83ec0a 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_new_radio_meas_nei_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go index 2a8b66e41..5f4bce9fc 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go index 24b83d759..9f2aa5225 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go index 2c4bf9d17..16857993c 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_n_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go index 9a56619da..5b404f0b0 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go index 31ea543a9..83b1e0332 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go index 72e671ec2..2b074d0ed 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go index 316c44f38..0e6c6aeaf 100644 --- a/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go +++ b/go-apps/meep-rnis/server/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_ta_notification.go b/go-apps/meep-rnis/server/model_meas_ta_notification.go index acaf5051b..4dc789fbd 100644 --- a/go-apps/meep-rnis/server/model_meas_ta_notification.go +++ b/go-apps/meep-rnis/server/model_meas_ta_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_meas_ta_subscription.go b/go-apps/meep-rnis/server/model_meas_ta_subscription.go index eaa33fed3..0358a4879 100644 --- a/go-apps/meep-rnis/server/model_meas_ta_subscription.go +++ b/go-apps/meep-rnis/server/model_meas_ta_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_n_rcgi.go b/go-apps/meep-rnis/server/model_n_rcgi.go index 9b75fbcfc..dff21d363 100644 --- a/go-apps/meep-rnis/server/model_n_rcgi.go +++ b/go-apps/meep-rnis/server/model_n_rcgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go index f62139c45..aa7ae85ff 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go index b1ebd23eb..ed8d936c2 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go index 0795f64d0..ae62dadde 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_n_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go index 7a7129ae3..2ce7810c4 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go index 88c58cdff..5dba67c53 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_s_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go index d70e2af63..b0092d792 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go index e55937b8a..bc315664b 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go index e0a6b0dc1..688597795 100644 --- a/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go +++ b/go-apps/meep-rnis/server/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_plmn.go b/go-apps/meep-rnis/server/model_plmn.go index 2d7f71fce..442ee47b7 100644 --- a/go-apps/meep-rnis/server/model_plmn.go +++ b/go-apps/meep-rnis/server/model_plmn.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_plmn_info.go b/go-apps/meep-rnis/server/model_plmn_info.go index 54e06c349..07a864e76 100644 --- a/go-apps/meep-rnis/server/model_plmn_info.go +++ b/go-apps/meep-rnis/server/model_plmn_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_problem_details.go b/go-apps/meep-rnis/server/model_problem_details.go index d5dd4fdcc..b131549a2 100644 --- a/go-apps/meep-rnis/server/model_problem_details.go +++ b/go-apps/meep-rnis/server/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification.go b/go-apps/meep-rnis/server/model_rab_est_notification.go index 594532b93..abe6893fa 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go index da8d89e5e..eb1880da0 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go index 8fb2a2596..aee8175f7 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go b/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go index af13633dc..334634692 100644 --- a/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go +++ b/go-apps/meep-rnis/server/model_rab_est_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_subscription.go b/go-apps/meep-rnis/server/model_rab_est_subscription.go index 4215cf739..b277c85ee 100644 --- a/go-apps/meep-rnis/server/model_rab_est_subscription.go +++ b/go-apps/meep-rnis/server/model_rab_est_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go b/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go index 201f6af6b..519b00a72 100644 --- a/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go +++ b/go-apps/meep-rnis/server/model_rab_est_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info.go b/go-apps/meep-rnis/server/model_rab_info.go index 7ceeaea2e..93d9e2146 100644 --- a/go-apps/meep-rnis/server/model_rab_info.go +++ b/go-apps/meep-rnis/server/model_rab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go b/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go index 3dd1009ba..e1806200e 100644 --- a/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go +++ b/go-apps/meep-rnis/server/model_rab_info_cell_user_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info_erab_info.go b/go-apps/meep-rnis/server/model_rab_info_erab_info.go index d415f8d7c..76a57ffa7 100644 --- a/go-apps/meep-rnis/server/model_rab_info_erab_info.go +++ b/go-apps/meep-rnis/server/model_rab_info_erab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_info_ue_info.go b/go-apps/meep-rnis/server/model_rab_info_ue_info.go index 087a4a686..835a92f32 100644 --- a/go-apps/meep-rnis/server/model_rab_info_ue_info.go +++ b/go-apps/meep-rnis/server/model_rab_info_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_notification.go b/go-apps/meep-rnis/server/model_rab_mod_notification.go index e5dcd0244..e4a24be4d 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_notification.go +++ b/go-apps/meep-rnis/server/model_rab_mod_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go index 5fb83ad1b..fda497c3f 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go +++ b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go index 077f56e6f..564b62689 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go +++ b/go-apps/meep-rnis/server/model_rab_mod_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_subscription.go b/go-apps/meep-rnis/server/model_rab_mod_subscription.go index 1c86f707b..7b71ee31a 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_subscription.go +++ b/go-apps/meep-rnis/server/model_rab_mod_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go b/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go index 73359d7b2..059041615 100644 --- a/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go +++ b/go-apps/meep-rnis/server/model_rab_mod_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_rel_notification.go b/go-apps/meep-rnis/server/model_rab_rel_notification.go index 81d01fc2f..2f8ec9f40 100644 --- a/go-apps/meep-rnis/server/model_rab_rel_notification.go +++ b/go-apps/meep-rnis/server/model_rab_rel_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go b/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go index cbe8c7eea..1fef0e2ef 100644 --- a/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go +++ b/go-apps/meep-rnis/server/model_rab_rel_notification_erab_release_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rab_rel_subscription.go b/go-apps/meep-rnis/server/model_rab_rel_subscription.go index 96682403e..fa303b75e 100644 --- a/go-apps/meep-rnis/server/model_rab_rel_subscription.go +++ b/go-apps/meep-rnis/server/model_rab_rel_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go b/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go index 5e68cdc46..c2754e52e 100644 --- a/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go +++ b/go-apps/meep-rnis/server/model_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go index 8239c66dd..c255a1759 100644 --- a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go +++ b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go index 1e3d68ea7..bd3afffa9 100644 --- a/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go +++ b/go-apps/meep-rnis/server/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_ssb_index.go b/go-apps/meep-rnis/server/model_results_per_ssb_index.go index 7dc459809..d8c39c88a 100644 --- a/go-apps/meep-rnis/server/model_results_per_ssb_index.go +++ b/go-apps/meep-rnis/server/model_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go b/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go index c2163e95b..76d3f7a61 100644 --- a/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go +++ b/go-apps/meep-rnis/server/model_results_per_ssb_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go b/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go index eec945652..bddab8db2 100644 --- a/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go +++ b/go-apps/meep-rnis/server/model_results_per_ssb_index_list_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_rs_index_results.go b/go-apps/meep-rnis/server/model_rs_index_results.go index 6acc163c3..daf57c742 100644 --- a/go-apps/meep-rnis/server/model_rs_index_results.go +++ b/go-apps/meep-rnis/server/model_rs_index_results.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info.go index ad0084f3f..47f27a3f5 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go index 8142074cc..d39866740 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_enb_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go index 0e7fd3d95..076a379b3 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_bearer_info_detailed.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go index 4b88f3ccf..eaa5a0013 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go b/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go index fd55a4d63..6be6bd816 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_info_s_gw_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_notification.go b/go-apps/meep-rnis/server/model_s1_bearer_notification.go index f5531227f..40caba0b7 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_notification.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go b/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go index bfd4a9852..0492fe29f 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_notification_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_subscription.go b/go-apps/meep-rnis/server/model_s1_bearer_subscription.go index 09434e86f..4def445f0 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_subscription.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go b/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go index 4396462ae..fc8d57ecc 100644 --- a/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go +++ b/go-apps/meep-rnis/server/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_subscription_link_list.go b/go-apps/meep-rnis/server/model_subscription_link_list.go index c92603ba6..8cd790307 100644 --- a/go-apps/meep-rnis/server/model_subscription_link_list.go +++ b/go-apps/meep-rnis/server/model_subscription_link_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_subscription_link_list__links.go b/go-apps/meep-rnis/server/model_subscription_link_list__links.go index 8da288df5..a2499f3f3 100644 --- a/go-apps/meep-rnis/server/model_subscription_link_list__links.go +++ b/go-apps/meep-rnis/server/model_subscription_link_list__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go b/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go index 1a1aa199e..12833c5fe 100644 --- a/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go +++ b/go-apps/meep-rnis/server/model_subscription_link_list__links_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-rnis/server/model_time_stamp.go b/go-apps/meep-rnis/server/model_time_stamp.go index 40d850f32..5268cc5e5 100644 --- a/go-apps/meep-rnis/server/model_time_stamp.go +++ b/go-apps/meep-rnis/server/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-apps/meep-sandbox-ctrl/server/README.md b/go-apps/meep-sandbox-ctrl/server/README.md index 3af977fd6..ed4a3b5e0 100644 --- a/go-apps/meep-sandbox-ctrl/server/README.md +++ b/go-apps/meep-sandbox-ctrl/server/README.md @@ -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: 2021-01-21T14:48:30.266-05:00 +- Build date: 2021-01-25T12:01:01.685-05:00 ### Running the server diff --git a/go-apps/meep-wais/server/README.md b/go-apps/meep-wais/server/README.md index eab325663..0ab49bce6 100644 --- a/go-apps/meep-wais/server/README.md +++ b/go-apps/meep-wais/server/README.md @@ -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: 2.1.1 -- Build date: 2021-01-21T14:48:46.111020-05:00[America/Toronto] +- Build date: 2021-01-25T12:01:17.939699-05:00[America/Toronto] ### Running the server diff --git a/go-packages/meep-rnis-client/README.md b/go-packages/meep-rnis-client/README.md index 52a8d0a89..8bf78f80f 100644 --- a/go-packages/meep-rnis-client/README.md +++ b/go-packages/meep-rnis-client/README.md @@ -1,6 +1,6 @@ # Go API client for client -Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription +Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription ## Overview This API client was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project. By using the [swagger-spec](https://github.com/swagger-api/swagger-spec) from a remote server, you can easily generate an API client. @@ -21,6 +21,7 @@ All URIs are relative to *https://localhost/sandboxname/rni/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- +*RniApi* | [**Layer2MeasInfoGET**](docs/RniApi.md#layer2measinfoget) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements *RniApi* | [**PlmnInfoGET**](docs/RniApi.md#plmninfoget) | **Get** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to *RniApi* | [**RabInfoGET**](docs/RniApi.md#rabinfoget) | **Get** /queries/rab_info | Retrieve information on Radio Access Bearers *RniApi* | [**SubscriptionLinkListSubscriptionsGET**](docs/RniApi.md#subscriptionlinklistsubscriptionsget) | **Get** /subscriptions | Retrieve information on subscriptions for notifications @@ -28,7 +29,6 @@ Class | Method | HTTP request | Description *RniApi* | [**SubscriptionsGET**](docs/RniApi.md#subscriptionsget) | **Get** /subscriptions/{subscriptionId} | Retrieve information on current specific subscription *RniApi* | [**SubscriptionsPOST**](docs/RniApi.md#subscriptionspost) | **Post** /subscriptions | Create a new subscription *RniApi* | [**SubscriptionsPUT**](docs/RniApi.md#subscriptionsput) | **Put** /subscriptions/{subscriptionId} | Modify an existing subscription -*UnsupportedApi* | [**Layer2MeasInfoGET**](docs/UnsupportedApi.md#layer2measinfoget) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements *UnsupportedApi* | [**S1BearerInfoGET**](docs/UnsupportedApi.md#s1bearerinfoget) | **Get** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) diff --git a/go-packages/meep-rnis-client/api/swagger.yaml b/go-packages/meep-rnis-client/api/swagger.yaml index 0d6c8446b..fe0486a46 100644 --- a/go-packages/meep-rnis-client/api/swagger.yaml +++ b/go-packages/meep-rnis-client/api/swagger.yaml @@ -9,7 +9,8 @@ info: information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported - subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription' + subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription +

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription' contact: name: InterDigital AdvantEDGE Support email: AdvantEDGE@InterDigital.com @@ -428,7 +429,7 @@ paths: /queries/layer2_meas: get: tags: - - unsupported + - rni summary: Retrieve information on layer 2 measurements description: Queries information about the layer 2 measurements. operationId: layer2_meas_infoGET diff --git a/go-packages/meep-rnis-client/api_rni.go b/go-packages/meep-rnis-client/api_rni.go index fd7e0ef51..ea592c087 100644 --- a/go-packages/meep-rnis-client/api_rni.go +++ b/go-packages/meep-rnis-client/api_rni.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -42,6 +42,370 @@ var ( type RniApiService service +/* +RniApiService Retrieve information on layer 2 measurements +Queries information about the layer 2 measurements. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param optional nil or *Layer2MeasInfoGETOpts - Optional Parameters: + * @param "AppInsId" (optional.String) - Application instance identifier + * @param "CellId" (optional.Interface of []string) - Comma separated list of E-UTRAN Cell Identities + * @param "UeIpv4Address" (optional.Interface of []string) - Comma separated list of IE IPv4 addresses as defined for the type for AssociateId + * @param "UeIpv6Address" (optional.Interface of []string) - Comma separated list of IE IPv6 addresses as defined for the type for AssociateId + * @param "NatedIpAddress" (optional.Interface of []string) - Comma separated list of IE NATed IP addresses as defined for the type for AssociateId + * @param "GtpTeid" (optional.Interface of []string) - Comma separated list of GTP TEID addresses as defined for the type for AssociateId + * @param "DlGbrPrbUsageCell" (optional.Int32) - PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlGbrPrbUsageCell" (optional.Int32) - PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlNongbrPrbUsageCell" (optional.Int32) - PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlNongbrPrbUsageCell" (optional.Int32) - PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlTotalPrbUsageCell" (optional.Int32) - PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 + * @param "UlTotalPrbUsageCell" (optional.Int32) - PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 + * @param "ReceivedDedicatedPreamblesCell" (optional.Int32) - Received dedicated preambles in percentage as defined in ETSI TS 136 314 + * @param "ReceivedRandomlySelectedPreamblesLowRangeCell" (optional.Int32) - Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 + * @param "ReceivedRandomlySelectedPreamblesHighRangeCell" (optional.Int32) - Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeDlGbrCell" (optional.Int32) - Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeUlGbrCell" (optional.Int32) - Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeDlNongbrCell" (optional.Int32) - Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 + * @param "NumberOfActiveUeUlNongbrCell" (optional.Int32) - Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 + * @param "DlGbrPdrCell" (optional.Int32) - Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlGbrPdrCell" (optional.Int32) - Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlNongbrPdrCell" (optional.Int32) - Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "UlNongbrPdrCell" (optional.Int32) - Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 + * @param "DlGbrDelayUe" (optional.Int32) - Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlGbrDelayUe" (optional.Int32) - Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlNongbrDelayUe" (optional.Int32) - Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlNongbrDelayUe" (optional.Int32) - Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlGbrPdrUe" (optional.Int32) - Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "UlGbrPdrUe" (optional.Int32) - Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "DlNongbrPdrUe" (optional.Int32) - Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "UlNongbrPdrUe" (optional.Int32) - Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 + * @param "DlGbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlGbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlGbrDataVolumeUe" (optional.Int32) - Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlGbrDataVolumeUe" (optional.Int32) - Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "DlNongbrDataVolumeUe" (optional.Int32) - Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 + * @param "UlNongbrDataVolumeUe" (optional.Int32) - Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 + +@return L2Meas +*/ + +type Layer2MeasInfoGETOpts struct { + AppInsId optional.String + CellId optional.Interface + UeIpv4Address optional.Interface + UeIpv6Address optional.Interface + NatedIpAddress optional.Interface + GtpTeid optional.Interface + DlGbrPrbUsageCell optional.Int32 + UlGbrPrbUsageCell optional.Int32 + DlNongbrPrbUsageCell optional.Int32 + UlNongbrPrbUsageCell optional.Int32 + DlTotalPrbUsageCell optional.Int32 + UlTotalPrbUsageCell optional.Int32 + ReceivedDedicatedPreamblesCell optional.Int32 + ReceivedRandomlySelectedPreamblesLowRangeCell optional.Int32 + ReceivedRandomlySelectedPreamblesHighRangeCell optional.Int32 + NumberOfActiveUeDlGbrCell optional.Int32 + NumberOfActiveUeUlGbrCell optional.Int32 + NumberOfActiveUeDlNongbrCell optional.Int32 + NumberOfActiveUeUlNongbrCell optional.Int32 + DlGbrPdrCell optional.Int32 + UlGbrPdrCell optional.Int32 + DlNongbrPdrCell optional.Int32 + UlNongbrPdrCell optional.Int32 + DlGbrDelayUe optional.Int32 + UlGbrDelayUe optional.Int32 + DlNongbrDelayUe optional.Int32 + UlNongbrDelayUe optional.Int32 + DlGbrPdrUe optional.Int32 + UlGbrPdrUe optional.Int32 + DlNongbrPdrUe optional.Int32 + UlNongbrPdrUe optional.Int32 + DlGbrThroughputUe optional.Int32 + UlGbrThroughputUe optional.Int32 + DlNongbrThroughputUe optional.Int32 + UlNongbrThroughputUe optional.Int32 + DlGbrDataVolumeUe optional.Int32 + UlGbrDataVolumeUe optional.Int32 + DlNongbrDataVolumeUe optional.Int32 + UlNongbrDataVolumeUe optional.Int32 +} + +func (a *RniApiService) Layer2MeasInfoGET(ctx context.Context, localVarOptionals *Layer2MeasInfoGETOpts) (L2Meas, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue L2Meas + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/queries/layer2_meas" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if localVarOptionals != nil && localVarOptionals.AppInsId.IsSet() { + localVarQueryParams.Add("app_ins_id", parameterToString(localVarOptionals.AppInsId.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.CellId.IsSet() { + localVarQueryParams.Add("cell_id", parameterToString(localVarOptionals.CellId.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.UeIpv4Address.IsSet() { + localVarQueryParams.Add("ue_ipv4_address", parameterToString(localVarOptionals.UeIpv4Address.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.UeIpv6Address.IsSet() { + localVarQueryParams.Add("ue_ipv6_address", parameterToString(localVarOptionals.UeIpv6Address.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.NatedIpAddress.IsSet() { + localVarQueryParams.Add("nated_ip_address", parameterToString(localVarOptionals.NatedIpAddress.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.GtpTeid.IsSet() { + localVarQueryParams.Add("gtp_teid", parameterToString(localVarOptionals.GtpTeid.Value(), "multi")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("dl_gbr_prb_usage_cell", parameterToString(localVarOptionals.DlGbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("ul_gbr_prb_usage_cell", parameterToString(localVarOptionals.UlGbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("dl_nongbr_prb_usage_cell", parameterToString(localVarOptionals.DlNongbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrPrbUsageCell.IsSet() { + localVarQueryParams.Add("ul_nongbr_prb_usage_cell", parameterToString(localVarOptionals.UlNongbrPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlTotalPrbUsageCell.IsSet() { + localVarQueryParams.Add("dl_total_prb_usage_cell", parameterToString(localVarOptionals.DlTotalPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlTotalPrbUsageCell.IsSet() { + localVarQueryParams.Add("ul_total_prb_usage_cell", parameterToString(localVarOptionals.UlTotalPrbUsageCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ReceivedDedicatedPreamblesCell.IsSet() { + localVarQueryParams.Add("received_dedicated_preambles_cell", parameterToString(localVarOptionals.ReceivedDedicatedPreamblesCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.IsSet() { + localVarQueryParams.Add("received_randomly_selected_preambles_low_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.IsSet() { + localVarQueryParams.Add("received_randomly_selected_preambles_high_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlGbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_dl_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlGbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlGbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_ul_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlGbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlNongbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_dl_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlNongbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlNongbrCell.IsSet() { + localVarQueryParams.Add("number_of_active_ue_ul_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlNongbrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrPdrCell.IsSet() { + localVarQueryParams.Add("dl_gbr_pdr_cell", parameterToString(localVarOptionals.DlGbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrPdrCell.IsSet() { + localVarQueryParams.Add("ul_gbr_pdr_cell", parameterToString(localVarOptionals.UlGbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrPdrCell.IsSet() { + localVarQueryParams.Add("dl_nongbr_pdr_cell", parameterToString(localVarOptionals.DlNongbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrPdrCell.IsSet() { + localVarQueryParams.Add("ul_nongbr_pdr_cell", parameterToString(localVarOptionals.UlNongbrPdrCell.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrDelayUe.IsSet() { + localVarQueryParams.Add("dl_gbr_delay_ue", parameterToString(localVarOptionals.DlGbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrDelayUe.IsSet() { + localVarQueryParams.Add("ul_gbr_delay_ue", parameterToString(localVarOptionals.UlGbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrDelayUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_delay_ue", parameterToString(localVarOptionals.DlNongbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrDelayUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_delay_ue", parameterToString(localVarOptionals.UlNongbrDelayUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrPdrUe.IsSet() { + localVarQueryParams.Add("dl_gbr_pdr_ue", parameterToString(localVarOptionals.DlGbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrPdrUe.IsSet() { + localVarQueryParams.Add("ul_gbr_pdr_ue", parameterToString(localVarOptionals.UlGbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrPdrUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_pdr_ue", parameterToString(localVarOptionals.DlNongbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrPdrUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_pdr_ue", parameterToString(localVarOptionals.UlNongbrPdrUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrThroughputUe.IsSet() { + localVarQueryParams.Add("dl_gbr_throughput_ue", parameterToString(localVarOptionals.DlGbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrThroughputUe.IsSet() { + localVarQueryParams.Add("ul_gbr_throughput_ue", parameterToString(localVarOptionals.UlGbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrThroughputUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_throughput_ue", parameterToString(localVarOptionals.DlNongbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrThroughputUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_throughput_ue", parameterToString(localVarOptionals.UlNongbrThroughputUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlGbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("dl_gbr_data_volume_ue", parameterToString(localVarOptionals.DlGbrDataVolumeUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlGbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("ul_gbr_data_volume_ue", parameterToString(localVarOptionals.UlGbrDataVolumeUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.DlNongbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("dl_nongbr_data_volume_ue", parameterToString(localVarOptionals.DlNongbrDataVolumeUe.Value(), "")) + } + if localVarOptionals != nil && localVarOptionals.UlNongbrDataVolumeUe.IsSet() { + localVarQueryParams.Add("ul_nongbr_data_volume_ue", parameterToString(localVarOptionals.UlNongbrDataVolumeUe.Value(), "")) + } + // to determine the Content-Type header + localVarHttpContentTypes := []string{} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json", "application/problem+json"} + + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v L2Meas + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 400 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 401 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 403 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 404 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 406 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 414 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + if localVarHttpResponse.StatusCode == 429 { + var v ProblemDetails + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + /* RniApiService Retrieve information on the underlying Mobile Network that the MEC application is associated to Queries information about the Mobile Network diff --git a/go-packages/meep-rnis-client/api_unsupported.go b/go-packages/meep-rnis-client/api_unsupported.go index 50419ec71..ca08ea273 100644 --- a/go-packages/meep-rnis-client/api_unsupported.go +++ b/go-packages/meep-rnis-client/api_unsupported.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com @@ -41,370 +41,6 @@ var ( type UnsupportedApiService service -/* -UnsupportedApiService Retrieve information on layer 2 measurements -Queries information about the layer 2 measurements. - * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - * @param optional nil or *Layer2MeasInfoGETOpts - Optional Parameters: - * @param "AppInsId" (optional.String) - Application instance identifier - * @param "CellId" (optional.Interface of []string) - Comma separated list of E-UTRAN Cell Identities - * @param "UeIpv4Address" (optional.Interface of []string) - Comma separated list of IE IPv4 addresses as defined for the type for AssociateId - * @param "UeIpv6Address" (optional.Interface of []string) - Comma separated list of IE IPv6 addresses as defined for the type for AssociateId - * @param "NatedIpAddress" (optional.Interface of []string) - Comma separated list of IE NATed IP addresses as defined for the type for AssociateId - * @param "GtpTeid" (optional.Interface of []string) - Comma separated list of GTP TEID addresses as defined for the type for AssociateId - * @param "DlGbrPrbUsageCell" (optional.Int32) - PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlGbrPrbUsageCell" (optional.Int32) - PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlNongbrPrbUsageCell" (optional.Int32) - PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlNongbrPrbUsageCell" (optional.Int32) - PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlTotalPrbUsageCell" (optional.Int32) - PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 - * @param "UlTotalPrbUsageCell" (optional.Int32) - PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 - * @param "ReceivedDedicatedPreamblesCell" (optional.Int32) - Received dedicated preambles in percentage as defined in ETSI TS 136 314 - * @param "ReceivedRandomlySelectedPreamblesLowRangeCell" (optional.Int32) - Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 - * @param "ReceivedRandomlySelectedPreamblesHighRangeCell" (optional.Int32) - Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeDlGbrCell" (optional.Int32) - Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeUlGbrCell" (optional.Int32) - Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeDlNongbrCell" (optional.Int32) - Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 - * @param "NumberOfActiveUeUlNongbrCell" (optional.Int32) - Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 - * @param "DlGbrPdrCell" (optional.Int32) - Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlGbrPdrCell" (optional.Int32) - Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlNongbrPdrCell" (optional.Int32) - Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "UlNongbrPdrCell" (optional.Int32) - Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 - * @param "DlGbrDelayUe" (optional.Int32) - Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlGbrDelayUe" (optional.Int32) - Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlNongbrDelayUe" (optional.Int32) - Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlNongbrDelayUe" (optional.Int32) - Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlGbrPdrUe" (optional.Int32) - Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "UlGbrPdrUe" (optional.Int32) - Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "DlNongbrPdrUe" (optional.Int32) - Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "UlNongbrPdrUe" (optional.Int32) - Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 - * @param "DlGbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlGbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlNongbrThroughputUe" (optional.Int32) - Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlGbrDataVolumeUe" (optional.Int32) - Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlGbrDataVolumeUe" (optional.Int32) - Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "DlNongbrDataVolumeUe" (optional.Int32) - Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 - * @param "UlNongbrDataVolumeUe" (optional.Int32) - Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 - -@return L2Meas -*/ - -type Layer2MeasInfoGETOpts struct { - AppInsId optional.String - CellId optional.Interface - UeIpv4Address optional.Interface - UeIpv6Address optional.Interface - NatedIpAddress optional.Interface - GtpTeid optional.Interface - DlGbrPrbUsageCell optional.Int32 - UlGbrPrbUsageCell optional.Int32 - DlNongbrPrbUsageCell optional.Int32 - UlNongbrPrbUsageCell optional.Int32 - DlTotalPrbUsageCell optional.Int32 - UlTotalPrbUsageCell optional.Int32 - ReceivedDedicatedPreamblesCell optional.Int32 - ReceivedRandomlySelectedPreamblesLowRangeCell optional.Int32 - ReceivedRandomlySelectedPreamblesHighRangeCell optional.Int32 - NumberOfActiveUeDlGbrCell optional.Int32 - NumberOfActiveUeUlGbrCell optional.Int32 - NumberOfActiveUeDlNongbrCell optional.Int32 - NumberOfActiveUeUlNongbrCell optional.Int32 - DlGbrPdrCell optional.Int32 - UlGbrPdrCell optional.Int32 - DlNongbrPdrCell optional.Int32 - UlNongbrPdrCell optional.Int32 - DlGbrDelayUe optional.Int32 - UlGbrDelayUe optional.Int32 - DlNongbrDelayUe optional.Int32 - UlNongbrDelayUe optional.Int32 - DlGbrPdrUe optional.Int32 - UlGbrPdrUe optional.Int32 - DlNongbrPdrUe optional.Int32 - UlNongbrPdrUe optional.Int32 - DlGbrThroughputUe optional.Int32 - UlGbrThroughputUe optional.Int32 - DlNongbrThroughputUe optional.Int32 - UlNongbrThroughputUe optional.Int32 - DlGbrDataVolumeUe optional.Int32 - UlGbrDataVolumeUe optional.Int32 - DlNongbrDataVolumeUe optional.Int32 - UlNongbrDataVolumeUe optional.Int32 -} - -func (a *UnsupportedApiService) Layer2MeasInfoGET(ctx context.Context, localVarOptionals *Layer2MeasInfoGETOpts) (L2Meas, *http.Response, error) { - var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte - localVarReturnValue L2Meas - ) - - // create path and map variables - localVarPath := a.client.cfg.BasePath + "/queries/layer2_meas" - - localVarHeaderParams := make(map[string]string) - localVarQueryParams := url.Values{} - localVarFormParams := url.Values{} - - if localVarOptionals != nil && localVarOptionals.AppInsId.IsSet() { - localVarQueryParams.Add("app_ins_id", parameterToString(localVarOptionals.AppInsId.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.CellId.IsSet() { - localVarQueryParams.Add("cell_id", parameterToString(localVarOptionals.CellId.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.UeIpv4Address.IsSet() { - localVarQueryParams.Add("ue_ipv4_address", parameterToString(localVarOptionals.UeIpv4Address.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.UeIpv6Address.IsSet() { - localVarQueryParams.Add("ue_ipv6_address", parameterToString(localVarOptionals.UeIpv6Address.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.NatedIpAddress.IsSet() { - localVarQueryParams.Add("nated_ip_address", parameterToString(localVarOptionals.NatedIpAddress.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.GtpTeid.IsSet() { - localVarQueryParams.Add("gtp_teid", parameterToString(localVarOptionals.GtpTeid.Value(), "multi")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("dl_gbr_prb_usage_cell", parameterToString(localVarOptionals.DlGbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("ul_gbr_prb_usage_cell", parameterToString(localVarOptionals.UlGbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("dl_nongbr_prb_usage_cell", parameterToString(localVarOptionals.DlNongbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrPrbUsageCell.IsSet() { - localVarQueryParams.Add("ul_nongbr_prb_usage_cell", parameterToString(localVarOptionals.UlNongbrPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlTotalPrbUsageCell.IsSet() { - localVarQueryParams.Add("dl_total_prb_usage_cell", parameterToString(localVarOptionals.DlTotalPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlTotalPrbUsageCell.IsSet() { - localVarQueryParams.Add("ul_total_prb_usage_cell", parameterToString(localVarOptionals.UlTotalPrbUsageCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ReceivedDedicatedPreamblesCell.IsSet() { - localVarQueryParams.Add("received_dedicated_preambles_cell", parameterToString(localVarOptionals.ReceivedDedicatedPreamblesCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.IsSet() { - localVarQueryParams.Add("received_randomly_selected_preambles_low_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesLowRangeCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.IsSet() { - localVarQueryParams.Add("received_randomly_selected_preambles_high_range_cell", parameterToString(localVarOptionals.ReceivedRandomlySelectedPreamblesHighRangeCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlGbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_dl_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlGbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlGbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_ul_gbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlGbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeDlNongbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_dl_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeDlNongbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.NumberOfActiveUeUlNongbrCell.IsSet() { - localVarQueryParams.Add("number_of_active_ue_ul_nongbr_cell", parameterToString(localVarOptionals.NumberOfActiveUeUlNongbrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrPdrCell.IsSet() { - localVarQueryParams.Add("dl_gbr_pdr_cell", parameterToString(localVarOptionals.DlGbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrPdrCell.IsSet() { - localVarQueryParams.Add("ul_gbr_pdr_cell", parameterToString(localVarOptionals.UlGbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrPdrCell.IsSet() { - localVarQueryParams.Add("dl_nongbr_pdr_cell", parameterToString(localVarOptionals.DlNongbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrPdrCell.IsSet() { - localVarQueryParams.Add("ul_nongbr_pdr_cell", parameterToString(localVarOptionals.UlNongbrPdrCell.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrDelayUe.IsSet() { - localVarQueryParams.Add("dl_gbr_delay_ue", parameterToString(localVarOptionals.DlGbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrDelayUe.IsSet() { - localVarQueryParams.Add("ul_gbr_delay_ue", parameterToString(localVarOptionals.UlGbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrDelayUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_delay_ue", parameterToString(localVarOptionals.DlNongbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrDelayUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_delay_ue", parameterToString(localVarOptionals.UlNongbrDelayUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrPdrUe.IsSet() { - localVarQueryParams.Add("dl_gbr_pdr_ue", parameterToString(localVarOptionals.DlGbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrPdrUe.IsSet() { - localVarQueryParams.Add("ul_gbr_pdr_ue", parameterToString(localVarOptionals.UlGbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrPdrUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_pdr_ue", parameterToString(localVarOptionals.DlNongbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrPdrUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_pdr_ue", parameterToString(localVarOptionals.UlNongbrPdrUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrThroughputUe.IsSet() { - localVarQueryParams.Add("dl_gbr_throughput_ue", parameterToString(localVarOptionals.DlGbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrThroughputUe.IsSet() { - localVarQueryParams.Add("ul_gbr_throughput_ue", parameterToString(localVarOptionals.UlGbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrThroughputUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_throughput_ue", parameterToString(localVarOptionals.DlNongbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrThroughputUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_throughput_ue", parameterToString(localVarOptionals.UlNongbrThroughputUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlGbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("dl_gbr_data_volume_ue", parameterToString(localVarOptionals.DlGbrDataVolumeUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlGbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("ul_gbr_data_volume_ue", parameterToString(localVarOptionals.UlGbrDataVolumeUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DlNongbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("dl_nongbr_data_volume_ue", parameterToString(localVarOptionals.DlNongbrDataVolumeUe.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.UlNongbrDataVolumeUe.IsSet() { - localVarQueryParams.Add("ul_nongbr_data_volume_ue", parameterToString(localVarOptionals.UlNongbrDataVolumeUe.Value(), "")) - } - // to determine the Content-Type header - localVarHttpContentTypes := []string{} - - // set Content-Type header - localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) - if localVarHttpContentType != "" { - localVarHeaderParams["Content-Type"] = localVarHttpContentType - } - - // to determine the Accept header - localVarHttpHeaderAccepts := []string{"application/json", "application/problem+json"} - - // set Accept header - localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) - if localVarHttpHeaderAccept != "" { - localVarHeaderParams["Accept"] = localVarHttpHeaderAccept - } - r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) - if err != nil { - return localVarReturnValue, nil, err - } - - localVarHttpResponse, err := a.client.callAPI(r) - if err != nil || localVarHttpResponse == nil { - return localVarReturnValue, localVarHttpResponse, err - } - - localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) - localVarHttpResponse.Body.Close() - if err != nil { - return localVarReturnValue, localVarHttpResponse, err - } - - if localVarHttpResponse.StatusCode < 300 { - // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { - return localVarReturnValue, localVarHttpResponse, err - } - } - - if localVarHttpResponse.StatusCode >= 300 { - newErr := GenericSwaggerError{ - body: localVarBody, - error: localVarHttpResponse.Status, - } - - if localVarHttpResponse.StatusCode == 200 { - var v L2Meas - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 400 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 401 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 403 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 404 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 406 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 414 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - if localVarHttpResponse.StatusCode == 429 { - var v ProblemDetails - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() - return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, newErr - } - - return localVarReturnValue, localVarHttpResponse, nil -} - /* UnsupportedApiService Retrieve S1-U bearer information related to specific UE(s) Queries information about the S1 bearer(s) diff --git a/go-packages/meep-rnis-client/client.go b/go-packages/meep-rnis-client/client.go index 1278d934c..1648006f2 100644 --- a/go-packages/meep-rnis-client/client.go +++ b/go-packages/meep-rnis-client/client.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/configuration.go b/go-packages/meep-rnis-client/configuration.go index c8874f898..6771a06d9 100644 --- a/go-packages/meep-rnis-client/configuration.go +++ b/go-packages/meep-rnis-client/configuration.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/docs/RniApi.md b/go-packages/meep-rnis-client/docs/RniApi.md index 2fc98ccdc..c97412fe3 100644 --- a/go-packages/meep-rnis-client/docs/RniApi.md +++ b/go-packages/meep-rnis-client/docs/RniApi.md @@ -4,6 +4,7 @@ All URIs are relative to *https://localhost/sandboxname/rni/v2* Method | HTTP request | Description ------------- | ------------- | ------------- +[**Layer2MeasInfoGET**](RniApi.md#Layer2MeasInfoGET) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements [**PlmnInfoGET**](RniApi.md#PlmnInfoGET) | **Get** /queries/plmn_info | Retrieve information on the underlying Mobile Network that the MEC application is associated to [**RabInfoGET**](RniApi.md#RabInfoGET) | **Get** /queries/rab_info | Retrieve information on Radio Access Bearers [**SubscriptionLinkListSubscriptionsGET**](RniApi.md#SubscriptionLinkListSubscriptionsGET) | **Get** /subscriptions | Retrieve information on subscriptions for notifications @@ -13,6 +14,79 @@ Method | HTTP request | Description [**SubscriptionsPUT**](RniApi.md#SubscriptionsPUT) | **Put** /subscriptions/{subscriptionId} | Modify an existing subscription +# **Layer2MeasInfoGET** +> L2Meas Layer2MeasInfoGET(ctx, optional) +Retrieve information on layer 2 measurements + +Queries information about the layer 2 measurements. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. + **optional** | ***Layer2MeasInfoGETOpts** | optional parameters | nil if no parameters + +### Optional Parameters +Optional parameters are passed through a pointer to a Layer2MeasInfoGETOpts struct + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **appInsId** | **optional.String**| Application instance identifier | + **cellId** | [**optional.Interface of []string**](string.md)| Comma separated list of E-UTRAN Cell Identities | + **ueIpv4Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | + **ueIpv6Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | + **natedIpAddress** | [**optional.Interface of []string**](string.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | + **gtpTeid** | [**optional.Interface of []string**](string.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | + **dlGbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulGbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlNongbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulNongbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlTotalPrbUsageCell** | **optional.Int32**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | + **ulTotalPrbUsageCell** | **optional.Int32**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | + **receivedDedicatedPreamblesCell** | **optional.Int32**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | + **receivedRandomlySelectedPreamblesLowRangeCell** | **optional.Int32**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | + **receivedRandomlySelectedPreamblesHighRangeCell** | **optional.Int32**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | + **numberOfActiveUeDlGbrCell** | **optional.Int32**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | + **numberOfActiveUeUlGbrCell** | **optional.Int32**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | + **numberOfActiveUeDlNongbrCell** | **optional.Int32**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | + **numberOfActiveUeUlNongbrCell** | **optional.Int32**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | + **dlGbrPdrCell** | **optional.Int32**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulGbrPdrCell** | **optional.Int32**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlNongbrPdrCell** | **optional.Int32**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **ulNongbrPdrCell** | **optional.Int32**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | + **dlGbrDelayUe** | **optional.Int32**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulGbrDelayUe** | **optional.Int32**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlNongbrDelayUe** | **optional.Int32**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulNongbrDelayUe** | **optional.Int32**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlGbrPdrUe** | **optional.Int32**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **ulGbrPdrUe** | **optional.Int32**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **dlNongbrPdrUe** | **optional.Int32**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **ulNongbrPdrUe** | **optional.Int32**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | + **dlGbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulGbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlGbrDataVolumeUe** | **optional.Int32**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulGbrDataVolumeUe** | **optional.Int32**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | + **dlNongbrDataVolumeUe** | **optional.Int32**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + **ulNongbrDataVolumeUe** | **optional.Int32**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | + +### Return type + +[**L2Meas**](L2Meas.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json, application/problem+json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **PlmnInfoGET** > PlmnInfo PlmnInfoGET(ctx, appInsId) Retrieve information on the underlying Mobile Network that the MEC application is associated to diff --git a/go-packages/meep-rnis-client/docs/UnsupportedApi.md b/go-packages/meep-rnis-client/docs/UnsupportedApi.md index 7dd1e52f4..6067bf529 100644 --- a/go-packages/meep-rnis-client/docs/UnsupportedApi.md +++ b/go-packages/meep-rnis-client/docs/UnsupportedApi.md @@ -4,83 +4,9 @@ All URIs are relative to *https://localhost/sandboxname/rni/v2* Method | HTTP request | Description ------------- | ------------- | ------------- -[**Layer2MeasInfoGET**](UnsupportedApi.md#Layer2MeasInfoGET) | **Get** /queries/layer2_meas | Retrieve information on layer 2 measurements [**S1BearerInfoGET**](UnsupportedApi.md#S1BearerInfoGET) | **Get** /queries/s1_bearer_info | Retrieve S1-U bearer information related to specific UE(s) -# **Layer2MeasInfoGET** -> L2Meas Layer2MeasInfoGET(ctx, optional) -Retrieve information on layer 2 measurements - -Queries information about the layer 2 measurements. - -### Required Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc. - **optional** | ***Layer2MeasInfoGETOpts** | optional parameters | nil if no parameters - -### Optional Parameters -Optional parameters are passed through a pointer to a Layer2MeasInfoGETOpts struct - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **appInsId** | **optional.String**| Application instance identifier | - **cellId** | [**optional.Interface of []string**](string.md)| Comma separated list of E-UTRAN Cell Identities | - **ueIpv4Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv4 addresses as defined for the type for AssociateId | - **ueIpv6Address** | [**optional.Interface of []string**](string.md)| Comma separated list of IE IPv6 addresses as defined for the type for AssociateId | - **natedIpAddress** | [**optional.Interface of []string**](string.md)| Comma separated list of IE NATed IP addresses as defined for the type for AssociateId | - **gtpTeid** | [**optional.Interface of []string**](string.md)| Comma separated list of GTP TEID addresses as defined for the type for AssociateId | - **dlGbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulGbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlNongbrPrbUsageCell** | **optional.Int32**| PRB usage for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulNongbrPrbUsageCell** | **optional.Int32**| PRB usage for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlTotalPrbUsageCell** | **optional.Int32**| PRB usage for total downlink traffic in percentage as defined in ETSI TS 136 314 | - **ulTotalPrbUsageCell** | **optional.Int32**| PRB usage for total uplink traffic in percentage as defined in ETSI TS 136 314 | - **receivedDedicatedPreamblesCell** | **optional.Int32**| Received dedicated preambles in percentage as defined in ETSI TS 136 314 | - **receivedRandomlySelectedPreamblesLowRangeCell** | **optional.Int32**| Received randomly selected preambles in the low range in percentage as defined in ETSI TS 136 314 | - **receivedRandomlySelectedPreamblesHighRangeCell** | **optional.Int32**| Received rendomly selected preambles in the high range in percentage as defined in ETSI TS 136 314 | - **numberOfActiveUeDlGbrCell** | **optional.Int32**| Number of active UEs with downlink GBR traffic as defined in ETSI TS 136 314 | - **numberOfActiveUeUlGbrCell** | **optional.Int32**| Number of active UEs with uplink GBR traffic as defined in ETSI TS 136 314 | - **numberOfActiveUeDlNongbrCell** | **optional.Int32**| Number of active UEs with downlink non-GBR traffic as defined in ETSI TS 136 314 | - **numberOfActiveUeUlNongbrCell** | **optional.Int32**| Number of active UEs with uplink non-GBR traffic as defined in ETSI TS 136 314 | - **dlGbrPdrCell** | **optional.Int32**| Packet discard rate for downlink GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulGbrPdrCell** | **optional.Int32**| Packet discard rate for uplink GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlNongbrPdrCell** | **optional.Int32**| Packet discard rate for downlink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **ulNongbrPdrCell** | **optional.Int32**| Packet discard rate for uplink non-GBR traffic in percentage as defined in ETSI TS 136 314 | - **dlGbrDelayUe** | **optional.Int32**| Packet delay of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulGbrDelayUe** | **optional.Int32**| Packet delay of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlNongbrDelayUe** | **optional.Int32**| Packet delay of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulNongbrDelayUe** | **optional.Int32**| Packet delay of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlGbrPdrUe** | **optional.Int32**| Packet discard rate of downlink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **ulGbrPdrUe** | **optional.Int32**| Packet discard rate of uplink GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **dlNongbrPdrUe** | **optional.Int32**| Packet discard rate of downlink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **ulNongbrPdrUe** | **optional.Int32**| Packet discard rate of uplink non-GBR traffic of a UE in percentage as defined in ETSI TS 136 314 | - **dlGbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulGbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulNongbrThroughputUe** | **optional.Int32**| Scheduled throughput of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlGbrDataVolumeUe** | **optional.Int32**| Data volume of downlink GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulGbrDataVolumeUe** | **optional.Int32**| Data volume of uplink GBR traffic of a UE as defined in ETSI TS 136 314 | - **dlNongbrDataVolumeUe** | **optional.Int32**| Data volume of downlink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - **ulNongbrDataVolumeUe** | **optional.Int32**| Data volume of uplink non-GBR traffic of a UE as defined in ETSI TS 136 314 | - -### Return type - -[**L2Meas**](L2Meas.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json, application/problem+json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **S1BearerInfoGET** > S1BearerInfo S1BearerInfoGET(ctx, optional) Retrieve S1-U bearer information related to specific UE(s) diff --git a/go-packages/meep-rnis-client/model_associate_id.go b/go-packages/meep-rnis-client/model_associate_id.go index 3862f815e..378b16ae9 100644 --- a/go-packages/meep-rnis-client/model_associate_id.go +++ b/go-packages/meep-rnis-client/model_associate_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_notification.go b/go-packages/meep-rnis-client/model_ca_reconf_notification.go index bdc5b1623..2cf7fd62b 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_notification.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go b/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go index f5bd05c26..c22f76f27 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go b/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go index a0e4a9da8..77ddc258f 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_notification_secondary_cell_add.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_subscription.go b/go-packages/meep-rnis-client/model_ca_reconf_subscription.go index 7cc9d2196..36127818b 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_subscription.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go b/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go index a2a9effaf..76983e476 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_subscription__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go b/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go index 4df7c75f3..53c9ed639 100644 --- a/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go +++ b/go-packages/meep-rnis-client/model_ca_reconf_subscription_filter_criteria_assoc.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_notification.go b/go-packages/meep-rnis-client/model_cell_change_notification.go index 051c40fcf..34b27f698 100644 --- a/go-packages/meep-rnis-client/model_cell_change_notification.go +++ b/go-packages/meep-rnis-client/model_cell_change_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go b/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go index fd18dc35b..6cf351dbf 100644 --- a/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go +++ b/go-packages/meep-rnis-client/model_cell_change_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_subscription.go b/go-packages/meep-rnis-client/model_cell_change_subscription.go index 2a4821c8b..cc6e2bbc6 100644 --- a/go-packages/meep-rnis-client/model_cell_change_subscription.go +++ b/go-packages/meep-rnis-client/model_cell_change_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go b/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go index 8ad8bf733..81408a296 100644 --- a/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go +++ b/go-packages/meep-rnis-client/model_cell_change_subscription_filter_criteria_assoc_ho.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_ecgi.go b/go-packages/meep-rnis-client/model_ecgi.go index 6ee19f992..2064f0c7a 100644 --- a/go-packages/meep-rnis-client/model_ecgi.go +++ b/go-packages/meep-rnis-client/model_ecgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_expiry_notification.go b/go-packages/meep-rnis-client/model_expiry_notification.go index f6d4a6f0e..f5470c89d 100644 --- a/go-packages/meep-rnis-client/model_expiry_notification.go +++ b/go-packages/meep-rnis-client/model_expiry_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_expiry_notification__links.go b/go-packages/meep-rnis-client/model_expiry_notification__links.go index 5149f46dd..ff310ef58 100644 --- a/go-packages/meep-rnis-client/model_expiry_notification__links.go +++ b/go-packages/meep-rnis-client/model_expiry_notification__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_inline_notification.go b/go-packages/meep-rnis-client/model_inline_notification.go index 7c9c07584..fca05ee35 100644 --- a/go-packages/meep-rnis-client/model_inline_notification.go +++ b/go-packages/meep-rnis-client/model_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_l2_meas.go b/go-packages/meep-rnis-client/model_l2_meas.go index 7fa5c7ac9..55a32e9ad 100644 --- a/go-packages/meep-rnis-client/model_l2_meas.go +++ b/go-packages/meep-rnis-client/model_l2_meas.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_l2_meas_cell_info.go b/go-packages/meep-rnis-client/model_l2_meas_cell_info.go index 0dbedf119..7d0e461fd 100644 --- a/go-packages/meep-rnis-client/model_l2_meas_cell_info.go +++ b/go-packages/meep-rnis-client/model_l2_meas_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go b/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go index 5567cbbcc..c6c356a13 100644 --- a/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go +++ b/go-packages/meep-rnis-client/model_l2_meas_cell_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_link_type.go b/go-packages/meep-rnis-client/model_link_type.go index 9ce0f4b58..e57751858 100644 --- a/go-packages/meep-rnis-client/model_link_type.go +++ b/go-packages/meep-rnis-client/model_link_type.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go b/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go index eb25b347f..36eca27b4 100644 --- a/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go +++ b/go-packages/meep-rnis-client/model_meas_quantity_results_nr.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go index e23a1684f..2aa0509e2 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go index 84c59af3b..b1402d6e0 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_carrier_aggregation_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go index 946661b16..daec86587 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_eutran_neighbour_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go index a35d393ba..710e76197 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go index ec6bf1393..284075054 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_new_radio_meas_nei_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go index 57a021fe1..070794af9 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go index b71fb6cd6..fa78a01db 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_bn_cs_nr_bn_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go index fadf90176..0bb6de425 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_n_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go index 2db4ca2c3..cb779c62b 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go index da90f60f6..437a3830d 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_notification_nr_s_cs_nr_s_cell_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go index 5cdf9f9a2..8f196e97f 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go index 7da127822..c815d5b55 100644 --- a/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go +++ b/go-packages/meep-rnis-client/model_meas_rep_ue_subscription_filter_criteria_assoc_tri.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_ta_notification.go b/go-packages/meep-rnis-client/model_meas_ta_notification.go index 86f269433..87f3d34a1 100644 --- a/go-packages/meep-rnis-client/model_meas_ta_notification.go +++ b/go-packages/meep-rnis-client/model_meas_ta_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_meas_ta_subscription.go b/go-packages/meep-rnis-client/model_meas_ta_subscription.go index 243cfaedd..614af54f0 100644 --- a/go-packages/meep-rnis-client/model_meas_ta_subscription.go +++ b/go-packages/meep-rnis-client/model_meas_ta_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_n_rcgi.go b/go-packages/meep-rnis-client/model_n_rcgi.go index 22a81245c..ecf5af277 100644 --- a/go-packages/meep-rnis-client/model_n_rcgi.go +++ b/go-packages/meep-rnis-client/model_n_rcgi.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go index bab8a2ab9..ceb2babcb 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go index e5022c2b3..c8a3fa209 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_eutra_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go index 3ec90c657..8559f6422 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_n_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go index e407ddcac..70c779437 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_nr_neigh_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go index 563db751f..f3793b30c 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_s_cell.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go index 807a43661..43190f7ef 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_notification_serv_cell_meas_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go index ca6fda1c1..e7666a1fb 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go index e2537180e..da6a0eb48 100644 --- a/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go +++ b/go-packages/meep-rnis-client/model_nr_meas_rep_ue_subscription_filter_criteria_nr_mrs.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_one_of_inline_notification.go b/go-packages/meep-rnis-client/model_one_of_inline_notification.go index 0643a9800..ab3fb8f82 100644 --- a/go-packages/meep-rnis-client/model_one_of_inline_notification.go +++ b/go-packages/meep-rnis-client/model_one_of_inline_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_one_of_inline_subscription.go b/go-packages/meep-rnis-client/model_one_of_inline_subscription.go index c33ce50d3..07fb92189 100644 --- a/go-packages/meep-rnis-client/model_one_of_inline_subscription.go +++ b/go-packages/meep-rnis-client/model_one_of_inline_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_plmn.go b/go-packages/meep-rnis-client/model_plmn.go index d457551cf..003812a0f 100644 --- a/go-packages/meep-rnis-client/model_plmn.go +++ b/go-packages/meep-rnis-client/model_plmn.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_plmn_info.go b/go-packages/meep-rnis-client/model_plmn_info.go index 5edcf3beb..f8b85af39 100644 --- a/go-packages/meep-rnis-client/model_plmn_info.go +++ b/go-packages/meep-rnis-client/model_plmn_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_problem_details.go b/go-packages/meep-rnis-client/model_problem_details.go index e20c06d8f..3165bcc31 100644 --- a/go-packages/meep-rnis-client/model_problem_details.go +++ b/go-packages/meep-rnis-client/model_problem_details.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification.go b/go-packages/meep-rnis-client/model_rab_est_notification.go index 7247831ac..ac6a00778 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go index 232fd71c0..4581bfa5a 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go index 372681621..beae80681 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go b/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go index 5d473bff0..347c5288b 100644 --- a/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go +++ b/go-packages/meep-rnis-client/model_rab_est_notification_temp_ue_id.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_subscription.go b/go-packages/meep-rnis-client/model_rab_est_subscription.go index 8d3e1c4f4..bcb65405b 100644 --- a/go-packages/meep-rnis-client/model_rab_est_subscription.go +++ b/go-packages/meep-rnis-client/model_rab_est_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go b/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go index 198db021c..452c83f53 100644 --- a/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go +++ b/go-packages/meep-rnis-client/model_rab_est_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info.go b/go-packages/meep-rnis-client/model_rab_info.go index 8ce8d4b3b..2a48124a6 100644 --- a/go-packages/meep-rnis-client/model_rab_info.go +++ b/go-packages/meep-rnis-client/model_rab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go b/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go index 01446b60d..da8c193ae 100644 --- a/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go +++ b/go-packages/meep-rnis-client/model_rab_info_cell_user_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info_erab_info.go b/go-packages/meep-rnis-client/model_rab_info_erab_info.go index 2e2f9f430..be1b30f89 100644 --- a/go-packages/meep-rnis-client/model_rab_info_erab_info.go +++ b/go-packages/meep-rnis-client/model_rab_info_erab_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_info_ue_info.go b/go-packages/meep-rnis-client/model_rab_info_ue_info.go index 6975400f5..b24698b8d 100644 --- a/go-packages/meep-rnis-client/model_rab_info_ue_info.go +++ b/go-packages/meep-rnis-client/model_rab_info_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_notification.go b/go-packages/meep-rnis-client/model_rab_mod_notification.go index 4358035c6..060aea757 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_notification.go +++ b/go-packages/meep-rnis-client/model_rab_mod_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go index 651434594..2cbf9f01a 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go +++ b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go index 986816f5a..594ad692b 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go +++ b/go-packages/meep-rnis-client/model_rab_mod_notification_erab_qos_parameters_qos_information.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_subscription.go b/go-packages/meep-rnis-client/model_rab_mod_subscription.go index 51c61172e..5f6629be1 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_subscription.go +++ b/go-packages/meep-rnis-client/model_rab_mod_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go b/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go index 707e2415a..a977244eb 100644 --- a/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go +++ b/go-packages/meep-rnis-client/model_rab_mod_subscription_filter_criteria_qci.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_rel_notification.go b/go-packages/meep-rnis-client/model_rab_rel_notification.go index 50535fd26..73609db5c 100644 --- a/go-packages/meep-rnis-client/model_rab_rel_notification.go +++ b/go-packages/meep-rnis-client/model_rab_rel_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go b/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go index c36216600..186c00a4c 100644 --- a/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go +++ b/go-packages/meep-rnis-client/model_rab_rel_notification_erab_release_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rab_rel_subscription.go b/go-packages/meep-rnis-client/model_rab_rel_subscription.go index 985a0815a..0ce6ca8a8 100644 --- a/go-packages/meep-rnis-client/model_rab_rel_subscription.go +++ b/go-packages/meep-rnis-client/model_rab_rel_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go b/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go index 38b0dd158..c15a70f33 100644 --- a/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go +++ b/go-packages/meep-rnis-client/model_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go index 0d44f7f62..07cf89437 100644 --- a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go +++ b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go index 6c21c5d9d..afee8068e 100644 --- a/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go +++ b/go-packages/meep-rnis-client/model_results_per_csi_rs_index_list_results_per_csi_rs_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_ssb_index.go b/go-packages/meep-rnis-client/model_results_per_ssb_index.go index 01b6af516..5ad86e3c1 100644 --- a/go-packages/meep-rnis-client/model_results_per_ssb_index.go +++ b/go-packages/meep-rnis-client/model_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go b/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go index 947eb1fcc..979e55081 100644 --- a/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go +++ b/go-packages/meep-rnis-client/model_results_per_ssb_index_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go b/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go index 9d40e635b..3250727c9 100644 --- a/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go +++ b/go-packages/meep-rnis-client/model_results_per_ssb_index_list_results_per_ssb_index.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_rs_index_results.go b/go-packages/meep-rnis-client/model_rs_index_results.go index 37270d5c8..611fc7c7a 100644 --- a/go-packages/meep-rnis-client/model_rs_index_results.go +++ b/go-packages/meep-rnis-client/model_rs_index_results.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info.go index 5ca1c0241..c26f6b408 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go index 532aa72cc..b4e06e368 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_enb_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go index 6b96dbe5f..7d07b81fe 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_bearer_info_detailed.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go index 72d1af6b6..5e34a92d4 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go b/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go index 6a6188251..0ced51f30 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_info_s_gw_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_notification.go b/go-packages/meep-rnis-client/model_s1_bearer_notification.go index 1e4996b9e..cc795e02a 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_notification.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_notification.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go b/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go index 12813ea36..badeb2993 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_notification_s1_ue_info.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_subscription.go b/go-packages/meep-rnis-client/model_s1_bearer_subscription.go index 48cf0bdb7..db536f243 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_subscription.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go b/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go index e2fd70197..43d9a7db0 100644 --- a/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go +++ b/go-packages/meep-rnis-client/model_s1_bearer_subscription_s1_bearer_subscription_criteria.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_subscription_link_list.go b/go-packages/meep-rnis-client/model_subscription_link_list.go index e5fc3a41d..d49ec65b4 100644 --- a/go-packages/meep-rnis-client/model_subscription_link_list.go +++ b/go-packages/meep-rnis-client/model_subscription_link_list.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_subscription_link_list__links.go b/go-packages/meep-rnis-client/model_subscription_link_list__links.go index 23aa7a557..499f2c4f5 100644 --- a/go-packages/meep-rnis-client/model_subscription_link_list__links.go +++ b/go-packages/meep-rnis-client/model_subscription_link_list__links.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go b/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go index 8d2ee2a09..83e46abbc 100644 --- a/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go +++ b/go-packages/meep-rnis-client/model_subscription_link_list__links_subscription.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/model_time_stamp.go b/go-packages/meep-rnis-client/model_time_stamp.go index 0cd233519..35e1a048a 100644 --- a/go-packages/meep-rnis-client/model_time_stamp.go +++ b/go-packages/meep-rnis-client/model_time_stamp.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com diff --git a/go-packages/meep-rnis-client/response.go b/go-packages/meep-rnis-client/response.go index c26e57480..3f529d2ea 100644 --- a/go-packages/meep-rnis-client/response.go +++ b/go-packages/meep-rnis-client/response.go @@ -15,7 +15,7 @@ * * AdvantEDGE Radio Network Information Service REST API * - * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription + * Radio Network Information Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC012 RNI API](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/02.01.01_60/gs_MEC012v020101p.pdf)

    [Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)

    **Micro-service**
    [meep-rnis](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-rnis)

    **Type & Usage**
    Edge Service used by edge applications that want to get information about radio conditions in the network

    **Details**
    API details available at _your-AdvantEDGE-ip-address/api_

    AdvantEDGE supports a selected subset of RNI API endpoints (see below) and a subset of subscription types.

    Supported subscriptions:

    - CellChangeSubscription

    - RabEstSubscription

    - RabRelSubscription

    - MeasRepUeSubscription

    - NrMeasRepUeSubscription * * API version: 2.1.1 * Contact: AdvantEDGE@InterDigital.com -- GitLab From d2f266d12f23a2468ce6beb412729ba46df2b9de Mon Sep 17 00:00:00 2001 From: Kevin Di Lallo Date: Mon, 25 Jan 2021 16:49:42 -0500 Subject: [PATCH 031/194] enabled auth-svc by default with default permissions set to allow all requests --- .meepctl-repocfg.yaml | 14 +- config/permissions.yaml | 1064 +++++++++++++++++++-------------------- 2 files changed, 539 insertions(+), 539 deletions(-) diff --git a/.meepctl-repocfg.yaml b/.meepctl-repocfg.yaml index 129079b78..bca60372b 100644 --- a/.meepctl-repocfg.yaml +++ b/.meepctl-repocfg.yaml @@ -48,7 +48,7 @@ repo: # authentication & authorization config auth: # enable authentication & authorization - enabled: false + enabled: true # Session config session: # session encryption key k8s secret (data: encryption-key) @@ -58,7 +58,7 @@ repo: # GitHub OAuth provider config github: # enable GitHub OAuth - enabled: true + enabled: false # authorization url auth-url: https://github.com/login/oauth/authorize # access token url @@ -70,7 +70,7 @@ repo: # GitLab OAuth provider config gitlab: # enable GitLab OAuth - enabled: true + enabled: false # authorization url auth-url: https://gitlab.com/oauth/authorize # access token url @@ -99,15 +99,15 @@ repo: # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-auth-svc.yaml # enable meepctl build - build: false + build: true # enable meepctl dockerize - dockerize: false + dockerize: true # enable meepctl deploy/delete - deploy: false + deploy: true # supports code coverage measurement when built in codecov mode codecov: true # supports linting - lint: false + lint: true # location of API specification api: go-apps/meep-auth-svc/api/swagger.yaml # AdvantEDGE resources included in Docker container image diff --git a/config/permissions.yaml b/config/permissions.yaml index 12f61d57a..3f42e3ab3 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -38,537 +38,537 @@ # user: 'block' #------------------------------------------------------------------------------ default: - mode: 'block' + mode: 'allow' -#------------------------------------------------------------------------------ -# FILESERVER PERMISSIONS -# File Server access permissions. -# -# FORMAT: -# - name: 'fs-name' # fileserver name -# path: '/path/to/fs' # fileserver path -# sbox: true|false # sandbox deployment -# mode: 'allow|block|verify' # access authorization mode -# roles: # role-specific permissions -# admin: 'allow|block' -# user: 'allow|block' -# -# !!! IMPORTANT NOTE !!! -# Fileserver route matching is performed in the order defined below. -# You must place more specific routes first. -#------------------------------------------------------------------------------ -fileservers: - #------------------------------ - # Grafana (3rd Party) - #------------------------------ - - name: 'grafana' - path: '/grafana' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Swagger UI - #------------------------------ - - name: 'meep-swagger-ui' - path: '/api/' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Alternate Swagger UI - #------------------------------ - - name: 'meep-alt-swagger-ui' - path: '/alt/api/' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Alternate Frontend - #------------------------------ - - name: 'meep-alt-frontend' - path: '/alt/' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Sandbox Swagger UI (Sbox) - #------------------------------ - - name: 'meep-sbox-swagger-ui' - path: '/api/' - sbox: true - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - #------------------------------ - # Sandbox Alternate Swagger UI (Sbox) - #------------------------------ - - name: 'meep-alt-sbox-swagger-ui' - path: '/alt/api/' - sbox: true - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Frontend (Default) - #------------------------------ - - name: 'meep-frontend' - path: '/' - mode: 'allow' +# #------------------------------------------------------------------------------ +# # FILESERVER PERMISSIONS +# # File Server access permissions. +# # +# # FORMAT: +# # - name: 'fs-name' # fileserver name +# # path: '/path/to/fs' # fileserver path +# # sbox: true|false # sandbox deployment +# # mode: 'allow|block|verify' # access authorization mode +# # roles: # role-specific permissions +# # admin: 'allow|block' +# # user: 'allow|block' +# # +# # !!! IMPORTANT NOTE !!! +# # Fileserver route matching is performed in the order defined below. +# # You must place more specific routes first. +# #------------------------------------------------------------------------------ +# fileservers: +# #------------------------------ +# # Grafana (3rd Party) +# #------------------------------ +# - name: 'grafana' +# path: '/grafana' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Swagger UI +# #------------------------------ +# - name: 'meep-swagger-ui' +# path: '/api/' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Alternate Swagger UI +# #------------------------------ +# - name: 'meep-alt-swagger-ui' +# path: '/alt/api/' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Alternate Frontend +# #------------------------------ +# - name: 'meep-alt-frontend' +# path: '/alt/' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Sandbox Swagger UI (Sbox) +# #------------------------------ +# - name: 'meep-sbox-swagger-ui' +# path: '/api/' +# sbox: true +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# #------------------------------ +# # Sandbox Alternate Swagger UI (Sbox) +# #------------------------------ +# - name: 'meep-alt-sbox-swagger-ui' +# path: '/alt/api/' +# sbox: true +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Frontend (Default) +# #------------------------------ +# - name: 'meep-frontend' +# path: '/' +# mode: 'allow' -#------------------------------------------------------------------------------ -# SERVICE ENDPOINT PERMISSIONS -# Service REST API endpoint access permissions. -# -# FORMAT: -# - name: 'svc-name' # service name -# path: '/svc/base/path' # service base path -# sbox: true|false # sandbox deployment -# default: # default service permissions -# mode: 'allow|block|verify' # access authorization mode -# roles: # role-specific permissions -# admin: 'allow|block' -# user: 'allow|block' -# endpoints: # Endpoint permissions (overrides default) -# - name 'endpoint-name' # endpoint name -# path: '/endpoint/path' # endpoint path -# method: 'GET|POST|PUT|DELETE' # endpoint method -# mode: 'allow|block|verify' # access authorization mode -# roles: # role-specific permissions -# admin: 'allow|block' -# user: 'allow|block' -#------------------------------------------------------------------------------ -services: - #------------------------------ - # GIS Engine (Sbox) - #------------------------------ - - name: 'meep-gis-engine' - path: '/gis/v1' - sbox: true - default: - mode: 'block' - endpoints: - - name: 'GetAutomationState' - path: '/automation' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'GetAutomationStateByName' - path: '/automation/{type}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'SetAutomationStateByName' - path: '/automation/{type}' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'DeleteGeoDataByName' - path: '/geodata/{assetName}' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetAssetData' - path: '/geodata' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'GetGeoDataByName' - path: '/geodata/{assetName}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'UpdateGeoDataByName' - path: '/geodata/{assetName}' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Location Service (Sbox) - #------------------------------ - - name: 'meep-loc-serv' - path: '/location/v2' - sbox: true - default: - mode: 'allow' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' - #------------------------------ - # Metrics Engine (Sbox) - #------------------------------ - - name: 'meep-metrics-engine' - path: '/metrics/v2' - sbox: true - default: - mode: 'block' - endpoints: - - name: 'PostEventQuery' - path: '/metrics/query/event' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'PostHttpQuery' - path: '/metrics/query/http' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'PostNetworkQuery' - path: '/metrics/query/network' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'CreateEventSubscription' - path: '/metrics/subscriptions/event' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'CreateNetworkSubscription' - path: '/metrics/subscriptions/network' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteEventSubscriptionById' - path: '/metrics/subscriptions/event/{subscriptionId}' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteNetworkSubscriptionById' - path: '/metrics/subscriptions/network/{subscriptionId}' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetEventSubscription' - path: '/metrics/subscriptions/event' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetEventSubscriptionById' - path: '/metrics/subscriptions/event/{subscriptionId}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetNetworkSubscription' - path: '/metrics/subscriptions/network' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetNetworkSubscriptionById' - path: '/metrics/subscriptions/network/{subscriptionId}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # Mobility Group Manager (Sbox) - #------------------------------ - - name: 'meep-mg-manager' - path: '/mgm/v1' - sbox: true - default: - mode: 'allow' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' - #------------------------------ - # Monitoring Engine - #------------------------------ - - name: 'meep-mon-engine' - path: '/mon-engine/v1' - sbox: false - default: - mode: 'block' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' - - name: 'GetStates' - path: '/states' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - #------------------------------ - # Platform Controller - #------------------------------ - - name: 'meep-platform-ctrl' - path: '/platform-ctrl/v1' - sbox: false - default: - mode: 'block' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' - - name: 'CreateSandbox' - path: '/sandboxes' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'CreateSandboxWithName' - path: '/sandboxes/{name}' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteSandbox' - path: '/sandboxes/{name}' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteSandboxList' - path: '/sandboxes' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetSandbox' - path: '/sandboxes/{name}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'GetSandboxList' - path: '/sandboxes' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'CreateScenario' - path: '/scenarios/{name}' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteScenario' - path: '/scenarios/{name}' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteScenarioList' - path: '/scenarios' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetScenario' - path: '/scenarios/{name}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'GetScenarioList' - path: '/scenarios' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'SetScenario' - path: '/scenarios/{name}' - method: 'PUT' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - #------------------------------ - # RNI Service (Sbox) - #------------------------------ - - name: 'meep-rnis' - path: '/rni/v2' - sbox: true - default: - mode: 'allow' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' - #------------------------------ - # Sandbox Controller (Sbox) - #------------------------------ - - name: 'meep-sandbox-ctrl' - path: '/sandbox-ctrl/v1' - sbox: true - default: - mode: 'block' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' - - name: 'ActivateScenario' - path: '/active/{name}' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'GetActiveNodeServiceMaps' - path: '/active/serviceMaps' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetActiveScenario' - path: '/active' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'TerminateScenario' - path: '/active' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'allow' - - name: 'CreateReplayFile' - path: '/replay/{name}' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'CreateReplayFileFromScenarioExec' - path: '/replay/{name}/generate' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteReplayFile' - path: '/replay/{name}' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'DeleteReplayFileList' - path: '/replay' - method: 'DELETE' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetReplayFile' - path: '/replay/{name}' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetReplayFileList' - path: '/replay' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'GetReplayStatus' - path: '/replaystatus' - method: 'GET' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'LoopReplay' - path: '/replay/{name}/loop' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'PlayReplayFile' - path: '/replay/{name}/play' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'StopReplayFile' - path: '/replay/{name}/stop' - method: 'POST' - mode: 'verify' - roles: - admin: 'allow' - user: 'block' - - name: 'SendEvent' - path: '/events/{type}' - method: 'POST' - mode: 'allow' - #------------------------------ - # WAI Service (Sbox) - #------------------------------ - - name: 'meep-wais' - path: '/wai/v2' - sbox: true - default: - mode: 'allow' - endpoints: - - name: 'Index' - path: '/' - method: 'GET' - mode: 'block' \ No newline at end of file +# #------------------------------------------------------------------------------ +# # SERVICE ENDPOINT PERMISSIONS +# # Service REST API endpoint access permissions. +# # +# # FORMAT: +# # - name: 'svc-name' # service name +# # path: '/svc/base/path' # service base path +# # sbox: true|false # sandbox deployment +# # default: # default service permissions +# # mode: 'allow|block|verify' # access authorization mode +# # roles: # role-specific permissions +# # admin: 'allow|block' +# # user: 'allow|block' +# # endpoints: # Endpoint permissions (overrides default) +# # - name 'endpoint-name' # endpoint name +# # path: '/endpoint/path' # endpoint path +# # method: 'GET|POST|PUT|DELETE' # endpoint method +# # mode: 'allow|block|verify' # access authorization mode +# # roles: # role-specific permissions +# # admin: 'allow|block' +# # user: 'allow|block' +# #------------------------------------------------------------------------------ +# services: +# #------------------------------ +# # GIS Engine (Sbox) +# #------------------------------ +# - name: 'meep-gis-engine' +# path: '/gis/v1' +# sbox: true +# default: +# mode: 'block' +# endpoints: +# - name: 'GetAutomationState' +# path: '/automation' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'GetAutomationStateByName' +# path: '/automation/{type}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'SetAutomationStateByName' +# path: '/automation/{type}' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'DeleteGeoDataByName' +# path: '/geodata/{assetName}' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetAssetData' +# path: '/geodata' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'GetGeoDataByName' +# path: '/geodata/{assetName}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'UpdateGeoDataByName' +# path: '/geodata/{assetName}' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Location Service (Sbox) +# #------------------------------ +# - name: 'meep-loc-serv' +# path: '/location/v2' +# sbox: true +# default: +# mode: 'allow' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' +# #------------------------------ +# # Metrics Engine (Sbox) +# #------------------------------ +# - name: 'meep-metrics-engine' +# path: '/metrics/v2' +# sbox: true +# default: +# mode: 'block' +# endpoints: +# - name: 'PostEventQuery' +# path: '/metrics/query/event' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'PostHttpQuery' +# path: '/metrics/query/http' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'PostNetworkQuery' +# path: '/metrics/query/network' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'CreateEventSubscription' +# path: '/metrics/subscriptions/event' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'CreateNetworkSubscription' +# path: '/metrics/subscriptions/network' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteEventSubscriptionById' +# path: '/metrics/subscriptions/event/{subscriptionId}' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteNetworkSubscriptionById' +# path: '/metrics/subscriptions/network/{subscriptionId}' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetEventSubscription' +# path: '/metrics/subscriptions/event' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetEventSubscriptionById' +# path: '/metrics/subscriptions/event/{subscriptionId}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetNetworkSubscription' +# path: '/metrics/subscriptions/network' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetNetworkSubscriptionById' +# path: '/metrics/subscriptions/network/{subscriptionId}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # Mobility Group Manager (Sbox) +# #------------------------------ +# - name: 'meep-mg-manager' +# path: '/mgm/v1' +# sbox: true +# default: +# mode: 'allow' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' +# #------------------------------ +# # Monitoring Engine +# #------------------------------ +# - name: 'meep-mon-engine' +# path: '/mon-engine/v1' +# sbox: false +# default: +# mode: 'block' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' +# - name: 'GetStates' +# path: '/states' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# #------------------------------ +# # Platform Controller +# #------------------------------ +# - name: 'meep-platform-ctrl' +# path: '/platform-ctrl/v1' +# sbox: false +# default: +# mode: 'block' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' +# - name: 'CreateSandbox' +# path: '/sandboxes' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'CreateSandboxWithName' +# path: '/sandboxes/{name}' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteSandbox' +# path: '/sandboxes/{name}' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteSandboxList' +# path: '/sandboxes' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetSandbox' +# path: '/sandboxes/{name}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'GetSandboxList' +# path: '/sandboxes' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'CreateScenario' +# path: '/scenarios/{name}' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteScenario' +# path: '/scenarios/{name}' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteScenarioList' +# path: '/scenarios' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetScenario' +# path: '/scenarios/{name}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'GetScenarioList' +# path: '/scenarios' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'SetScenario' +# path: '/scenarios/{name}' +# method: 'PUT' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# #------------------------------ +# # RNI Service (Sbox) +# #------------------------------ +# - name: 'meep-rnis' +# path: '/rni/v2' +# sbox: true +# default: +# mode: 'allow' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' +# #------------------------------ +# # Sandbox Controller (Sbox) +# #------------------------------ +# - name: 'meep-sandbox-ctrl' +# path: '/sandbox-ctrl/v1' +# sbox: true +# default: +# mode: 'block' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' +# - name: 'ActivateScenario' +# path: '/active/{name}' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'GetActiveNodeServiceMaps' +# path: '/active/serviceMaps' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetActiveScenario' +# path: '/active' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'TerminateScenario' +# path: '/active' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'allow' +# - name: 'CreateReplayFile' +# path: '/replay/{name}' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'CreateReplayFileFromScenarioExec' +# path: '/replay/{name}/generate' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteReplayFile' +# path: '/replay/{name}' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'DeleteReplayFileList' +# path: '/replay' +# method: 'DELETE' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetReplayFile' +# path: '/replay/{name}' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetReplayFileList' +# path: '/replay' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'GetReplayStatus' +# path: '/replaystatus' +# method: 'GET' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'LoopReplay' +# path: '/replay/{name}/loop' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'PlayReplayFile' +# path: '/replay/{name}/play' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'StopReplayFile' +# path: '/replay/{name}/stop' +# method: 'POST' +# mode: 'verify' +# roles: +# admin: 'allow' +# user: 'block' +# - name: 'SendEvent' +# path: '/events/{type}' +# method: 'POST' +# mode: 'allow' +# #------------------------------ +# # WAI Service (Sbox) +# #------------------------------ +# - name: 'meep-wais' +# path: '/wai/v2' +# sbox: true +# default: +# mode: 'allow' +# endpoints: +# - name: 'Index' +# path: '/' +# method: 'GET' +# mode: 'block' \ No newline at end of file -- GitLab From ea95eaffe499f434af337a3863b89a3cedd00afb Mon Sep 17 00:00:00 2001 From: Nikhil Doifode Date: Tue, 26 Jan 2021 14:15:44 -0500 Subject: [PATCH 032/194] Added Prometheus monitoring and enabled metrics collection for dependencies Changes: - Enabled `/metrics` endpoint for metrics collection in couchdb, redis, postgis, Nginx, Grafana, cert-manager - Updated redis charts with latest version - Added servicemonitor for service discovery in grafana and kube-state-metrics for prometheus - Added node-exporter and couchdb exporter for getting metrics about host machine and couchdb pod - Added Prometheus with Prometheus Alertmanager, Prometheus Operator and Prometheus Server Test: - All UT's and Cypress tests passed --- .meepctl-repocfg.yaml | 14 +- charts/cert-manager/values.yaml | 2 +- charts/grafana/templates/servicemonitor.yaml | 32 + charts/grafana/values.yaml | 45 +- charts/kube-prometheus-stack/.helmignore | 26 + charts/kube-prometheus-stack/Chart.yaml | 42 + charts/kube-prometheus-stack/README.md | 395 ++ .../prometheus-couchdb-exporter/.helmignore | 21 + .../prometheus-couchdb-exporter/Chart.yaml | 13 + .../prometheus-couchdb-exporter/README.md | 67 + .../templates/NOTES.txt | 19 + .../templates/_helpers.tpl | 54 + .../templates/deployment.yaml | 65 + .../templates/ingress.yaml | 38 + .../templates/podsecuritypolicy.yaml | 39 + .../templates/role.yaml | 18 + .../templates/rolebinding.yaml | 18 + .../templates/service.yaml | 19 + .../templates/serviceaccount.yaml | 11 + .../prometheus-couchdb-exporter/values.yaml | 72 + .../prometheus-node-exporter/.helmignore | 21 + .../prometheus-node-exporter/Chart.yaml | 16 + .../charts/prometheus-node-exporter/README.md | 63 + .../ci/port-values.yaml | 3 + .../templates/NOTES.txt | 15 + .../templates/_helpers.tpl | 66 + .../templates/daemonset.yaml | 159 + .../templates/endpoints.yaml | 18 + .../templates/monitor.yaml | 25 + .../templates/psp-clusterrole.yaml | 15 + .../templates/psp-clusterrolebinding.yaml | 17 + .../templates/psp.yaml | 52 + .../templates/service.yaml | 23 + .../templates/serviceaccount.yaml | 16 + .../prometheus-node-exporter/values.yaml | 145 + .../crds/crd-alertmanagerconfigs.yaml | 1867 +++++++ .../crds/crd-alertmanagers.yaml | 3216 ++++++++++++ .../crds/crd-podmonitors.yaml | 356 ++ .../crds/crd-probes.yaml | 169 + .../crds/crd-prometheuses.yaml | 4425 +++++++++++++++++ .../crds/crd-prometheusrules.yaml | 90 + .../crds/crd-servicemonitors.yaml | 373 ++ .../crds/crd-thanosrulers.yaml | 3340 +++++++++++++ .../kube-prometheus-stack/templates/NOTES.txt | 4 + .../templates/_helpers.tpl | 93 + .../templates/alertmanager/alertmanager.yaml | 141 + .../templates/alertmanager/ingress.yaml | 58 + .../alertmanager/ingressperreplica.yaml | 58 + .../alertmanager/persistentvolume.yaml | 22 + .../alertmanager/podDisruptionBudget.yaml | 21 + .../templates/alertmanager/psp-role.yaml | 21 + .../alertmanager/psp-rolebinding.yaml | 18 + .../templates/alertmanager/psp.yaml | 52 + .../templates/alertmanager/secret.yaml | 23 + .../templates/alertmanager/service.yaml | 50 + .../alertmanager/serviceaccount.yaml | 16 + .../alertmanager/servicemonitor.yaml | 42 + .../alertmanager/serviceperreplica.yaml | 46 + .../templates/exporters/core-dns/service.yaml | 24 + .../exporters/core-dns/servicemonitor.yaml | 33 + .../kube-api-server/servicemonitor.yaml | 36 + .../kube-controller-manager/endpoints.yaml | 20 + .../kube-controller-manager/service.yaml | 27 + .../servicemonitor.yaml | 44 + .../templates/exporters/kube-dns/service.yaml | 28 + .../exporters/kube-dns/servicemonitor.yaml | 46 + .../exporters/kube-etcd/endpoints.yaml | 20 + .../exporters/kube-etcd/service.yaml | 27 + .../exporters/kube-etcd/servicemonitor.yaml | 50 + .../exporters/kube-proxy/endpoints.yaml | 20 + .../exporters/kube-proxy/service.yaml | 27 + .../exporters/kube-proxy/servicemonitor.yaml | 38 + .../exporters/kube-scheduler/endpoints.yaml | 20 + .../exporters/kube-scheduler/service.yaml | 27 + .../kube-scheduler/servicemonitor.yaml | 44 + .../exporters/kubelet/servicemonitor.yaml | 151 + .../node-exporter/servicemonitor.yaml | 32 + .../job-patch/clusterrole.yaml | 33 + .../job-patch/clusterrolebinding.yaml | 20 + .../job-patch/job-createSecret.yaml | 65 + .../job-patch/job-patchWebhook.yaml | 66 + .../admission-webhooks/job-patch/psp.yaml | 54 + .../admission-webhooks/job-patch/role.yaml | 21 + .../job-patch/rolebinding.yaml | 21 + .../job-patch/serviceaccount.yaml | 15 + .../mutatingWebhookConfiguration.yaml | 41 + .../validatingWebhookConfiguration.yaml | 41 + .../prometheus-operator/certmanager.yaml | 57 + .../prometheus-operator/clusterrole.yaml | 80 + .../clusterrolebinding.yaml | 17 + .../prometheus-operator/deployment.yaml | 132 + .../prometheus-operator/psp-clusterrole.yaml | 20 + .../psp-clusterrolebinding.yaml | 17 + .../templates/prometheus-operator/psp.yaml | 51 + .../prometheus-operator/service.yaml | 55 + .../prometheus-operator/serviceaccount.yaml | 12 + .../prometheus-operator/servicemonitor.yaml | 44 + .../additionalAlertRelabelConfigs.yaml | 16 + .../additionalAlertmanagerConfigs.yaml | 16 + .../prometheus/additionalPrometheusRules.yaml | 40 + .../prometheus/additionalScrapeConfigs.yaml | 16 + .../templates/prometheus/clusterrole.yaml | 30 + .../prometheus/clusterrolebinding.yaml | 18 + .../templates/prometheus/ingress.yaml | 58 + .../prometheus/ingressThanosSidecar.yaml | 53 + .../prometheus/ingressperreplica.yaml | 58 + .../prometheus/persistentvolume.yaml | 22 + .../prometheus/podDisruptionBudget.yaml | 21 + .../templates/prometheus/podmonitors.yaml | 37 + .../templates/prometheus/prometheus.yaml | 303 ++ .../templates/prometheus/psp-clusterrole.yaml | 20 + .../prometheus/psp-clusterrolebinding.yaml | 18 + .../templates/prometheus/psp.yaml | 55 + .../rules-1.14/alertmanager.rules.yaml | 70 + .../templates/prometheus/rules-1.14/etcd.yaml | 197 + .../prometheus/rules-1.14/general.rules.yaml | 56 + .../prometheus/rules-1.14/k8s.rules.yaml | 121 + .../kube-apiserver-availability.rules.yaml | 158 + .../rules-1.14/kube-apiserver-slos.yaml | 95 + .../rules-1.14/kube-apiserver.rules.yaml | 363 ++ .../kube-prometheus-general.rules.yaml | 31 + .../kube-prometheus-node-recording.rules.yaml | 39 + .../rules-1.14/kube-scheduler.rules.yaml | 63 + .../rules-1.14/kube-state-metrics.yaml | 59 + .../prometheus/rules-1.14/kubelet.rules.yaml | 39 + .../rules-1.14/kubernetes-apps.yaml | 298 ++ .../rules-1.14/kubernetes-resources.yaml | 159 + .../rules-1.14/kubernetes-storage.yaml | 75 + .../kubernetes-system-apiserver.yaml | 88 + .../kubernetes-system-controller-manager.yaml | 41 + .../rules-1.14/kubernetes-system-kubelet.yaml | 188 + .../kubernetes-system-scheduler.yaml | 41 + .../rules-1.14/kubernetes-system.yaml | 55 + .../rules-1.14/node-exporter.rules.yaml | 79 + .../prometheus/rules-1.14/node-exporter.yaml | 278 ++ .../prometheus/rules-1.14/node-network.yaml | 37 + .../prometheus/rules-1.14/node.rules.yaml | 53 + .../rules-1.14/prometheus-operator.yaml | 113 + .../prometheus/rules-1.14/prometheus.yaml | 258 + .../templates/prometheus/service.yaml | 60 + .../prometheus/serviceThanosSIdecar.yaml | 27 + .../templates/prometheus/serviceaccount.yaml | 16 + .../templates/prometheus/servicemonitor.yaml | 42 + .../templates/prometheus/servicemonitors.yaml | 34 + .../prometheus/serviceperreplica.yaml | 46 + .../templates/prometheus/storageclass.yaml | 14 + charts/kube-prometheus-stack/values.yaml | 2302 +++++++++ .../templates/serviceMonitor.yaml | 31 + charts/kube-state-metrics/values.yaml | 27 +- charts/nginx-ingress/values.yaml | 4 +- charts/postgis/templates/statefulset.yaml | 3 +- charts/postgis/values.yaml | 4 +- charts/redis/.helmignore | 24 +- charts/redis/Chart.yaml | 28 +- charts/redis/README.md | 787 ++- charts/redis/templates/NOTES.txt | 88 +- charts/redis/templates/_helpers.tpl | 399 +- charts/redis/templates/configmap-scripts.yaml | 389 ++ charts/redis/templates/configmap.yaml | 45 +- charts/redis/templates/headless-svc.yaml | 28 + charts/redis/templates/health-configmap.yaml | 154 +- .../redis/templates/metrics-deployment.yaml | 81 - .../redis/templates/metrics-prometheus.yaml | 39 + charts/redis/templates/metrics-svc.yaml | 29 +- charts/redis/templates/networkpolicy.yaml | 56 +- charts/redis/templates/pdb.yaml | 22 + charts/redis/templates/prometheusrule.yaml | 25 + charts/redis/templates/psp.yaml | 43 + .../templates/redis-master-statefulset.yaml | 435 +- charts/redis/templates/redis-master-svc.yaml | 43 +- .../templates/redis-node-statefulset.yaml | 484 ++ charts/redis/templates/redis-role.yaml | 17 +- charts/redis/templates/redis-rolebinding.yaml | 7 +- .../redis/templates/redis-serviceaccount.yaml | 8 +- .../templates/redis-slave-deployment.yaml | 135 - .../templates/redis-slave-statefulset.yaml | 372 ++ charts/redis/templates/redis-slave-svc.yaml | 43 +- .../templates/redis-with-sentinel-svc.yaml | 43 + charts/redis/templates/secret.yaml | 7 +- charts/redis/values-production.yaml | 758 ++- charts/redis/values.yaml | 766 ++- go-apps/meepctl/cmd/deploy.go | 8 + go-apps/meepctl/cmd/version.go | 2 +- go-apps/meepctl/utils/config.go | 2 +- go-packages/meep-model/validator.go | 2 +- 185 files changed, 28658 insertions(+), 897 deletions(-) create mode 100644 charts/grafana/templates/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/.helmignore create mode 100644 charts/kube-prometheus-stack/Chart.yaml create mode 100644 charts/kube-prometheus-stack/README.md create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/.helmignore create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/Chart.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/README.md create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/NOTES.txt create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/_helpers.tpl create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/deployment.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/ingress.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/podsecuritypolicy.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/role.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/rolebinding.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/service.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/serviceaccount.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/values.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/.helmignore create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/Chart.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/README.md create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/ci/port-values.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/NOTES.txt create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/_helpers.tpl create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/daemonset.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/endpoints.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/monitor.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/service.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/serviceaccount.yaml create mode 100644 charts/kube-prometheus-stack/charts/prometheus-node-exporter/values.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-alertmanagerconfigs.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-alertmanagers.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-podmonitors.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-probes.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-prometheuses.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-prometheusrules.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-servicemonitors.yaml create mode 100644 charts/kube-prometheus-stack/crds/crd-thanosrulers.yaml create mode 100644 charts/kube-prometheus-stack/templates/NOTES.txt create mode 100644 charts/kube-prometheus-stack/templates/_helpers.tpl create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/alertmanager.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/ingress.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/ingressperreplica.yaml create mode 100755 charts/kube-prometheus-stack/templates/alertmanager/persistentvolume.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/podDisruptionBudget.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/psp-role.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/psp-rolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/psp.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/secret.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/serviceaccount.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/alertmanager/serviceperreplica.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/core-dns/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/core-dns/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-api-server/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/endpoints.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-dns/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-dns/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-etcd/endpoints.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-etcd/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-etcd/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-proxy/endpoints.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-proxy/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-proxy/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-scheduler/endpoints.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-scheduler/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kube-scheduler/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/kubelet/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/certmanager.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/clusterrole.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/clusterrolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/deployment.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrole.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/psp.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/serviceaccount.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus-operator/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/additionalAlertRelabelConfigs.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/additionalAlertmanagerConfigs.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/additionalPrometheusRules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/additionalScrapeConfigs.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/clusterrole.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/clusterrolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/ingress.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/ingressThanosSidecar.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/ingressperreplica.yaml create mode 100755 charts/kube-prometheus-stack/templates/prometheus/persistentvolume.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/podDisruptionBudget.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/podmonitors.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/prometheus.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/psp-clusterrole.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/psp-clusterrolebinding.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/psp.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/alertmanager.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/etcd.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/general.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/k8s.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-state-metrics.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubelet.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-apps.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-resources.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-storage.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-network.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node.rules.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus-operator.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/service.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/serviceThanosSIdecar.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/serviceaccount.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/servicemonitor.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/servicemonitors.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/serviceperreplica.yaml create mode 100644 charts/kube-prometheus-stack/templates/prometheus/storageclass.yaml create mode 100644 charts/kube-prometheus-stack/values.yaml create mode 100644 charts/kube-state-metrics/templates/serviceMonitor.yaml mode change 100755 => 100644 charts/redis/.helmignore mode change 100755 => 100644 charts/redis/Chart.yaml mode change 100755 => 100644 charts/redis/README.md mode change 100755 => 100644 charts/redis/templates/NOTES.txt mode change 100755 => 100644 charts/redis/templates/_helpers.tpl create mode 100644 charts/redis/templates/configmap-scripts.yaml mode change 100755 => 100644 charts/redis/templates/configmap.yaml create mode 100644 charts/redis/templates/headless-svc.yaml mode change 100755 => 100644 charts/redis/templates/health-configmap.yaml delete mode 100755 charts/redis/templates/metrics-deployment.yaml create mode 100644 charts/redis/templates/metrics-prometheus.yaml mode change 100755 => 100644 charts/redis/templates/metrics-svc.yaml mode change 100755 => 100644 charts/redis/templates/networkpolicy.yaml create mode 100644 charts/redis/templates/pdb.yaml create mode 100644 charts/redis/templates/prometheusrule.yaml create mode 100644 charts/redis/templates/psp.yaml mode change 100755 => 100644 charts/redis/templates/redis-master-statefulset.yaml mode change 100755 => 100644 charts/redis/templates/redis-master-svc.yaml create mode 100644 charts/redis/templates/redis-node-statefulset.yaml mode change 100755 => 100644 charts/redis/templates/redis-role.yaml mode change 100755 => 100644 charts/redis/templates/redis-rolebinding.yaml mode change 100755 => 100644 charts/redis/templates/redis-serviceaccount.yaml delete mode 100755 charts/redis/templates/redis-slave-deployment.yaml create mode 100644 charts/redis/templates/redis-slave-statefulset.yaml mode change 100755 => 100644 charts/redis/templates/redis-slave-svc.yaml create mode 100644 charts/redis/templates/redis-with-sentinel-svc.yaml mode change 100755 => 100644 charts/redis/templates/secret.yaml mode change 100755 => 100644 charts/redis/values-production.yaml mode change 100755 => 100644 charts/redis/values.yaml diff --git a/.meepctl-repocfg.yaml b/.meepctl-repocfg.yaml index bca60372b..8ce4c5d9f 100644 --- a/.meepctl-repocfg.yaml +++ b/.meepctl-repocfg.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -version: 1.6.2 +version: 1.6.3 repo: name: AdvantEDGE @@ -163,6 +163,7 @@ repo: - meep-open-map-tiles - meep-postgis - meep-redis + # - meep-prometheus # list of platform pods to monitor core-pods: - meep-mon-engine @@ -656,6 +657,17 @@ repo: chart: charts/postgis # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-postgis.yaml + meep-prometheus: + # enable meepctl build -> deps are never built + build: false + # enable meepctl dockerize -> deps are never dockerized + dockerize: false + # enable meepctl deploy/delete + deploy: false + # location of deployment chart + chart: charts/kube-prometheus-stack + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-prometheus.yaml #------------------------------ # Packages diff --git a/charts/cert-manager/values.yaml b/charts/cert-manager/values.yaml index c30f94cf4..f0597aace 100644 --- a/charts/cert-manager/values.yaml +++ b/charts/cert-manager/values.yaml @@ -141,7 +141,7 @@ ingressShim: {} prometheus: enabled: true servicemonitor: - enabled: false + enabled: true prometheusInstance: default targetPort: 9402 path: /metrics diff --git a/charts/grafana/templates/servicemonitor.yaml b/charts/grafana/templates/servicemonitor.yaml new file mode 100644 index 000000000..d8ed0a06e --- /dev/null +++ b/charts/grafana/templates/servicemonitor.yaml @@ -0,0 +1,32 @@ +{{- if .Values.grafana.serviceMonitor.selfMonitor }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "grafana.fullname" . }} + namespace: {{ template "grafana.namespace" . }} + labels: + app: {{ template "grafana.name" . }} + chart: {{ template "grafana.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + jobLabel: {{ .Values.grafana.jobLabel }} + selector: + matchLabels: + app: grafana + release: {{ .Release.Name }} + endpoints: + - port: {{ .Values.grafana.service.portName }} + {{- if .Values.grafana.serviceMonitor.interval }} + interval: {{ .Values.grafana.serviceMonitor.interval }} + {{- end }} + path: {{ .Values.grafana.serviceMonitor.path | quote }} +{{- if .Values.grafana.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.grafana.serviceMonitor.metricRelabelings | indent 6) . }} +{{- end }} +{{- if .Values.grafana.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.grafana.serviceMonitor.relabelings | indent 6 }} +{{- end }} +{{- end }} diff --git a/charts/grafana/values.yaml b/charts/grafana/values.yaml index f4f99fca2..ac0637509 100755 --- a/charts/grafana/values.yaml +++ b/charts/grafana/values.yaml @@ -314,11 +314,11 @@ datasources: datasources.yaml: apiVersion: 1 datasources: -# - name: Prometheus -# type: prometheus -# url: http://prometheus-prometheus-server -# access: proxy -# isDefault: true + - name: Prometheus + type: prometheus + url: http://meep-prometheus-prometheus:9090 + access: proxy + isDefault: true - name: meep-influxdb type: influxdb access: proxy @@ -536,3 +536,38 @@ sidecar: ## Override the deployment namespace ## namespaceOverride: "" + +grafana: + jobLabel: jobLabel + + service: + portName: service + + ## If true, create a serviceMonitor for grafana + ## + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + selfMonitor: true + + # Path to use for scraping metrics. Might be different if server.root_url is set + # in grafana.ini + path: "/metrics" + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace \ No newline at end of file diff --git a/charts/kube-prometheus-stack/.helmignore b/charts/kube-prometheus-stack/.helmignore new file mode 100644 index 000000000..93bf1ec02 --- /dev/null +++ b/charts/kube-prometheus-stack/.helmignore @@ -0,0 +1,26 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +# helm/charts +OWNERS +hack/ +ci/ +kube-prometheus-*.tgz diff --git a/charts/kube-prometheus-stack/Chart.yaml b/charts/kube-prometheus-stack/Chart.yaml new file mode 100644 index 000000000..bce40f0a1 --- /dev/null +++ b/charts/kube-prometheus-stack/Chart.yaml @@ -0,0 +1,42 @@ +annotations: + artifacthub.io/links: | + - name: Chart Source + url: https://github.com/prometheus-community/helm-charts + - name: Upstream Project + url: https://github.com/prometheus-operator/kube-prometheus + artifacthub.io/operator: "true" +apiVersion: v2 +appVersion: 0.45.0 +dependencies: +- condition: nodeExporter.enabled + name: prometheus-node-exporter + repository: https://prometheus-community.github.io/helm-charts + version: 1.12.* +- name: prometheus-couchdb-exporter + repository: https://prometheus-community.github.io/helm-charts + version: 0.2.* +description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. +home: https://github.com/prometheus-operator/kube-prometheus +icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png +keywords: +- operator +- prometheus +- kube-prometheus +kubeVersion: '>=1.16.0-0' +maintainers: +- name: vsliouniaev +- name: bismarck +- email: gianrubio@gmail.com + name: gianrubio +- email: github.gkarthiks@gmail.com + name: gkarthiks +- email: scott@r6by.com + name: scottrigby +- email: miroslav.hadzhiev@gmail.com + name: Xtigyro +name: kube-prometheus-stack +sources: +- https://github.com/prometheus-community/helm-charts +- https://github.com/prometheus-operator/kube-prometheus +type: application +version: 13.0.2 diff --git a/charts/kube-prometheus-stack/README.md b/charts/kube-prometheus-stack/README.md new file mode 100644 index 000000000..4f1d37090 --- /dev/null +++ b/charts/kube-prometheus-stack/README.md @@ -0,0 +1,395 @@ +# kube-prometheus-stack + +Installs the [kube-prometheus stack](https://github.com/prometheus-operator/kube-prometheus), a collection of Kubernetes manifests, [Grafana](http://grafana.com/) dashboards, and [Prometheus rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with [Prometheus](https://prometheus.io/) using the [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). + +See the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) README for details about components, dashboards, and alerts. + +_Note: This chart was formerly named `prometheus-operator` chart, now renamed to more clearly reflect that it installs the `kube-prometheus` project stack, within which Prometheus Operator is only one component._ + +## Prerequisites + +- Kubernetes 1.16+ +- Helm 3+ + +## Get Repo Info + +```console +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +helm repo update +``` + +_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ + +## Install Chart + +```console +# Helm +$ helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack +``` + +_See [configuration](#configuration) below._ + +_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ + +## Dependencies + +By default this chart installs additional, dependent charts: + +- [kubernetes/kube-state-metrics](https://github.com/kubernetes/kube-state-metrics/tree/master/charts/kube-state-metrics) +- [prometheus-community/prometheus-node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter) +- [grafana/grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana) + +To disable dependencies during installation, see [multiple releases](#multiple-releases) below. + +_See [helm dependency](https://helm.sh/docs/helm/helm_dependency/) for command documentation._ + +## Uninstall Chart + +```console +# Helm +$ helm uninstall [RELEASE_NAME] +``` + +This removes all the Kubernetes components associated with the chart and deletes the release. + +_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ + +CRDs created by this chart are not removed by default and should be manually cleaned up: + +```console +kubectl delete crd alertmanagerconfigs.monitoring.coreos.com +kubectl delete crd alertmanagers.monitoring.coreos.com +kubectl delete crd podmonitors.monitoring.coreos.com +kubectl delete crd probes.monitoring.coreos.com +kubectl delete crd prometheuses.monitoring.coreos.com +kubectl delete crd prometheusrules.monitoring.coreos.com +kubectl delete crd servicemonitors.monitoring.coreos.com +kubectl delete crd thanosrulers.monitoring.coreos.com +``` + +## Upgrading Chart + +```console +# Helm +$ helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack +``` + +With Helm v3, CRDs created by this chart are not updated by default and should be manually updated. +Consult also the [Helm Documentation on CRDs](https://helm.sh/docs/chart_best_practices/custom_resource_definitions). + +_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ + +### Upgrading an existing Release to a new major version + +A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. + +### From 11.x to 12.x + +The chart was migrated to support only helm v3 and later. + +### From 10.x to 11.x + +Version 11 upgrades prometheus-operator from 0.42.x to 0.43.x. Starting with 0.43.x an additional `AlertmanagerConfigs` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: + +```console +kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.43/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml +``` + +Version 11 removes the deprecated tlsProxy via ghostunnel in favor of native TLS support the prometheus-operator gained with v0.39.0. + +### From 9.x to 10.x + +Version 10 upgrades prometheus-operator from 0.38.x to 0.42.x. Starting with 0.40.x an additional `Probes` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: + +```console +kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.42/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml +``` + +### From 8.x to 9.x + +Version 9 of the helm chart removes the existing `additionalScrapeConfigsExternal` in favour of `additionalScrapeConfigsSecret`. This change lets users specify the secret name and secret key to use for the additional scrape configuration of prometheus. This is useful for users that have prometheus-operator as a subchart and also have a template that creates the additional scrape configuration. + +### From 7.x to 8.x + +Due to new template functions being used in the rules in version 8.x.x of the chart, an upgrade to Prometheus Operator and Prometheus is necessary in order to support them. First, upgrade to the latest version of 7.x.x + +```console +helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version 7.5.0 +``` + +Then upgrade to 8.x.x + +```console +helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version [8.x.x] +``` + +Minimal recommended Prometheus version for this chart release is `2.12.x` + +### From 6.x to 7.x + +Due to a change in grafana subchart, version 7.x.x now requires Helm >= 2.12.0. + +### From 5.x to 6.x + +Due to a change in deployment labels of kube-state-metrics, the upgrade requires `helm upgrade --force` in order to re-create the deployment. If this is not done an error will occur indicating that the deployment cannot be modified: + +```console +invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/name":"kube-state-metrics"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable +``` + +If this error has already been encountered, a `helm history` command can be used to determine which release has worked, then `helm rollback` to the release, then `helm upgrade --force` to this new one + +## Configuration + +See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments: + +```console +helm show values prometheus-community/kube-prometheus-stack +``` + +You may also `helm show values` on this chart's [dependencies](#dependencies) for additional options. + +### Multiple releases + +The same chart can be used to run multiple Prometheus instances in the same cluster if required. To achieve this, it is necessary to run only one instance of prometheus-operator and a pair of alertmanager pods for an HA configuration, while all other components need to be disabled. To disable a dependency during installation, set `kubeStateMetrics.enabled`, `nodeExporter.enabled` and `grafana.enabled` to `false`. + +## Work-Arounds for Known Issues + +### Running on private GKE clusters + +When Google configure the control plane for private clusters, they automatically configure VPC peering between your Kubernetes cluster’s network and a separate Google managed project. In order to restrict what Google are able to access within your cluster, the firewall rules configured restrict access to your Kubernetes pods. This means that in order to use the webhook component with a GKE private cluster, you must configure an additional firewall rule to allow the GKE control plane access to your webhook pod. + +You can read more information on how to add firewall rules for the GKE control plane nodes in the [GKE docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules) + +Alternatively, you can disable the hooks by setting `prometheusOperator.admissionWebhooks.enabled=false`. + +## PrometheusRules Admission Webhooks + +With Prometheus Operator version 0.30+, the core Prometheus Operator pod exposes an endpoint that will integrate with the `validatingwebhookconfiguration` Kubernetes feature to prevent malformed rules from being added to the cluster. + +### How the Chart Configures the Hooks + +A validating and mutating webhook configuration requires the endpoint to which the request is sent to use TLS. It is possible to set up custom certificates to do this, but in most cases, a self-signed certificate is enough. The setup of this component requires some more complex orchestration when using helm. The steps are created to be idempotent and to allow turning the feature on and off without running into helm quirks. + +1. A pre-install hook provisions a certificate into the same namespace using a format compatible with provisioning using end-user certificates. If the certificate already exists, the hook exits. +2. The prometheus operator pod is configured to use a TLS proxy container, which will load that certificate. +3. Validating and Mutating webhook configurations are created in the cluster, with their failure mode set to Ignore. This allows rules to be created by the same chart at the same time, even though the webhook has not yet been fully set up - it does not have the correct CA field set. +4. A post-install hook reads the CA from the secret created by step 1 and patches the Validating and Mutating webhook configurations. This process will allow a custom CA provisioned by some other process to also be patched into the webhook configurations. The chosen failure policy is also patched into the webhook configurations + +### Alternatives + +It should be possible to use [jetstack/cert-manager](https://github.com/jetstack/cert-manager) if a more complete solution is required, but it has not been tested. + +### Limitations + +Because the operator can only run as a single pod, there is potential for this component failure to cause rule deployment failure. Because this risk is outweighed by the benefit of having validation, the feature is enabled by default. + +## Developing Prometheus Rules and Grafana Dashboards + +This chart Grafana Dashboards and Prometheus Rules are just a copy from [prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) and other sources, synced (with alterations) by scripts in [hack](hack) folder. In order to introduce any changes you need to first [add them to the original repo](https://github.com/prometheus-operator/kube-prometheus/blob/master/docs/developing-prometheus-rules-and-grafana-dashboards.md) and then sync there by scripts. + +## Further Information + +For more in-depth documentation of configuration options meanings, please see + +- [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) +- [Prometheus](https://prometheus.io/docs/introduction/overview/) +- [Grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart) + +## prometheus.io/scrape + +The prometheus operator does not support annotation-based discovery of services, using the `PodMonitor` or `ServiceMonitor` CRD in its place as they provide far more configuration options. +For information on how to use PodMonitors/ServiceMonitors, please see the documentation on the `prometheus-operator/prometheus-operator` documentation here: + +- [ServiceMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md#include-servicemonitors) +- [PodMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md#include-podmonitors) +- [Running Exporters](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/running-exporters.md) + +By default, Prometheus discovers PodMonitors and ServiceMonitors within its namespace, that are labeled with the same release tag as the prometheus-operator release. +Sometimes, you may need to discover custom PodMonitors/ServiceMonitors, for example used to scrape data from third-party applications. +An easy way of doing this, without compromising the default PodMonitors/ServiceMonitors discovery, is allowing Prometheus to discover all PodMonitors/ServiceMonitors within its namespace, without applying label filtering. +To do so, you can set `prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues` and `prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues` to `false`. + +## Migrating from stable/prometheus-operator chart + +## Zero downtime + +Since `kube-prometheus-stack` is fully compatible with the `stable/prometheus-operator` chart, a migration without downtime can be achieved. +However, the old name prefix needs to be kept. If you want the new name please follow the step by step guide below (with downtime). + +You can override the name to achieve this: + +```console +helm upgrade prometheus-operator prometheus-community/kube-prometheus-stack -n monitoring --reuse-values --set nameOverride=prometheus-operator +``` + +**Note**: It is recommended to run this first with `--dry-run --debug`. + +## Redeploy with new name (downtime) + +If the **prometheus-operator** values are compatible with the new **kube-prometheus-stack** chart, please follow the below steps for migration: + +> The guide presumes that chart is deployed in `monitoring` namespace and the deployments are running there. If in other namespace, please replace the `monitoring` to the deployed namespace. + +1. Patch the PersistenceVolume created/used by the prometheus-operator chart to `Retain` claim policy: + + ```console + kubectl patch pv/ -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' + ``` + + **Note:** To execute the above command, the user must have a cluster wide permission. Please refer [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) + +2. Uninstall the **prometheus-operator** release and delete the existing PersistentVolumeClaim, and verify PV become Released. + + ```console + helm uninstall prometheus-operator -n monitoring + kubectl delete pvc/ -n monitoring + ``` + + Additionally, you have to manually remove the remaining `prometheus-operator-kubelet` service. + + ```console + kubectl delete service/prometheus-operator-kubelet -n kube-system + ``` + + You can choose to remove all your existing CRDs (ServiceMonitors, Podmonitors, etc.) if you want to. + +3. Remove current `spec.claimRef` values to change the PV's status from Released to Available. + + ```console + kubectl patch pv/ --type json -p='[{"op": "remove", "path": "/spec/claimRef"}]' -n monitoring + ``` + +**Note:** To execute the above command, the user must have a cluster wide permission. Please refer to [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) + +After these steps, proceed to a fresh **kube-prometheus-stack** installation and make sure the current release of **kube-prometheus-stack** matching the `volumeClaimTemplate` values in the `values.yaml`. + +The binding is done via matching a specific amount of storage requested and with certain access modes. + +For example, if you had storage specified as this with **prometheus-operator**: + +```yaml +volumeClaimTemplate: + spec: + storageClassName: gp2 + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 50Gi +``` + +You have to specify matching `volumeClaimTemplate` with 50Gi storage and `ReadWriteOnce` access mode. + +Additionally, you should check the current AZ of your legacy installation's PV, and configure the fresh release to use the same AZ as the old one. If the pods are in a different AZ than the PV, the release will fail to bind the existing one, hence creating a new PV. + +This can be achieved either by specifying the labels through `values.yaml`, e.g. setting `prometheus.prometheusSpec.nodeSelector` to: + +```yaml +nodeSelector: + failure-domain.beta.kubernetes.io/zone: east-west-1a +``` + +or passing these values as `--set` overrides during installation. + +The new release should now re-attach your previously released PV with its content. + +## Migrating from coreos/prometheus-operator chart + +The multiple charts have been combined into a single chart that installs prometheus operator, prometheus, alertmanager, grafana as well as the multitude of exporters necessary to monitor a cluster. + +There is no simple and direct migration path between the charts as the changes are extensive and intended to make the chart easier to support. + +The capabilities of the old chart are all available in the new chart, including the ability to run multiple prometheus instances on a single cluster - you will need to disable the parts of the chart you do not wish to deploy. + +You can check out the tickets for this change [here](https://github.com/prometheus-operator/prometheus-operator/issues/592) and [here](https://github.com/helm/charts/pull/6765). + +### High-level overview of Changes + +#### Added dependencies + +The chart has added 3 [dependencies](#dependencies). + +- Node-Exporter, Kube-State-Metrics: These components are loaded as dependencies into the chart, and are relatively simple components +- Grafana: The Grafana chart is more feature-rich than this chart - it contains a sidecar that is able to load data sources and dashboards from configmaps deployed into the same cluster. For more information check out the [documentation for the chart](https://github.com/grafana/helm-charts/blob/main/charts/grafana/README.md) + +#### Kubelet Service + +Because the kubelet service has a new name in the chart, make sure to clean up the old kubelet service in the `kube-system` namespace to prevent counting container metrics twice. + +#### Persistent Volumes + +If you would like to keep the data of the current persistent volumes, it should be possible to attach existing volumes to new PVCs and PVs that are created using the conventions in the new chart. For example, in order to use an existing Azure disk for a helm release called `prometheus-migration` the following resources can be created: + +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: pvc-prometheus-migration-prometheus-0 +spec: + accessModes: + - ReadWriteOnce + azureDisk: + cachingMode: None + diskName: pvc-prometheus-migration-prometheus-0 + diskURI: /subscriptions/f5125d82-2622-4c50-8d25-3f7ba3e9ac4b/resourceGroups/sample-migration-resource-group/providers/Microsoft.Compute/disks/pvc-prometheus-migration-prometheus-0 + fsType: "" + kind: Managed + readOnly: false + capacity: + storage: 1Gi + persistentVolumeReclaimPolicy: Delete + storageClassName: prometheus + volumeMode: Filesystem +``` + +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app: prometheus + prometheus: prometheus-migration-prometheus + name: prometheus-prometheus-migration-prometheus-db-prometheus-prometheus-migration-prometheus-0 + namespace: monitoring +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: prometheus + volumeMode: Filesystem + volumeName: pvc-prometheus-migration-prometheus-0 +``` + +The PVC will take ownership of the PV and when you create a release using a persistent volume claim template it will use the existing PVCs as they match the naming convention used by the chart. For other cloud providers similar approaches can be used. + +#### KubeProxy + +The metrics bind address of kube-proxy is default to `127.0.0.1:10249` that prometheus instances **cannot** access to. You should expose metrics by changing `metricsBindAddress` field value to `0.0.0.0:10249` if you want to collect them. + +Depending on the cluster, the relevant part `config.conf` will be in ConfigMap `kube-system/kube-proxy` or `kube-system/kube-proxy-config`. For example: + +```console +kubectl -n kube-system edit cm kube-proxy +``` + +```yaml +apiVersion: v1 +data: + config.conf: |- + apiVersion: kubeproxy.config.k8s.io/v1alpha1 + kind: KubeProxyConfiguration + # ... + # metricsBindAddress: 127.0.0.1:10249 + metricsBindAddress: 0.0.0.0:10249 + # ... + kubeconfig.conf: |- + # ... +kind: ConfigMap +metadata: + labels: + app: kube-proxy + name: kube-proxy + namespace: kube-system +``` diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/.helmignore b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/Chart.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/Chart.yaml new file mode 100644 index 000000000..a6a610e89 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/Chart.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +appVersion: "1.0" +description: A Helm chart to export the metrics from couchdb in Prometheus format. +home: https://github.com/gesellix/couchdb-prometheus-exporter +keywords: +- couchdb-exporter +maintainers: +- email: github.gkarthiks@gmail.com + name: gkarthiks +name: prometheus-couchdb-exporter +sources: +- https://github.com/gesellix/couchdb-prometheus-exporter +version: 0.2.0 diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/README.md b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/README.md new file mode 100644 index 000000000..a49042238 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/README.md @@ -0,0 +1,67 @@ +# prometheus-couchdb-exporter + +A Prometheus exporter for [CouchDB](https://couchdb.apache.org/) metrics. + +This chart bootstraps a [CouchDB Exporter](https://github.com/gesellix/couchdb-prometheus-exporter) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.8+ with Beta APIs enabled + +## Get Repo Info + +```console +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +helm repo update +``` + +_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ + +## Install Chart + +```console +# Helm 3 +$ helm install [RELEASE_NAME] prometheus-community/prometheus-couchdb-exporter + +# Helm 2 +$ helm install --name [RELEASE_NAME] prometheus-community/prometheus-couchdb-exporter +``` + +_See [configuration](#configuration) below._ + +_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ + +## Uninstall Chart + +```console +# Helm 3 +$ helm uninstall [RELEASE_NAME] + +# Helm 2 +# helm delete --purge [RELEASE_NAME] +``` + +This removes all the Kubernetes components associated with the chart and deletes the release. + +_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ + +## Upgrading Chart + +```console +# Helm 3 or 2 +$ helm upgrade [RELEASE_NAME] [CHART] --install +``` + +_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ + +## Configuration + +See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands: + +```console +# Helm 2 +$ helm inspect values prometheus-community/prometheus-couchdb-exporter + +# Helm 3 +$ helm show values prometheus-community/prometheus-couchdb-exporter +``` diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/NOTES.txt b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/NOTES.txt new file mode 100644 index 000000000..fb839a472 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-couchdb-exporter.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ template "prometheus-couchdb-exporter.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "prometheus-couchdb-exporter.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "prometheus-couchdb-exporter.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:80 +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/_helpers.tpl b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/_helpers.tpl new file mode 100644 index 000000000..d7ea406c6 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/_helpers.tpl @@ -0,0 +1,54 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "prometheus-couchdb-exporter.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "prometheus-couchdb-exporter.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "prometheus-couchdb-exporter.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "prometheus-couchdb-exporter.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "prometheus-couchdb-exporter.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for rbac. +*/}} +{{- define "rbac.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }} +{{- print "rbac.authorization.k8s.io/v1" -}} +{{- else -}} +{{- print "rbac.authorization.k8s.io/v1beta1" -}} +{{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/deployment.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/deployment.yaml new file mode 100644 index 000000000..d0d9cf919 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/deployment.yaml @@ -0,0 +1,65 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "prometheus-couchdb-exporter.fullname" . }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + release: {{ .Release.Name }} + spec: + serviceAccountName: {{ template "prometheus-couchdb-exporter.serviceAccountName" . }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - "/couchdb-prometheus-exporter" + - "-telemetry.address=0.0.0.0:9984" + - "-logtostderr" + - "-couchdb.uri={{ .Values.couchdb.uri }}" + - "-databases={{ .Values.couchdb.databases }}" + {{- if .Values.couchdb.username }} + - "-couchdb.username={{ .Values.couchdb.username }}" + {{- end }} + {{- if .Values.couchdb.password }} + - "-couchdb.password={{ .Values.couchdb.password }}" + {{- end }} + ports: + - name: http + containerPort: 9984 + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 60 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 60 + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/ingress.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/ingress.yaml new file mode 100644 index 000000000..3d3715653 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/ingress.yaml @@ -0,0 +1,38 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "prometheus-couchdb-exporter.fullname" . -}} +{{- $ingressPath := .Values.ingress.path -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +{{- with .Values.ingress.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} +spec: +{{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . }} + http: + paths: + - path: {{ $ingressPath }} + backend: + serviceName: {{ $fullName }} + servicePort: http + {{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/podsecuritypolicy.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/podsecuritypolicy.yaml new file mode 100644 index 000000000..5b08c4a1a --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/podsecuritypolicy.yaml @@ -0,0 +1,39 @@ +{{- if .Values.rbac.pspEnabled }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "prometheus-couchdb-exporter.fullname" . }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default' + apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' + seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' + apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' +spec: + privileged: false + allowPrivilegeEscalation: false + requiredDropCapabilities: + - ALL + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + rule: 'RunAsAny' + seLinux: + rule: 'RunAsAny' + supplementalGroups: + rule: 'RunAsAny' + fsGroup: + rule: 'RunAsAny' + readOnlyRootFilesystem: false +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/role.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/role.yaml new file mode 100644 index 000000000..30c664571 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/role.yaml @@ -0,0 +1,18 @@ +{{- if .Values.rbac.create }} +apiVersion: {{ template "rbac.apiVersion" . }} +kind: Role +metadata: + name: {{ template "prometheus-couchdb-exporter.fullname" . }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} +{{- if .Values.rbac.pspEnabled }} +rules: +- apiGroups: ['extensions'] + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: [{{ template "prometheus-couchdb-exporter.fullname" . }}] +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/rolebinding.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/rolebinding.yaml new file mode 100644 index 000000000..46941f7ec --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/rolebinding.yaml @@ -0,0 +1,18 @@ +{{- if .Values.rbac.create -}} +apiVersion: {{ template "rbac.apiVersion" . }} +kind: RoleBinding +metadata: + name: {{ template "prometheus-couchdb-exporter.fullname" . }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "prometheus-couchdb-exporter.fullname" . }} +subjects: +- kind: ServiceAccount + name: {{ template "prometheus-couchdb-exporter.serviceAccountName" . }} +{{- end -}} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/service.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/service.yaml new file mode 100644 index 000000000..c3e9e2a09 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "prometheus-couchdb-exporter.fullname" . }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app: {{ template "prometheus-couchdb-exporter.name" . }} + release: {{ .Release.Name }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/serviceaccount.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/serviceaccount.yaml new file mode 100644 index 000000000..3e8018b58 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/templates/serviceaccount.yaml @@ -0,0 +1,11 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "prometheus-couchdb-exporter.serviceAccountName" . }} + labels: + app: {{ template "prometheus-couchdb-exporter.name" . }} + chart: {{ template "prometheus-couchdb-exporter.chart" . }} + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +{{- end -}} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/values.yaml b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/values.yaml new file mode 100644 index 000000000..788162158 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-couchdb-exporter/values.yaml @@ -0,0 +1,72 @@ +# Default values for prometheus-couchdb-exporter. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +nameOverride: couchdb-exporter +fullnameOverride: meep-prometheus-couchdb-exporter + +rbac: + # Specifies whether RBAC resources should be created + create: true + # Specifies whether a PodSecurityPolicy should be created + pspEnabled: true +serviceAccount: + # Specifies whether a ServiceAccount should be created + create: true + # The name of the ServiceAccount to use. + # If not set and create is true, a name is generated using the fullname template + name: + +replicaCount: 1 + +image: + repository: gesellix/couchdb-prometheus-exporter + tag: 16 + pullPolicy: IfNotPresent + +service: + type: ClusterIP + port: 9984 + +ingress: + enabled: false + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + path: / + hosts: + # - chart-example.local + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +## CouchDB exporter configurations +couchdb: + ## URI of the couchdb instance + uri: http://meep-couchdb-svc-couchdb.default.svc.cluster.local:5984/ + ## Specify the list of databases to get the disk usage stats as comma separates like "db-1,db-2" + ## or to get stats for every database, please use "_all_dbs" + databases: _all_dbs + ## CouchDB username + # username: + ## CouchDB Password + # password: diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/.helmignore b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/Chart.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/Chart.yaml new file mode 100644 index 000000000..659454766 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/Chart.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +appVersion: 1.0.1 +description: A Helm chart for prometheus node-exporter +home: https://github.com/prometheus/node_exporter/ +keywords: +- node-exporter +- prometheus +- exporter +maintainers: +- email: gianrubio@gmail.com + name: gianrubio +- name: vsliouniaev +name: prometheus-node-exporter +sources: +- https://github.com/prometheus/node_exporter/ +version: 1.12.0 diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/README.md b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/README.md new file mode 100644 index 000000000..babde05e0 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/README.md @@ -0,0 +1,63 @@ +# Prometheus Node Exporter + +Prometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors. + +This chart bootstraps a prometheus [Node Exporter](http://github.com/prometheus/node_exporter) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Get Repo Info + +```console +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +helm repo update +``` + +_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ + +## Install Chart + +```console +# Helm 3 +$ helm install [RELEASE_NAME] prometheus-community/prometheus-node-exporter + +# Helm 2 +$ helm install --name [RELEASE_NAME] prometheus-community/prometheus-node-exporter +``` + +_See [configuration](#configuration) below._ + +_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ + +## Uninstall Chart + +```console +# Helm 3 +$ helm uninstall [RELEASE_NAME] + +# Helm 2 +# helm delete --purge [RELEASE_NAME] +``` + +This removes all the Kubernetes components associated with the chart and deletes the release. + +_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ + +## Upgrading Chart + +```console +# Helm 3 or 2 +$ helm upgrade [RELEASE_NAME] [CHART] --install +``` + +_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ + +## Configuring + +See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands: + +```console +# Helm 2 +$ helm inspect values prometheus-community/prometheus-node-exporter + +# Helm 3 +$ helm show values prometheus-community/prometheus-node-exporter +``` diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/ci/port-values.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/ci/port-values.yaml new file mode 100644 index 000000000..dbfb4b67f --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/ci/port-values.yaml @@ -0,0 +1,3 @@ +service: + targetPort: 9102 + port: 9102 diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/NOTES.txt b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/NOTES.txt new file mode 100644 index 000000000..dc272fa99 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/NOTES.txt @@ -0,0 +1,15 @@ +1. Get the application URL by running these commands: +{{- if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ template "prometheus-node-exporter.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-node-exporter.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ template "prometheus-node-exporter.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ template "prometheus-node-exporter.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ template "prometheus-node-exporter.namespace" . }} {{ template "prometheus-node-exporter.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ template "prometheus-node-exporter.namespace" . }} -l "app={{ template "prometheus-node-exporter.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:9100 to use your application" + kubectl port-forward --namespace {{ template "prometheus-node-exporter.namespace" . }} $POD_NAME 9100 +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/_helpers.tpl b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/_helpers.tpl new file mode 100644 index 000000000..e8260688f --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/_helpers.tpl @@ -0,0 +1,66 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "prometheus-node-exporter.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "prometheus-node-exporter.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* Generate basic labels */}} +{{- define "prometheus-node-exporter.labels" }} +app: {{ template "prometheus-node-exporter.name" . }} +heritage: {{.Release.Service }} +release: {{.Release.Name }} +chart: {{ template "prometheus-node-exporter.chart" . }} +{{- if .Values.podLabels}} +{{ toYaml .Values.podLabels }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "prometheus-node-exporter.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + + +{{/* +Create the name of the service account to use +*/}} +{{- define "prometheus-node-exporter.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "prometheus-node-exporter.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Allow the release namespace to be overridden for multi-namespace deployments in combined charts +*/}} +{{- define "prometheus-node-exporter.namespace" -}} + {{- if .Values.namespaceOverride -}} + {{- .Values.namespaceOverride -}} + {{- else -}} + {{- .Release.Namespace -}} + {{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/daemonset.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/daemonset.yaml new file mode 100644 index 000000000..2787daea9 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/daemonset.yaml @@ -0,0 +1,159 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: {{ template "prometheus-node-exporter.fullname" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} + labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} +spec: + selector: + matchLabels: + app: {{ template "prometheus-node-exporter.name" . }} + release: {{ .Release.Name }} + {{- if .Values.updateStrategy }} + updateStrategy: +{{ toYaml .Values.updateStrategy | indent 4 }} + {{- end }} + template: + metadata: + labels: {{ include "prometheus-node-exporter.labels" . | indent 8 }} + {{- if .Values.podAnnotations }} + annotations: + {{- toYaml .Values.podAnnotations | nindent 8 }} + {{- end }} + spec: +{{- if and .Values.rbac.create .Values.serviceAccount.create }} + serviceAccountName: {{ template "prometheus-node-exporter.serviceAccountName" . }} +{{- end }} +{{- if .Values.securityContext }} + securityContext: +{{ toYaml .Values.securityContext | indent 8 }} +{{- end }} +{{- if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName }} +{{- end }} + containers: + - name: node-exporter + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + args: + - --path.procfs=/host/proc + - --path.sysfs=/host/sys + - --path.rootfs=/host/root + - --web.listen-address=$(HOST_IP):{{ .Values.service.port }} +{{- if .Values.extraArgs }} +{{ toYaml .Values.extraArgs | indent 12 }} +{{- end }} + env: + - name: HOST_IP + {{- if .Values.service.listenOnAllInterfaces }} + value: 0.0.0.0 + {{- else }} + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.hostIP + {{- end }} + ports: + - name: metrics + containerPort: {{ .Values.service.targetPort }} + protocol: TCP + livenessProbe: + httpGet: + path: / + port: {{ .Values.service.port }} + readinessProbe: + httpGet: + path: / + port: {{ .Values.service.port }} + resources: +{{ toYaml .Values.resources | indent 12 }} + volumeMounts: + - name: proc + mountPath: /host/proc + readOnly: true + - name: sys + mountPath: /host/sys + readOnly: true + - name: root + mountPath: /host/root + mountPropagation: HostToContainer + readOnly: true + {{- if .Values.extraHostVolumeMounts }} + {{- range $_, $mount := .Values.extraHostVolumeMounts }} + - name: {{ $mount.name }} + mountPath: {{ $mount.mountPath }} + readOnly: {{ $mount.readOnly }} + {{- if $mount.mountPropagation }} + mountPropagation: {{ $mount.mountPropagation }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.sidecarVolumeMount }} + {{- range $_, $mount := .Values.sidecarVolumeMount }} + - name: {{ $mount.name }} + mountPath: {{ $mount.mountPath }} + readOnly: true + {{- end }} + {{- end }} + {{- if .Values.configmaps }} + {{- range $_, $mount := .Values.configmaps }} + - name: {{ $mount.name }} + mountPath: {{ $mount.mountPath }} + {{- end }} + {{- end }} +{{- if .Values.sidecars }} +{{ toYaml .Values.sidecars | indent 8 }} + {{- if .Values.sidecarVolumeMount }} + volumeMounts: + {{- range $_, $mount := .Values.sidecarVolumeMount }} + - name: {{ $mount.name }} + mountPath: {{ $mount.mountPath }} + readOnly: {{ $mount.readOnly }} + {{- end }} + {{- end }} +{{- end }} + hostNetwork: {{ .Values.hostNetwork }} + hostPID: true +{{- if .Values.affinity }} + affinity: +{{ toYaml .Values.affinity | indent 8 }} +{{- end }} +{{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} +{{- end }} + {{- with .Values.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + volumes: + - name: proc + hostPath: + path: /proc + - name: sys + hostPath: + path: /sys + - name: root + hostPath: + path: / + {{- if .Values.extraHostVolumeMounts }} + {{- range $_, $mount := .Values.extraHostVolumeMounts }} + - name: {{ $mount.name }} + hostPath: + path: {{ $mount.hostPath }} + {{- end }} + {{- end }} + {{- if .Values.sidecarVolumeMount }} + {{- range $_, $mount := .Values.sidecarVolumeMount }} + - name: {{ $mount.name }} + emptyDir: + medium: Memory + {{- end }} + {{- end }} + {{- if .Values.configmaps }} + {{- range $_, $mount := .Values.configmaps }} + - name: {{ $mount.name }} + configMap: + name: {{ $mount.name }} + {{- end }} + {{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/endpoints.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/endpoints.yaml new file mode 100644 index 000000000..8daaeaaff --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/endpoints.yaml @@ -0,0 +1,18 @@ +{{- if .Values.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "prometheus-node-exporter.fullname" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} + labels: +{{ include "prometheus-node-exporter.labels" . | indent 4 }} +subsets: + - addresses: + {{- range .Values.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: metrics + port: 9100 + protocol: TCP +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/monitor.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/monitor.yaml new file mode 100644 index 000000000..4e31ba363 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/monitor.yaml @@ -0,0 +1,25 @@ +{{- if .Values.prometheus.monitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "prometheus-node-exporter.fullname" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} + labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} + {{- if .Values.prometheus.monitor.additionalLabels }} +{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }} + {{- end }} +spec: + selector: + matchLabels: + app: {{ template "prometheus-node-exporter.name" . }} + release: {{ .Release.Name }} + endpoints: + - port: metrics + {{- if .Values.prometheus.monitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }} + {{- end }} +{{- if .Values.prometheus.monitor.relabelings }} + relabelings: +{{ toYaml .Values.prometheus.monitor.relabelings | indent 6 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml new file mode 100644 index 000000000..cb433369c --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml @@ -0,0 +1,15 @@ +{{- if .Values.rbac.create }} +{{- if .Values.rbac.pspEnabled }} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: psp-{{ template "prometheus-node-exporter.fullname" . }} + labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} +rules: +- apiGroups: ['extensions'] + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "prometheus-node-exporter.fullname" . }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml new file mode 100644 index 000000000..d36d93ecf --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml @@ -0,0 +1,17 @@ +{{- if .Values.rbac.create }} +{{- if .Values.rbac.pspEnabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: psp-{{ template "prometheus-node-exporter.fullname" . }} + labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: psp-{{ template "prometheus-node-exporter.fullname" . }} +subjects: + - kind: ServiceAccount + name: {{ template "prometheus-node-exporter.fullname" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp.yaml new file mode 100644 index 000000000..f00506c98 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/psp.yaml @@ -0,0 +1,52 @@ +{{- if .Values.rbac.create }} +{{- if .Values.rbac.pspEnabled }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "prometheus-node-exporter.fullname" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} + labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} +spec: + privileged: false + # Required to prevent escalations to root. + # allowPrivilegeEscalation: false + # This is redundant with non-root + disallow privilege escalation, + # but we can provide it for defense in depth. + #requiredDropCapabilities: + # - ALL + # Allow core volume types. + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'persistentVolumeClaim' + - 'hostPath' + hostNetwork: true + hostIPC: false + hostPID: true + hostPorts: + - min: 0 + max: 65535 + runAsUser: + # Permits the container to run with root privileges as well. + rule: 'RunAsAny' + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + readOnlyRootFilesystem: false +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/service.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/service.yaml new file mode 100644 index 000000000..b0a447fe3 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/service.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "prometheus-node-exporter.fullname" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} +{{- if .Values.service.annotations }} + annotations: +{{ toYaml .Values.service.annotations | indent 4 }} +{{- end }} + labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + {{- if ( and (eq .Values.service.type "NodePort" ) (not (empty .Values.service.nodePort)) ) }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + targetPort: {{ .Values.service.targetPort }} + protocol: TCP + name: metrics + selector: + app: {{ template "prometheus-node-exporter.name" . }} + release: {{ .Release.Name }} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/serviceaccount.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/serviceaccount.yaml new file mode 100644 index 000000000..bd1c223b4 --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/templates/serviceaccount.yaml @@ -0,0 +1,16 @@ +{{- if .Values.rbac.create -}} +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "prometheus-node-exporter.serviceAccountName" . }} + namespace: {{ template "prometheus-node-exporter.namespace" . }} + labels: + app: {{ template "prometheus-node-exporter.name" . }} + chart: {{ template "prometheus-node-exporter.chart" . }} + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +imagePullSecrets: +{{ toYaml .Values.serviceAccount.imagePullSecrets | indent 2 }} +{{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/charts/prometheus-node-exporter/values.yaml b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/values.yaml new file mode 100644 index 000000000..8747d20fc --- /dev/null +++ b/charts/kube-prometheus-stack/charts/prometheus-node-exporter/values.yaml @@ -0,0 +1,145 @@ +# Default values for prometheus-node-exporter. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +nameOverride: node-exporter +fullnameOverride: meep-prometheus-node-exporter + +image: + repository: quay.io/prometheus/node-exporter + tag: v1.0.1 + pullPolicy: IfNotPresent + +service: + type: ClusterIP + port: 9100 + targetPort: 9100 + nodePort: + listenOnAllInterfaces: true + annotations: + prometheus.io/scrape: "true" + +prometheus: + monitor: + enabled: false + additionalLabels: {} + namespace: "" + + relabelings: [] + scrapeTimeout: 10s + +## Customize the updateStrategy if set +updateStrategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 200m + # memory: 50Mi + # requests: + # cpu: 100m + # memory: 30Mi + +serviceAccount: + # Specifies whether a ServiceAccount should be created + create: true + # The name of the ServiceAccount to use. + # If not set and create is true, a name is generated using the fullname template + name: + imagePullSecrets: [] + +securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + +rbac: + ## If true, create & use RBAC resources + ## + create: true + ## If true, create & use Pod Security Policy resources + ## https://kubernetes.io/docs/concepts/policy/pod-security-policy/ + pspEnabled: true + +# for deployments that have node_exporter deployed outside of the cluster, list +# their addresses here +endpoints: [] + +# Expose the service to the host network +hostNetwork: true + +## Assign a group of affinity scheduling rules +## +affinity: {} +# nodeAffinity: +# requiredDuringSchedulingIgnoredDuringExecution: +# nodeSelectorTerms: +# - matchFields: +# - key: metadata.name +# operator: In +# values: +# - target-host-name + +# Annotations to be added to node exporter pods +podAnnotations: {} + +# Extra labels to be added to node exporter pods +podLabels: {} + +## Assign a nodeSelector if operating a hybrid cluster +## +nodeSelector: {} +# beta.kubernetes.io/arch: amd64 +# beta.kubernetes.io/os: linux + +tolerations: + - effect: NoSchedule + operator: Exists + +## Assign a PriorityClassName to pods if set +# priorityClassName: "" + +## Additional container arguments +## +extraArgs: [] +# - --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\\d+n\\d+p)\\d+$ +# - --collector.textfile.directory=/run/prometheus + +## Additional mounts from the host +## +extraHostVolumeMounts: [] +# - name: +# hostPath: +# mountPath: +# readOnly: true|false +# mountPropagation: None|HostToContainer|Bidirectional + +## Additional configmaps to be mounted. +## +configmaps: [] +# - name: +# mountPath: + +## Override the deployment namespace +## +namespaceOverride: "" + +## Additional containers for export metrics to text file +## +sidecars: [] +## - name: nvidia-dcgm-exporter +## image: nvidia/dcgm-exporter:1.4.3 + +## Volume for sidecar containers +## +sidecarVolumeMount: [] +## - name: collector-textfiles +## mountPath: /run/prometheus +## readOnly: false diff --git a/charts/kube-prometheus-stack/crds/crd-alertmanagerconfigs.yaml b/charts/kube-prometheus-stack/crds/crd-alertmanagerconfigs.yaml new file mode 100644 index 000000000..a27925350 --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-alertmanagerconfigs.yaml @@ -0,0 +1,1867 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: alertmanagerconfigs.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: AlertmanagerConfig + listKind: AlertmanagerConfigList + plural: alertmanagerconfigs + singular: alertmanagerconfig + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to be aggregated across multiple namespaces configuring one Alertmanager cluster. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource. + properties: + inhibitRules: + description: List of inhibition rules. The rules will only apply to alerts matching the resource’s namespace. + items: + description: InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule + properties: + equal: + description: Labels that must have an equal value in the source and target alert for the inhibition to take effect. + items: + type: string + type: array + sourceMatch: + description: Matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource’s namespace. + items: + description: Matcher defines how to match on alert's labels. + properties: + name: + description: Label to match. + minLength: 1 + type: string + regex: + description: Whether to match on equality (false) or regular-expression (true). + type: boolean + value: + description: Label value to match. + type: string + required: + - name + type: object + type: array + targetMatch: + description: Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource’s namespace. + items: + description: Matcher defines how to match on alert's labels. + properties: + name: + description: Label to match. + minLength: 1 + type: string + regex: + description: Whether to match on equality (false) or regular-expression (true). + type: boolean + value: + description: Label value to match. + type: string + required: + - name + type: object + type: array + type: object + type: array + receivers: + description: List of receivers. + items: + description: Receiver defines one or more notification integrations. + properties: + emailConfigs: + description: List of Email configurations. + items: + description: EmailConfig configures notifications via Email. + properties: + authIdentity: + description: The identity to use for authentication. + type: string + authPassword: + description: The secret's key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + authSecret: + description: The secret's key that contains the CRAM-MD5 secret. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + authUsername: + description: The username to use for authentication. + type: string + from: + description: The sender address. + type: string + headers: + description: Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + hello: + description: The hostname to identify to the SMTP server. + type: string + html: + description: The HTML body of the email notification. + type: string + requireTLS: + description: The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints. + type: boolean + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + smarthost: + description: The SMTP host through which emails are sent. + type: string + text: + description: The text body of the email notification. + type: string + tlsConfig: + description: TLS configuration + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + to: + description: The email address to send notifications to. + type: string + type: object + type: array + name: + description: Name of the receiver. Must be unique across all items from the list. + minLength: 1 + type: string + opsgenieConfigs: + description: List of OpsGenie configurations. + items: + description: OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config + properties: + apiKey: + description: The secret's key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + apiURL: + description: The URL to send OpsGenie API requests to. + type: string + description: + description: Description of the incident. + type: string + details: + description: A set of arbitrary key/value pairs that provide further detail about the incident. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + httpConfig: + description: HTTP client configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + message: + description: Alert text limited to 130 characters. + type: string + note: + description: Additional alert note. + type: string + priority: + description: Priority level of alert. Possible values are P1, P2, P3, P4, and P5. + type: string + responders: + description: List of responders responsible for notifications. + items: + description: OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined. + properties: + id: + description: ID of the responder. + type: string + name: + description: Name of the responder. + type: string + type: + description: Type of responder. + minLength: 1 + type: string + username: + description: Username of the responder. + type: string + required: + - type + type: object + type: array + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + source: + description: Backlink to the sender of the notification. + type: string + tags: + description: Comma separated list of tags attached to the notifications. + type: string + type: object + type: array + pagerdutyConfigs: + description: List of PagerDuty configurations. + items: + description: PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config + properties: + class: + description: The class/type of the event. + type: string + client: + description: Client identification. + type: string + clientURL: + description: Backlink to the sender of notification. + type: string + component: + description: The part or component of the affected system that is broken. + type: string + description: + description: Description of the incident. + type: string + details: + description: Arbitrary key/value pairs that provide further detail about the incident. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + group: + description: A cluster or grouping of sources. + type: string + httpConfig: + description: HTTP client configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + routingKey: + description: The secret's key that contains the PagerDuty integration key (when using Events API v2). Either this field or `serviceKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + serviceKey: + description: The secret's key that contains the PagerDuty service key (when using integration type "Prometheus"). Either this field or `routingKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + severity: + description: Severity of the incident. + type: string + url: + description: The URL to send requests to. + type: string + type: object + type: array + pushoverConfigs: + description: List of Pushover configurations. + items: + description: PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config + properties: + expire: + description: How long your notification will continue to be retried for, unless the user acknowledges the notification. + type: string + html: + description: Whether notification message is HTML or plain text. + type: boolean + httpConfig: + description: HTTP client configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + message: + description: Notification message. + type: string + priority: + description: Priority, see https://pushover.net/api#priority + type: string + retry: + description: How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds. + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + sound: + description: The name of one of the sounds supported by device clients to override the user's default sound choice + type: string + title: + description: Notification title. + type: string + token: + description: The secret's key that contains the registered application’s API token, see https://pushover.net/apps. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + url: + description: A supplementary URL shown alongside the message. + type: string + urlTitle: + description: A title for supplementary URL, otherwise just the URL is shown + type: string + userKey: + description: The secret's key that contains the recipient user’s user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + type: array + slackConfigs: + description: List of Slack configurations. + items: + description: SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config + properties: + actions: + description: A list of Slack actions that are sent with each notification. + items: + description: SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information. + properties: + confirm: + description: SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information. + properties: + dismissText: + type: string + okText: + type: string + text: + minLength: 1 + type: string + title: + type: string + required: + - text + type: object + name: + type: string + style: + type: string + text: + minLength: 1 + type: string + type: + minLength: 1 + type: string + url: + type: string + value: + type: string + required: + - text + - type + type: object + type: array + apiURL: + description: The secret's key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + callbackId: + type: string + channel: + description: The channel or user to send notifications to. + type: string + color: + type: string + fallback: + type: string + fields: + description: A list of Slack fields that are sent with each notification. + items: + description: SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information. + properties: + short: + type: boolean + title: + minLength: 1 + type: string + value: + minLength: 1 + type: string + required: + - title + - value + type: object + type: array + footer: + type: string + httpConfig: + description: HTTP client configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + iconEmoji: + type: string + iconURL: + type: string + imageURL: + type: string + linkNames: + type: boolean + mrkdwnIn: + items: + type: string + type: array + pretext: + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + shortFields: + type: boolean + text: + type: string + thumbURL: + type: string + title: + type: string + titleLink: + type: string + username: + type: string + type: object + type: array + victoropsConfigs: + description: List of VictorOps configurations. + items: + description: VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config + properties: + apiKey: + description: The secret's key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + apiUrl: + description: The VictorOps API URL. + type: string + customFields: + description: Additional custom fields for notification. + items: + description: KeyValue defines a (key, value) tuple. + properties: + key: + description: Key of the tuple. + minLength: 1 + type: string + value: + description: Value of the tuple. + type: string + required: + - key + - value + type: object + type: array + entityDisplayName: + description: Contains summary of the alerted problem. + type: string + httpConfig: + description: The HTTP client's configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + messageType: + description: Describes the behavior of the alert (CRITICAL, WARNING, INFO). + type: string + monitoringTool: + description: The monitoring tool the state message is from. + type: string + routingKey: + description: A key used to map the alert to a team. + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + stateMessage: + description: Contains long explanation of the alerted problem. + type: string + type: object + type: array + webhookConfigs: + description: List of webhook configurations. + items: + description: WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config + properties: + httpConfig: + description: HTTP client configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + maxAlerts: + description: Maximum number of alerts to be sent per webhook message. When 0, all alerts are included. + format: int32 + minimum: 0 + type: integer + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + url: + description: The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. + type: string + urlSecret: + description: The secret's key that contains the webhook URL to send HTTP requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + type: array + wechatConfigs: + description: List of WeChat configurations. + items: + description: WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config + properties: + agentID: + type: string + apiSecret: + description: The secret's key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + apiURL: + description: The WeChat API URL. + type: string + corpID: + description: The corp id for authentication. + type: string + httpConfig: + description: HTTP client configuration. + properties: + basicAuth: + description: BasicAuth for the client. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + proxyURL: + description: Optional proxy URL. + type: string + tlsConfig: + description: TLS configuration for the client. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + message: + description: API request data as defined by the WeChat API. + type: string + messageType: + type: string + sendResolved: + description: Whether or not to notify about resolved alerts. + type: boolean + toParty: + type: string + toTag: + type: string + toUser: + type: string + type: object + type: array + required: + - name + type: object + type: array + route: + description: The Alertmanager route definition for alerts matching the resource’s namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route. + properties: + continue: + description: Boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator. + type: boolean + groupBy: + description: List of labels to group by. + items: + type: string + type: array + groupInterval: + description: How long to wait before sending an updated notification. Must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). + type: string + groupWait: + description: How long to wait before sending the initial notification. Must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). + type: string + matchers: + description: 'List of matchers that the alert’s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the `namespace` label and adds a `namespace: ` matcher.' + items: + description: Matcher defines how to match on alert's labels. + properties: + name: + description: Label to match. + minLength: 1 + type: string + regex: + description: Whether to match on equality (false) or regular-expression (true). + type: boolean + value: + description: Label value to match. + type: string + required: + - name + type: object + type: array + receiver: + description: Name of the receiver for this route. If not empty, it should be listed in the `receivers` field. + type: string + repeatInterval: + description: How long to wait before repeating the last notification. Must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). + type: string + routes: + description: Child routes. + items: + x-kubernetes-preserve-unknown-fields: true + type: array + type: object + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-alertmanagers.yaml b/charts/kube-prometheus-stack/crds/crd-alertmanagers.yaml new file mode 100644 index 000000000..7a4ec17c3 --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-alertmanagers.yaml @@ -0,0 +1,3216 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: alertmanagers.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: Alertmanager + listKind: AlertmanagerList + plural: alertmanagers + singular: alertmanager + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The version of Alertmanager + jsonPath: .spec.version + name: Version + type: string + - description: The desired replicas number of Alertmanagers + jsonPath: .spec.replicas + name: Replicas + type: integer + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Alertmanager describes an Alertmanager cluster. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: 'Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + additionalPeers: + description: AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster. + items: + type: string + type: array + affinity: + description: If specified, the pod's scheduling constraints. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements by node's labels. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements by node's fields. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. The terms are ORed. + items: + description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements by node's labels. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements by node's fields. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + alertmanagerConfigNamespaceSelector: + description: Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + alertmanagerConfigSelector: + description: AlertmanagerConfigs to be selected for to merge and configure Alertmanager with. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + baseImage: + description: 'Base image that is used to deploy pods, without tag. Deprecated: use ''image'' instead' + type: string + clusterAdvertiseAddress: + description: 'ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918' + type: string + clusterGossipInterval: + description: Interval between gossip attempts. + type: string + clusterPeerTimeout: + description: Timeout for cluster peering. + type: string + clusterPushpullInterval: + description: Interval between pushpull attempts. + type: string + configMaps: + description: ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. + items: + type: string + type: array + configSecret: + description: ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains configuration for this Alertmanager instance. Defaults to 'alertmanager-' The secret is mounted into /etc/alertmanager/config. + type: string + containers: + description: 'Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `alertmanager` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. Cannot be updated. + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + items: + description: ContainerPort represents a network port in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be used by the container. + items: + description: volumeDevice describes a mapping of a raw block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + externalUrl: + description: The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. + type: string + forceEnableClusterMode: + description: ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each. + type: boolean + image: + description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured. + type: string + imagePullSecrets: + description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod + items: + description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + initContainers: + description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Alertmanager configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. Cannot be updated. + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + items: + description: ContainerPort represents a network port in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be used by the container. + items: + description: volumeDevice describes a mapping of a raw block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + listenLocal: + description: ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication. + type: boolean + logFormat: + description: Log format for Alertmanager to be configured with. + type: string + logLevel: + description: Log level for Alertmanager to be configured with. + type: string + nodeSelector: + additionalProperties: + type: string + description: Define which Nodes the Pods are scheduled on. + type: object + paused: + description: If set to true all actions on the underlying managed objects are not goint to be performed, except for delete actions. + type: boolean + podMetadata: + description: PodMetadata configures Labels and Annotations which are propagated to the alertmanager pods. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + portName: + description: Port name used for the pods and governing service. This defaults to web + type: string + priorityClassName: + description: Priority class assigned to the Pods + type: string + replicas: + description: Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size. + format: int32 + type: integer + resources: + description: Define resources requests and limits for single Pods. + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + retention: + description: Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). + type: string + routePrefix: + description: The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`. + type: string + secrets: + description: Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/. + items: + type: string + type: array + securityContext: + description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified defaults to "Always".' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + serviceAccountName: + description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods. + type: string + sha: + description: 'SHA of Alertmanager container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' + type: string + storage: + description: Storage is the definition of how storage will be used by the Alertmanager instances. + properties: + disableMountSubPath: + description: 'Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.' + type: boolean + emptyDir: + description: 'EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' + properties: + medium: + description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + volumeClaimTemplate: + description: A PVC spec to be used by the Prometheus StatefulSets. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + spec: + description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.' + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume backing this claim. + type: string + type: object + status: + description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Represents the actual resources of the underlying volume. + type: object + conditions: + description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. + items: + description: PersistentVolumeClaimCondition contails details about state of pvc + properties: + lastProbeTime: + description: Last time we probed the condition. + format: date-time + type: string + lastTransitionTime: + description: Last time the condition transitioned from one status to another. + format: date-time + type: string + message: + description: Human-readable message indicating details about last transition. + type: string + reason: + description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. + type: string + status: + type: string + type: + description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type + type: string + required: + - status + - type + type: object + type: array + phase: + description: Phase represents the current phase of PersistentVolumeClaim. + type: string + type: object + type: object + type: object + tag: + description: 'Tag of Alertmanager container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' + type: string + tolerations: + description: If specified, the pod's tolerations. + items: + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + type: string + type: object + type: array + topologySpreadConstraints: + description: If specified, the pod's topology spread constraints. + items: + description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. + properties: + labelSelector: + description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + maxSkew: + description: 'MaxSkew describes the degree to which pods may be unevenly distributed. It''s the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. It''s a required field. Default value is 1 and 0 is not allowed.' + format: int32 + type: integer + topologyKey: + description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. It's a required field. + type: string + whenUnsatisfiable: + description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It''s considered as "Unsatisfiable" if and only if placing incoming pod on any topology violates "MaxSkew". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + version: + description: Version the cluster should be on. + type: string + volumeMounts: + description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + volumes: + description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. + items: + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + properties: + cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' + type: string + diskName: + description: The Name of the data disk in the blob storage + type: string + diskURI: + description: The URI the data disk in the blob storage + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + kind: + description: 'Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + properties: + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: the name of secret that contains Azure Storage Account Name and Key + type: string + shareName: + description: Share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + properties: + monitors: + description: 'Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'Optional: Used as the mounted root, rather than the full Ceph tree, default is /' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + user: + description: 'Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'Optional: points to a secret object containing parameters used to connect to OpenStack.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + volumeID: + description: 'volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: ConfigMap represents a configMap that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys must be defined + type: boolean + type: object + csi: + description: CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature). + properties: + driver: + description: Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + type: string + fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + type: string + nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + readOnly: + description: Specifies a read-only configuration for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + type: object + required: + - driver + type: object + downwardAPI: + description: DownwardAPI represents downward API about the pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume file + items: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'EmptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + fc: + description: FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + lun: + description: 'Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' + items: + type: string + type: array + wwids: + description: 'Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + properties: + driver: + description: Driver is the name of the driver to use for this volume. + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'Optional: Extra command options if any.' + type: object + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + secretRef: + description: 'Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + required: + - driver + type: object + flocker: + description: Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + properties: + datasetName: + description: Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + type: string + datasetUUID: + description: UUID of the dataset. This is unique identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' + properties: + directory: + description: Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + type: string + repository: + description: Repository URL + type: string + revision: + description: Commit hash for the specified revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' + properties: + path: + description: 'Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication + type: boolean + chapAuthSession: + description: whether support iSCSI Session CHAP authentication + type: boolean + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + type: string + iqn: + description: Target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + type: string + lun: + description: iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + items: + type: string + type: array + readOnly: + description: ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: CHAP Secret for iSCSI target and initiator authentication + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + targetPortal: + description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'NFS represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + pdID: + description: ID that identifies Photon Controller persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + properties: + fsType: + description: FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: VolumeID uniquely identifies a Portworx volume + type: string + required: + - volumeID + type: object + projected: + description: Items for all in one resources secrets, configmaps, and downward API + properties: + defaultMode: + description: Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + format: int32 + type: integer + sources: + description: list of volume projections + items: + description: Projection that may be projected along with other supported volume types + properties: + configMap: + description: information about the configMap data to project + properties: + items: + description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys must be defined + type: boolean + type: object + downwardAPI: + description: information about the downwardAPI data to project + properties: + items: + description: Items is a list of DownwardAPIVolume file + items: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + description: information about the secret data to project + properties: + items: + description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + type: object + serviceAccountToken: + description: information about the serviceAccountToken data to project + properties: + audience: + description: Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + type: string + expirationSeconds: + description: ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + format: int64 + type: integer + path: + description: Path is the path relative to the mount point of the file to project the token into. + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + description: Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + properties: + group: + description: Group to map volume access to Default is no group + type: string + readOnly: + description: ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + type: boolean + registry: + description: Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + type: string + tenant: + description: Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + type: string + user: + description: User to map volume access to Defaults to serivceaccount user + type: string + volume: + description: Volume is a string that references an already created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'RBD represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + user: + description: 'The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + type: string + gateway: + description: The host address of the ScaleIO API Gateway. + type: string + protectionDomain: + description: The name of the ScaleIO Protection Domain for the configured storage. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, default false + type: boolean + storageMode: + description: Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + type: string + storagePool: + description: The ScaleIO Storage Pool associated with the protection domain. + type: string + system: + description: The name of the storage system as configured in ScaleIO. + type: string + volumeName: + description: The name of a volume already created in the ScaleIO system that is associated with this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: Specify whether the Secret or its keys must be defined + type: boolean + secretName: + description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + volumeName: + description: VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + type: string + volumeNamespace: + description: VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + type: string + type: object + vsphereVolume: + description: VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + storagePolicyID: + description: Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: Storage Policy Based Management (SPBM) profile name. + type: string + volumePath: + description: Path that identifies vSphere volume vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + status: + description: 'Most recent observed status of the Alertmanager cluster. Read-only. Not included when requesting from the apiserver, only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + availableReplicas: + description: Total number of available pods (ready for at least minReadySeconds) targeted by this Alertmanager cluster. + format: int32 + type: integer + paused: + description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. + type: boolean + replicas: + description: Total number of non-terminated pods targeted by this Alertmanager cluster (their labels match the selector). + format: int32 + type: integer + unavailableReplicas: + description: Total number of unavailable pods targeted by this Alertmanager cluster. + format: int32 + type: integer + updatedReplicas: + description: Total number of non-terminated pods targeted by this Alertmanager cluster that have the desired version spec. + format: int32 + type: integer + required: + - availableReplicas + - paused + - replicas + - unavailableReplicas + - updatedReplicas + type: object + required: + - spec + type: object + served: true + storage: true + subresources: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-podmonitors.yaml b/charts/kube-prometheus-stack/crds/crd-podmonitors.yaml new file mode 100644 index 000000000..95fbafb0b --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-podmonitors.yaml @@ -0,0 +1,356 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: podmonitors.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: PodMonitor + listKind: PodMonitorList + plural: podmonitors + singular: podmonitor + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: PodMonitor defines monitoring for a set of pods. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired Pod selection for target discovery by Prometheus. + properties: + jobLabel: + description: The label to use to retrieve the job name from. + type: string + namespaceSelector: + description: Selector to select which namespaces the Endpoints objects are discovered from. + properties: + any: + description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. + type: boolean + matchNames: + description: List of namespace names. + items: + type: string + type: array + type: object + podMetricsEndpoints: + description: A list of endpoints allowed as part of this PodMonitor. + items: + description: PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics. + properties: + basicAuth: + description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint' + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenSecret: + description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + honorLabels: + description: HonorLabels chooses the metric's labels on collisions with target labels. + type: boolean + honorTimestamps: + description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. + type: boolean + interval: + description: Interval at which metrics should be scraped + type: string + metricRelabelings: + description: MetricRelabelConfigs to apply to samples before ingestion. + items: + description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + description: Action to perform based on regex matching. Default is 'replace' + type: string + modulus: + description: Modulus to take of the hash of the source label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. + items: + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. + type: string + type: object + type: array + params: + additionalProperties: + items: + type: string + type: array + description: Optional HTTP URL parameters + type: object + path: + description: HTTP path to scrape for metrics. + type: string + port: + description: Name of the pod port this endpoint refers to. Mutually exclusive with targetPort. + type: string + proxyUrl: + description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. + type: string + relabelings: + description: 'RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + description: Action to perform based on regex matching. Default is 'replace' + type: string + modulus: + description: Modulus to take of the hash of the source label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. + items: + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. + type: string + type: object + type: array + scheme: + description: HTTP scheme to use for scraping. + type: string + scrapeTimeout: + description: Timeout after which the scrape is ended + type: string + targetPort: + anyOf: + - type: integer + - type: string + description: 'Deprecated: Use ''port'' instead.' + x-kubernetes-int-or-string: true + tlsConfig: + description: TLS configuration to use when scraping the endpoint. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + type: array + podTargetLabels: + description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target. + items: + type: string + type: array + sampleLimit: + description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. + format: int64 + type: integer + selector: + description: Selector to select Pod objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + targetLimit: + description: TargetLimit defines a limit on the number of scraped targets that will be accepted. + format: int64 + type: integer + required: + - podMetricsEndpoints + - selector + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-probes.yaml b/charts/kube-prometheus-stack/crds/crd-probes.yaml new file mode 100644 index 000000000..5ef8405bd --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-probes.yaml @@ -0,0 +1,169 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: probes.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: Probe + listKind: ProbeList + plural: probes + singular: probe + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Probe defines monitoring for a set of static targets or ingresses. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired Ingress selection for target discovery by Prometheus. + properties: + interval: + description: Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used. + type: string + jobName: + description: The job name assigned to scraped metrics by default. + type: string + module: + description: 'The module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml' + type: string + prober: + description: Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty. + properties: + path: + description: Path to collect metrics from. Defaults to `/probe`. + type: string + scheme: + description: HTTP scheme to use for scraping. Defaults to `http`. + type: string + url: + description: Mandatory URL of the prober. + type: string + required: + - url + type: object + scrapeTimeout: + description: Timeout for scraping metrics from the Prometheus exporter. + type: string + targets: + description: Targets defines a set of static and/or dynamically discovered targets to be probed using the prober. + properties: + ingress: + description: Ingress defines the set of dynamically discovered ingress objects which hosts are considered for probing. + properties: + namespaceSelector: + description: Select Ingress objects by namespace. + properties: + any: + description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. + type: boolean + matchNames: + description: List of namespace names. + items: + type: string + type: array + type: object + relabelingConfigs: + description: 'RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + description: Action to perform based on regex matching. Default is 'replace' + type: string + modulus: + description: Modulus to take of the hash of the source label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. + items: + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. + type: string + type: object + type: array + selector: + description: Select Ingress objects by labels. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + type: object + staticConfig: + description: 'StaticConfig defines static targets which are considers for probing. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.' + properties: + labels: + additionalProperties: + type: string + description: Labels assigned to all metrics scraped from the targets. + type: object + static: + description: Targets is a list of URLs to probe using the configured prober. + items: + type: string + type: array + type: object + type: object + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-prometheuses.yaml b/charts/kube-prometheus-stack/crds/crd-prometheuses.yaml new file mode 100644 index 000000000..6a82bc541 --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-prometheuses.yaml @@ -0,0 +1,4425 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: prometheuses.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: Prometheus + listKind: PrometheusList + plural: prometheuses + singular: prometheus + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The version of Prometheus + jsonPath: .spec.version + name: Version + type: string + - description: The desired replicas number of Prometheuses + jsonPath: .spec.replicas + name: Replicas + type: integer + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Prometheus defines a Prometheus deployment. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: 'Specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + additionalAlertManagerConfigs: + description: 'AdditionalAlertManagerConfigs allows specifying a key of a Secret containing additional Prometheus AlertManager configurations. AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.' + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + additionalAlertRelabelConfigs: + description: 'AdditionalAlertRelabelConfigs allows specifying a key of a Secret containing additional Prometheus alert relabel configurations. Alert relabel configurations specified are appended to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel configs are going to break Prometheus after the upgrade.' + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + additionalScrapeConfigs: + description: 'AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.' + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + affinity: + description: If specified, the pod's scheduling constraints. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements by node's labels. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements by node's fields. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. The terms are ORed. + items: + description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements by node's labels. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements by node's fields. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + alerting: + description: Define details regarding alerting. + properties: + alertmanagers: + description: AlertmanagerEndpoints Prometheus should fire alerts against. + items: + description: AlertmanagerEndpoints defines a selection of a single Endpoints object containing alertmanager IPs to fire alerts against. + properties: + apiVersion: + description: Version of the Alertmanager API that Prometheus uses to send alerts. It can be "v1" or "v2". + type: string + bearerTokenFile: + description: BearerTokenFile to read from filesystem to use when authenticating to Alertmanager. + type: string + name: + description: Name of Endpoints object in Namespace. + type: string + namespace: + description: Namespace of Endpoints object. + type: string + pathPrefix: + description: Prefix for the HTTP path alerts are pushed to. + type: string + port: + anyOf: + - type: integer + - type: string + description: Port the Alertmanager API is exposed on. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use when firing alerts. + type: string + timeout: + description: Timeout is a per-target Alertmanager timeout when pushing alerts. + type: string + tlsConfig: + description: TLS Config to use for alertmanager connection. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + required: + - name + - namespace + - port + type: object + type: array + required: + - alertmanagers + type: object + allowOverlappingBlocks: + description: AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental in Prometheus so it may change in any upcoming release. + type: boolean + apiserverConfig: + description: APIServerConfig allows specifying a host and auth methods to access apiserver. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically and use the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. + properties: + basicAuth: + description: BasicAuth allow an endpoint to authenticate over basic authentication + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerToken: + description: Bearer token for accessing apiserver. + type: string + bearerTokenFile: + description: File to read bearer token for accessing apiserver. + type: string + host: + description: Host of apiserver. A valid string consisting of a hostname or IP followed by an optional port number + type: string + tlsConfig: + description: TLS Config to use for accessing apiserver. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + required: + - host + type: object + arbitraryFSAccessThroughSMs: + description: ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files on the file system of the Prometheus container e.g. bearer token files. + properties: + deny: + type: boolean + type: object + baseImage: + description: 'Base image to use for a Prometheus deployment. Deprecated: use ''image'' instead' + type: string + configMaps: + description: ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. + items: + type: string + type: array + containers: + description: 'Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a Prometheus pod or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `prometheus`, `config-reloader`, and `thanos-sidecar`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. Cannot be updated. + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + items: + description: ContainerPort represents a network port in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be used by the container. + items: + description: volumeDevice describes a mapping of a raw block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + disableCompaction: + description: Disable prometheus compaction. + type: boolean + enableAdminAPI: + description: 'Enable access to prometheus web admin API. Defaults to the value of `false`. WARNING: Enabling the admin APIs enables mutating endpoints, to delete data, shutdown Prometheus, and more. Enabling this should be done with care and the user is advised to add additional authentication authorization via a proxy to ensure only clients authorized to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' + type: boolean + enforcedNamespaceLabel: + description: EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created. + type: string + enforcedSampleLimit: + description: EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead. + format: int64 + type: integer + enforcedTargetLimit: + description: EnforcedTargetLimit defines a global limit on the number of scraped targets. This overrides any TargetLimit set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the TargetLimit to keep overall number of targets under the desired limit. Note that if TargetLimit is higher that value will be taken instead. + format: int64 + type: integer + evaluationInterval: + description: Interval between consecutive evaluations. + type: string + externalLabels: + additionalProperties: + type: string + description: The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). + type: object + externalUrl: + description: The external URL the Prometheus instances will be available under. This is necessary to generate correct URLs. This is necessary if Prometheus is not served from root of a DNS name. + type: string + ignoreNamespaceSelectors: + description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from the podmonitor and servicemonitor configs, and they will only discover endpoints within their current namespace. Defaults to false. + type: boolean + image: + description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Prometheus is being configured. + type: string + imagePullSecrets: + description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod + items: + description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + initContainers: + description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. Cannot be updated. + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + items: + description: ContainerPort represents a network port in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be used by the container. + items: + description: volumeDevice describes a mapping of a raw block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + listenLocal: + description: ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP. + type: boolean + logFormat: + description: Log format for Prometheus to be configured with. + type: string + logLevel: + description: Log level for Prometheus to be configured with. + type: string + nodeSelector: + additionalProperties: + type: string + description: Define which Nodes the Pods are scheduled on. + type: object + overrideHonorLabels: + description: OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceMonitor or PodMonitor to true, this overrides honor_labels to false. + type: boolean + overrideHonorTimestamps: + description: OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. + type: boolean + paused: + description: When a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects. + type: boolean + podMetadata: + description: PodMetadata configures Labels and Annotations which are propagated to the prometheus pods. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + podMonitorNamespaceSelector: + description: Namespace's labels to match for PodMonitor discovery. If nil, only check own namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + podMonitorSelector: + description: '*Experimental* PodMonitors to be selected for target discovery. *Deprecated:* if neither this nor serviceMonitorSelector are specified, configuration is unmanaged.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + portName: + description: Port name used for the pods and governing service. This defaults to web + type: string + priorityClassName: + description: Priority class assigned to the Pods + type: string + probeNamespaceSelector: + description: '*Experimental* Namespaces to be selected for Probe discovery. If nil, only check own namespace.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + probeSelector: + description: '*Experimental* Probes to be selected for target discovery.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + prometheusExternalLabelName: + description: Name of Prometheus external label used to denote Prometheus instance name. Defaults to the value of `prometheus`. External label will _not_ be added when value is set to empty string (`""`). + type: string + prometheusRulesExcludedFromEnforce: + description: PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair + items: + description: PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics. + properties: + ruleName: + description: RuleNamespace - name of excluded rule + type: string + ruleNamespace: + description: RuleNamespace - namespace of excluded rule + type: string + required: + - ruleName + - ruleNamespace + type: object + type: array + query: + description: QuerySpec defines the query command line flags when starting Prometheus. + properties: + lookbackDelta: + description: The delta difference allowed for retrieving metrics during expression evaluations. + type: string + maxConcurrency: + description: Number of concurrent queries that can be run at once. + format: int32 + type: integer + maxSamples: + description: Maximum number of samples a single query can load into memory. Note that queries will fail if they would load more samples than this into memory, so this also limits the number of samples a query can return. + format: int32 + type: integer + timeout: + description: Maximum time a query may take before being aborted. + type: string + type: object + queryLogFile: + description: QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable, and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such as `/dev/stdout` to log querie information to the default Prometheus log stream. This is only available in versions of Prometheus >= 2.16.0. For more details, see the Prometheus docs (https://prometheus.io/docs/guides/query-log/) + type: string + remoteRead: + description: If specified, the remote_read spec. This is an experimental feature, it may change in any upcoming release in a breaking way. + items: + description: RemoteReadSpec defines the remote_read configuration for prometheus. + properties: + basicAuth: + description: BasicAuth for the URL. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerToken: + description: bearer token for remote read. + type: string + bearerTokenFile: + description: File to read bearer token for remote read. + type: string + name: + description: The name of the remote read queue, must be unique if specified. The name is used in metrics and logging in order to differentiate read configurations. Only valid in Prometheus versions 2.15.0 and newer. + type: string + proxyUrl: + description: Optional ProxyURL + type: string + readRecent: + description: Whether reads should be made for queries for time ranges that the local storage should have complete data for. + type: boolean + remoteTimeout: + description: Timeout for requests to the remote read endpoint. + type: string + requiredMatchers: + additionalProperties: + type: string + description: An optional list of equality matchers which have to be present in a selector to query the remote read endpoint. + type: object + tlsConfig: + description: TLS Config to use for remote read. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + url: + description: The URL of the endpoint to send samples to. + type: string + required: + - url + type: object + type: array + remoteWrite: + description: If specified, the remote_write spec. This is an experimental feature, it may change in any upcoming release in a breaking way. + items: + description: RemoteWriteSpec defines the remote_write configuration for prometheus. + properties: + basicAuth: + description: BasicAuth for the URL. + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerToken: + description: File to read bearer token for remote write. + type: string + bearerTokenFile: + description: File to read bearer token for remote write. + type: string + name: + description: The name of the remote write queue, must be unique if specified. The name is used in metrics and logging in order to differentiate queues. Only valid in Prometheus versions 2.15.0 and newer. + type: string + proxyUrl: + description: Optional ProxyURL + type: string + queueConfig: + description: QueueConfig allows tuning of the remote write queue parameters. + properties: + batchSendDeadline: + description: BatchSendDeadline is the maximum time a sample will wait in buffer. + type: string + capacity: + description: Capacity is the number of samples to buffer per shard before we start dropping them. + type: integer + maxBackoff: + description: MaxBackoff is the maximum retry delay. + type: string + maxRetries: + description: MaxRetries is the maximum number of times to retry a batch on recoverable errors. + type: integer + maxSamplesPerSend: + description: MaxSamplesPerSend is the maximum number of samples per send. + type: integer + maxShards: + description: MaxShards is the maximum number of shards, i.e. amount of concurrency. + type: integer + minBackoff: + description: MinBackoff is the initial retry delay. Gets doubled for every retry. + type: string + minShards: + description: MinShards is the minimum number of shards, i.e. amount of concurrency. + type: integer + type: object + remoteTimeout: + description: Timeout for requests to the remote write endpoint. + type: string + tlsConfig: + description: TLS Config to use for remote write. + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + url: + description: The URL of the endpoint to send samples to. + type: string + writeRelabelConfigs: + description: The list of remote write relabel configurations. + items: + description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + description: Action to perform based on regex matching. Default is 'replace' + type: string + modulus: + description: Modulus to take of the hash of the source label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. + items: + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. + type: string + type: object + type: array + required: + - url + type: object + type: array + replicaExternalLabelName: + description: Name of Prometheus external label used to denote replica name. Defaults to the value of `prometheus_replica`. External label will _not_ be added when value is set to empty string (`""`). + type: string + replicas: + description: Number of replicas of each shard to deploy for a Prometheus deployment. Number of replicas multiplied by shards is the total number of Pods created. + format: int32 + type: integer + resources: + description: Define resources requests and limits for single Pods. + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + retention: + description: Time duration Prometheus shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). + type: string + retentionSize: + description: 'Maximum amount of disk space used by blocks. Supported units: B, KB, MB, GB, TB, PB, EB. Ex: `512MB`.' + type: string + routePrefix: + description: The route prefix Prometheus registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`. + type: string + ruleNamespaceSelector: + description: Namespaces to be selected for PrometheusRules discovery. If unspecified, only the same namespace as the Prometheus object is in is used. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + ruleSelector: + description: A selector to select which PrometheusRules to mount for loading alerting/recording rules from. Until (excluding) Prometheus Operator v0.24.0 Prometheus Operator will migrate any legacy rule ConfigMaps to PrometheusRule custom resources selected by RuleSelector. Make sure it does not match any config maps that you do not want to be migrated. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + rules: + description: /--rules.*/ command-line arguments. + properties: + alert: + description: /--rules.alert.*/ command-line arguments + properties: + forGracePeriod: + description: Minimum duration between alert and restored 'for' state. This is maintained only for alerts with configured 'for' time greater than grace period. + type: string + forOutageTolerance: + description: Max time to tolerate prometheus outage for restoring 'for' state of alert. + type: string + resendDelay: + description: Minimum amount of time to wait before resending an alert to Alertmanager. + type: string + type: object + type: object + scrapeInterval: + description: Interval between consecutive scrapes. + type: string + scrapeTimeout: + description: Number of seconds to wait for target to respond before erroring. + type: string + secrets: + description: Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The Secrets are mounted into /etc/prometheus/secrets/. + items: + type: string + type: array + securityContext: + description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified defaults to "Always".' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + serviceAccountName: + description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods. + type: string + serviceMonitorNamespaceSelector: + description: Namespace's labels to match for ServiceMonitor discovery. If nil, only check own namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + serviceMonitorSelector: + description: ServiceMonitors to be selected for target discovery. *Deprecated:* if neither this nor podMonitorSelector are specified, configuration is unmanaged. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + sha: + description: 'SHA of Prometheus container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' + type: string + shards: + description: 'EXPERIMENTAL: Number of shards to distribute targets onto. Number of replicas multiplied by shards is the total number of Pods created. Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally use Thanos sidecar and Thanos querier or remote write data to a central location. Sharding is done on the content of the `__address__` target meta-label.' + format: int32 + type: integer + storage: + description: Storage spec to specify how storage shall be used. + properties: + disableMountSubPath: + description: 'Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.' + type: boolean + emptyDir: + description: 'EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' + properties: + medium: + description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + volumeClaimTemplate: + description: A PVC spec to be used by the Prometheus StatefulSets. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + spec: + description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.' + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume backing this claim. + type: string + type: object + status: + description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Represents the actual resources of the underlying volume. + type: object + conditions: + description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. + items: + description: PersistentVolumeClaimCondition contails details about state of pvc + properties: + lastProbeTime: + description: Last time we probed the condition. + format: date-time + type: string + lastTransitionTime: + description: Last time the condition transitioned from one status to another. + format: date-time + type: string + message: + description: Human-readable message indicating details about last transition. + type: string + reason: + description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. + type: string + status: + type: string + type: + description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type + type: string + required: + - status + - type + type: object + type: array + phase: + description: Phase represents the current phase of PersistentVolumeClaim. + type: string + type: object + type: object + type: object + tag: + description: 'Tag of Prometheus container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' + type: string + thanos: + description: "Thanos configuration allows configuring various aspects of a Prometheus server in a Thanos environment. \n This section is experimental, it may change significantly without deprecation notice in any release. \n This is experimental and may change significantly without backward compatibility in any release." + properties: + baseImage: + description: 'Thanos base image if other than default. Deprecated: use ''image'' instead' + type: string + grpcServerTlsConfig: + description: 'GRPCServerTLSConfig configures the gRPC server from which Thanos Querier reads recorded rule data. Note: Currently only the CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' CLI args.' + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + image: + description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Thanos is being configured. + type: string + listenLocal: + description: ListenLocal makes the Thanos sidecar listen on loopback, so that it does not bind against the Pod IP. + type: boolean + logFormat: + description: LogFormat for Thanos sidecar to be configured with. + type: string + logLevel: + description: LogLevel for Thanos sidecar to be configured with. + type: string + minTime: + description: MinTime for Thanos sidecar to be configured with. Option can be a constant time in RFC3339 format or time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y. + type: string + objectStorageConfig: + description: ObjectStorageConfig configures object storage in Thanos. Alternative to ObjectStorageConfigFile, and lower order priority. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + objectStorageConfigFile: + description: ObjectStorageConfigFile specifies the path of the object storage configuration file. When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence. + type: string + resources: + description: Resources defines the resource requirements for the Thanos sidecar. If not provided, no requests/limits will be set + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + sha: + description: 'SHA of Thanos container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' + type: string + tag: + description: 'Tag of Thanos sidecar container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' + type: string + tracingConfig: + description: TracingConfig configures tracing in Thanos. This is an experimental feature, it may change in any upcoming release in a breaking way. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + tracingConfigFile: + description: TracingConfig specifies the path of the tracing configuration file. When used alongside with TracingConfig, TracingConfigFile takes precedence. + type: string + version: + description: Version describes the version of Thanos to use. + type: string + type: object + tolerations: + description: If specified, the pod's tolerations. + items: + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + type: string + type: object + type: array + topologySpreadConstraints: + description: If specified, the pod's topology spread constraints. + items: + description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. + properties: + labelSelector: + description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + maxSkew: + description: 'MaxSkew describes the degree to which pods may be unevenly distributed. It''s the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. It''s a required field. Default value is 1 and 0 is not allowed.' + format: int32 + type: integer + topologyKey: + description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. It's a required field. + type: string + whenUnsatisfiable: + description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It''s considered as "Unsatisfiable" if and only if placing incoming pod on any topology violates "MaxSkew". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + version: + description: Version of Prometheus to be deployed. + type: string + volumeMounts: + description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the prometheus container, that are generated as a result of StorageSpec objects. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + volumes: + description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. + items: + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + properties: + cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' + type: string + diskName: + description: The Name of the data disk in the blob storage + type: string + diskURI: + description: The URI the data disk in the blob storage + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + kind: + description: 'Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + properties: + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: the name of secret that contains Azure Storage Account Name and Key + type: string + shareName: + description: Share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + properties: + monitors: + description: 'Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'Optional: Used as the mounted root, rather than the full Ceph tree, default is /' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + user: + description: 'Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'Optional: points to a secret object containing parameters used to connect to OpenStack.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + volumeID: + description: 'volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: ConfigMap represents a configMap that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys must be defined + type: boolean + type: object + csi: + description: CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature). + properties: + driver: + description: Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + type: string + fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + type: string + nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + readOnly: + description: Specifies a read-only configuration for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + type: object + required: + - driver + type: object + downwardAPI: + description: DownwardAPI represents downward API about the pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume file + items: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'EmptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + fc: + description: FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + lun: + description: 'Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' + items: + type: string + type: array + wwids: + description: 'Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + properties: + driver: + description: Driver is the name of the driver to use for this volume. + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'Optional: Extra command options if any.' + type: object + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + secretRef: + description: 'Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + required: + - driver + type: object + flocker: + description: Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + properties: + datasetName: + description: Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + type: string + datasetUUID: + description: UUID of the dataset. This is unique identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' + properties: + directory: + description: Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + type: string + repository: + description: Repository URL + type: string + revision: + description: Commit hash for the specified revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' + properties: + path: + description: 'Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication + type: boolean + chapAuthSession: + description: whether support iSCSI Session CHAP authentication + type: boolean + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + type: string + iqn: + description: Target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + type: string + lun: + description: iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + items: + type: string + type: array + readOnly: + description: ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: CHAP Secret for iSCSI target and initiator authentication + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + targetPortal: + description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'NFS represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + pdID: + description: ID that identifies Photon Controller persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + properties: + fsType: + description: FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: VolumeID uniquely identifies a Portworx volume + type: string + required: + - volumeID + type: object + projected: + description: Items for all in one resources secrets, configmaps, and downward API + properties: + defaultMode: + description: Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + format: int32 + type: integer + sources: + description: list of volume projections + items: + description: Projection that may be projected along with other supported volume types + properties: + configMap: + description: information about the configMap data to project + properties: + items: + description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys must be defined + type: boolean + type: object + downwardAPI: + description: information about the downwardAPI data to project + properties: + items: + description: Items is a list of DownwardAPIVolume file + items: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + description: information about the secret data to project + properties: + items: + description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + type: object + serviceAccountToken: + description: information about the serviceAccountToken data to project + properties: + audience: + description: Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + type: string + expirationSeconds: + description: ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + format: int64 + type: integer + path: + description: Path is the path relative to the mount point of the file to project the token into. + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + description: Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + properties: + group: + description: Group to map volume access to Default is no group + type: string + readOnly: + description: ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + type: boolean + registry: + description: Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + type: string + tenant: + description: Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + type: string + user: + description: User to map volume access to Defaults to serivceaccount user + type: string + volume: + description: Volume is a string that references an already created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'RBD represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + user: + description: 'The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + type: string + gateway: + description: The host address of the ScaleIO API Gateway. + type: string + protectionDomain: + description: The name of the ScaleIO Protection Domain for the configured storage. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, default false + type: boolean + storageMode: + description: Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + type: string + storagePool: + description: The ScaleIO Storage Pool associated with the protection domain. + type: string + system: + description: The name of the storage system as configured in ScaleIO. + type: string + volumeName: + description: The name of a volume already created in the ScaleIO system that is associated with this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: Specify whether the Secret or its keys must be defined + type: boolean + secretName: + description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + volumeName: + description: VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + type: string + volumeNamespace: + description: VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + type: string + type: object + vsphereVolume: + description: VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + storagePolicyID: + description: Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: Storage Policy Based Management (SPBM) profile name. + type: string + volumePath: + description: Path that identifies vSphere volume vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + walCompression: + description: Enable compression of the write-ahead log using Snappy. This flag is only available in versions of Prometheus >= 2.11.0. + type: boolean + web: + description: WebSpec defines the web command line flags when starting Prometheus. + properties: + pageTitle: + description: The prometheus web page title + type: string + type: object + type: object + status: + description: 'Most recent observed status of the Prometheus cluster. Read-only. Not included when requesting from the apiserver, only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + availableReplicas: + description: Total number of available pods (ready for at least minReadySeconds) targeted by this Prometheus deployment. + format: int32 + type: integer + paused: + description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. + type: boolean + replicas: + description: Total number of non-terminated pods targeted by this Prometheus deployment (their labels match the selector). + format: int32 + type: integer + unavailableReplicas: + description: Total number of unavailable pods targeted by this Prometheus deployment. + format: int32 + type: integer + updatedReplicas: + description: Total number of non-terminated pods targeted by this Prometheus deployment that have the desired version spec. + format: int32 + type: integer + required: + - availableReplicas + - paused + - replicas + - unavailableReplicas + - updatedReplicas + type: object + required: + - spec + type: object + served: true + storage: true + subresources: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-prometheusrules.yaml b/charts/kube-prometheus-stack/crds/crd-prometheusrules.yaml new file mode 100644 index 000000000..8c0776c13 --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-prometheusrules.yaml @@ -0,0 +1,90 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: prometheusrules.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: PrometheusRule + listKind: PrometheusRuleList + plural: prometheusrules + singular: prometheusrule + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: PrometheusRule defines recording and alerting rules for a Prometheus instance + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired alerting rule definitions for Prometheus. + properties: + groups: + description: Content of Prometheus rule file + items: + description: 'RuleGroup is a list of sequentially evaluated recording and alerting rules. Note: PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. Valid values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response' + properties: + interval: + type: string + name: + type: string + partial_response_strategy: + type: string + rules: + items: + description: Rule describes an alerting or recording rule. + properties: + alert: + type: string + annotations: + additionalProperties: + type: string + type: object + expr: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + for: + type: string + labels: + additionalProperties: + type: string + type: object + record: + type: string + required: + - expr + type: object + type: array + required: + - name + - rules + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-servicemonitors.yaml b/charts/kube-prometheus-stack/crds/crd-servicemonitors.yaml new file mode 100644 index 000000000..a65be71b6 --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-servicemonitors.yaml @@ -0,0 +1,373 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: servicemonitors.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: ServiceMonitor + listKind: ServiceMonitorList + plural: servicemonitors + singular: servicemonitor + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ServiceMonitor defines monitoring for a set of services. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Specification of desired Service selection for target discovery by Prometheus. + properties: + endpoints: + description: A list of endpoints allowed as part of this ServiceMonitor. + items: + description: Endpoint defines a scrapeable endpoint serving Prometheus metrics. + properties: + basicAuth: + description: 'BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints' + properties: + password: + description: The secret in the service monitor namespace that contains the password for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + username: + description: The secret in the service monitor namespace that contains the username for authentication. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + bearerTokenFile: + description: File to read bearer token for scraping targets. + type: string + bearerTokenSecret: + description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + honorLabels: + description: HonorLabels chooses the metric's labels on collisions with target labels. + type: boolean + honorTimestamps: + description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. + type: boolean + interval: + description: Interval at which metrics should be scraped + type: string + metricRelabelings: + description: MetricRelabelConfigs to apply to samples before ingestion. + items: + description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + description: Action to perform based on regex matching. Default is 'replace' + type: string + modulus: + description: Modulus to take of the hash of the source label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. + items: + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. + type: string + type: object + type: array + params: + additionalProperties: + items: + type: string + type: array + description: Optional HTTP URL parameters + type: object + path: + description: HTTP path to scrape for metrics. + type: string + port: + description: Name of the service port this endpoint refers to. Mutually exclusive with targetPort. + type: string + proxyUrl: + description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. + type: string + relabelings: + description: 'RelabelConfigs to apply to samples before scraping. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' + items: + description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' + properties: + action: + description: Action to perform based on regex matching. Default is 'replace' + type: string + modulus: + description: Modulus to take of the hash of the source label values. + format: int64 + type: integer + regex: + description: Regular expression against which the extracted value is matched. Default is '(.*)' + type: string + replacement: + description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' + type: string + separator: + description: Separator placed between concatenated source label values. default is ';'. + type: string + sourceLabels: + description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. + items: + type: string + type: array + targetLabel: + description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. + type: string + type: object + type: array + scheme: + description: HTTP scheme to use for scraping. + type: string + scrapeTimeout: + description: Timeout after which the scrape is ended + type: string + targetPort: + anyOf: + - type: integer + - type: string + description: Name or number of the target port of the Pod behind the Service, the port must be specified with container port property. Mutually exclusive with port. + x-kubernetes-int-or-string: true + tlsConfig: + description: TLS configuration to use when scraping the endpoint + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + type: object + type: array + jobLabel: + description: The label to use to retrieve the job name from. + type: string + namespaceSelector: + description: Selector to select which namespaces the Endpoints objects are discovered from. + properties: + any: + description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. + type: boolean + matchNames: + description: List of namespace names. + items: + type: string + type: array + type: object + podTargetLabels: + description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target. + items: + type: string + type: array + sampleLimit: + description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. + format: int64 + type: integer + selector: + description: Selector to select Endpoints objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + targetLabels: + description: TargetLabels transfers labels on the Kubernetes Service onto the target. + items: + type: string + type: array + targetLimit: + description: TargetLimit defines a limit on the number of scraped targets that will be accepted. + format: int64 + type: integer + required: + - endpoints + - selector + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/crds/crd-thanosrulers.yaml b/charts/kube-prometheus-stack/crds/crd-thanosrulers.yaml new file mode 100644 index 000000000..8fe6e81ad --- /dev/null +++ b/charts/kube-prometheus-stack/crds/crd-thanosrulers.yaml @@ -0,0 +1,3340 @@ +# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: thanosrulers.monitoring.coreos.com +spec: + group: monitoring.coreos.com + names: + kind: ThanosRuler + listKind: ThanosRulerList + plural: thanosrulers + singular: thanosruler + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ThanosRuler defines a ThanosRuler deployment. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: 'Specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + affinity: + description: If specified, the pod's scheduling constraints. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements by node's labels. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements by node's fields. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. The terms are ORed. + items: + description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements by node's labels. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements by node's fields. + items: + description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + operator: + description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + alertDropLabels: + description: AlertDropLabels configure the label names which should be dropped in ThanosRuler alerts. If `labels` field is not provided, `thanos_ruler_replica` will be dropped in alerts by default. + items: + type: string + type: array + alertQueryUrl: + description: The external Query URL the Thanos Ruler will set in the 'Source' field of all alerts. Maps to the '--alert.query-url' CLI arg. + type: string + alertmanagersConfig: + description: Define configuration for connecting to alertmanager. Only available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` arg. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + alertmanagersUrl: + description: 'Define URLs to send alerts to Alertmanager. For Thanos v0.10.0 and higher, AlertManagersConfig should be used instead. Note: this field will be ignored if AlertManagersConfig is specified. Maps to the `alertmanagers.url` arg.' + items: + type: string + type: array + containers: + description: 'Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a ThanosRuler pod or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `thanos-ruler` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. Cannot be updated. + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + items: + description: ContainerPort represents a network port in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be used by the container. + items: + description: volumeDevice describes a mapping of a raw block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + enforcedNamespaceLabel: + description: EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created. + type: string + evaluationInterval: + description: Interval between consecutive evaluations. + type: string + externalPrefix: + description: The external URL the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name. + type: string + grpcServerTlsConfig: + description: 'GRPCServerTLSConfig configures the gRPC server from which Thanos Querier reads recorded rule data. Note: Currently only the CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' CLI args.' + properties: + ca: + description: Struct containing the CA cert to use for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + caFile: + description: Path to the CA cert in the Prometheus container to use for the targets. + type: string + cert: + description: Struct containing the client cert file for the targets. + properties: + configMap: + description: ConfigMap containing data to use for the targets. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + secret: + description: Secret containing data to use for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + certFile: + description: Path to the client cert file in the Prometheus container for the targets. + type: string + insecureSkipVerify: + description: Disable target certificate validation. + type: boolean + keyFile: + description: Path to the client key file in the Prometheus container for the targets. + type: string + keySecret: + description: Secret containing the client key file for the targets. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + serverName: + description: Used to verify the hostname for the targets. + type: string + type: object + image: + description: Thanos container image URL. + type: string + imagePullSecrets: + description: An optional list of references to secrets in the same namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod + items: + description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + initContainers: + description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the ThanosRuler configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' + items: + description: A single application container that you want to run within a pod. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the container. Cannot be updated. + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + items: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' + type: string + imagePullPolicy: + description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' + type: string + lifecycle: + description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. + properties: + postStart: + description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + type: string + ports: + description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + items: + description: ContainerPort represents a network port in a single container. + properties: + containerPort: + description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port to. + type: string + hostPort: + description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + startupProbe: + description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + properties: + exec: + description: One and only one of the following should be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + stdin: + description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + type: boolean + stdinOnce: + description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + type: boolean + terminationMessagePath: + description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' + type: string + terminationMessagePolicy: + description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + type: string + tty: + description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + type: boolean + volumeDevices: + description: volumeDevices is the list of block devices to be used by the container. + items: + description: volumeDevice describes a mapping of a raw block device within a container. + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + description: Pod volumes to mount into the container's filesystem. Cannot be updated. + items: + description: VolumeMount describes a mounting of a Volume within a container. + properties: + mountPath: + description: Path within the container at which the volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + type: string + required: + - name + type: object + type: array + labels: + additionalProperties: + type: string + description: Labels configure the external label pairs to ThanosRuler. If not provided, default replica label `thanos_ruler_replica` will be added as a label and be dropped in alerts. + type: object + listenLocal: + description: ListenLocal makes the Thanos ruler listen on loopback, so that it does not bind against the Pod IP. + type: boolean + logFormat: + description: Log format for ThanosRuler to be configured with. + type: string + logLevel: + description: Log level for ThanosRuler to be configured with. + type: string + nodeSelector: + additionalProperties: + type: string + description: Define which Nodes the Pods are scheduled on. + type: object + objectStorageConfig: + description: ObjectStorageConfig configures object storage in Thanos. Alternative to ObjectStorageConfigFile, and lower order priority. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + objectStorageConfigFile: + description: ObjectStorageConfigFile specifies the path of the object storage configuration file. When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence. + type: string + paused: + description: When a ThanosRuler deployment is paused, no actions except for deletion will be performed on the underlying objects. + type: boolean + podMetadata: + description: PodMetadata contains Labels and Annotations gets propagated to the thanos ruler pods. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + portName: + description: Port name used for the pods and governing service. This defaults to web + type: string + priorityClassName: + description: Priority class assigned to the Pods + type: string + prometheusRulesExcludedFromEnforce: + description: PrometheusRulesExcludedFromEnforce - list of Prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair + items: + description: PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics. + properties: + ruleName: + description: RuleNamespace - name of excluded rule + type: string + ruleNamespace: + description: RuleNamespace - namespace of excluded rule + type: string + required: + - ruleName + - ruleNamespace + type: object + type: array + queryConfig: + description: Define configuration for connecting to thanos query instances. If this is defined, the QueryEndpoints field will be ignored. Maps to the `query.config` CLI argument. Only available with thanos v0.11.0 and higher. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + queryEndpoints: + description: QueryEndpoints defines Thanos querier endpoints from which to query metrics. Maps to the --query flag of thanos ruler. + items: + type: string + type: array + replicas: + description: Number of thanos ruler instances to deploy. + format: int32 + type: integer + resources: + description: Resources defines the resource requirements for single Pods. If not provided, no requests/limits will be set + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + retention: + description: Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). + type: string + routePrefix: + description: The route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path. + type: string + ruleNamespaceSelector: + description: Namespaces to be selected for Rules discovery. If unspecified, only the same namespace as the ThanosRuler object is in is used. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + ruleSelector: + description: A label selector to select which PrometheusRules to mount for alerting and recording. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + securityContext: + description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified defaults to "Always".' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + serviceAccountName: + description: ServiceAccountName is the name of the ServiceAccount to use to run the Thanos Ruler Pods. + type: string + storage: + description: Storage spec to specify how storage shall be used. + properties: + disableMountSubPath: + description: 'Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.' + type: boolean + emptyDir: + description: 'EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' + properties: + medium: + description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + volumeClaimTemplate: + description: A PVC spec to be used by the Prometheus StatefulSets. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' + type: object + name: + description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' + type: string + type: object + spec: + description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.' + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume backing this claim. + type: string + type: object + status: + description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + accessModes: + description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: Represents the actual resources of the underlying volume. + type: object + conditions: + description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. + items: + description: PersistentVolumeClaimCondition contails details about state of pvc + properties: + lastProbeTime: + description: Last time we probed the condition. + format: date-time + type: string + lastTransitionTime: + description: Last time the condition transitioned from one status to another. + format: date-time + type: string + message: + description: Human-readable message indicating details about last transition. + type: string + reason: + description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. + type: string + status: + type: string + type: + description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type + type: string + required: + - status + - type + type: object + type: array + phase: + description: Phase represents the current phase of PersistentVolumeClaim. + type: string + type: object + type: object + type: object + tolerations: + description: If specified, the pod's tolerations. + items: + description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + type: string + type: object + type: array + topologySpreadConstraints: + description: If specified, the pod's topology spread constraints. + items: + description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. + properties: + labelSelector: + description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + maxSkew: + description: 'MaxSkew describes the degree to which pods may be unevenly distributed. It''s the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. It''s a required field. Default value is 1 and 0 is not allowed.' + format: int32 + type: integer + topologyKey: + description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. It's a required field. + type: string + whenUnsatisfiable: + description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It''s considered as "Unsatisfiable" if and only if placing incoming pod on any topology violates "MaxSkew". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + tracingConfig: + description: TracingConfig configures tracing in Thanos. This is an experimental feature, it may change in any upcoming release in a breaking way. + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + volumes: + description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. + items: + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + properties: + cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' + type: string + diskName: + description: The Name of the data disk in the blob storage + type: string + diskURI: + description: The URI the data disk in the blob storage + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + kind: + description: 'Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + properties: + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: the name of secret that contains Azure Storage Account Name and Key + type: string + shareName: + description: Share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + properties: + monitors: + description: 'Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'Optional: Used as the mounted root, rather than the full Ceph tree, default is /' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + user: + description: 'Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'Optional: points to a secret object containing parameters used to connect to OpenStack.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + volumeID: + description: 'volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: ConfigMap represents a configMap that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys must be defined + type: boolean + type: object + csi: + description: CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature). + properties: + driver: + description: Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + type: string + fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + type: string + nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + readOnly: + description: Specifies a read-only configuration for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + type: object + required: + - driver + type: object + downwardAPI: + description: DownwardAPI represents downward API about the pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume file + items: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'EmptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + fc: + description: FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + lun: + description: 'Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' + items: + type: string + type: array + wwids: + description: 'Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + properties: + driver: + description: Driver is the name of the driver to use for this volume. + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'Optional: Extra command options if any.' + type: object + readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + secretRef: + description: 'Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + required: + - driver + type: object + flocker: + description: Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + properties: + datasetName: + description: Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + type: string + datasetUUID: + description: UUID of the dataset. This is unique identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' + properties: + directory: + description: Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + type: string + repository: + description: Repository URL + type: string + revision: + description: Commit hash for the specified revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' + properties: + path: + description: 'Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication + type: boolean + chapAuthSession: + description: whether support iSCSI Session CHAP authentication + type: boolean + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + type: string + iqn: + description: Target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + type: string + lun: + description: iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + items: + type: string + type: array + readOnly: + description: ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: CHAP Secret for iSCSI target and initiator authentication + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + targetPortal: + description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'NFS represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + pdID: + description: ID that identifies Photon Controller persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + properties: + fsType: + description: FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: VolumeID uniquely identifies a Portworx volume + type: string + required: + - volumeID + type: object + projected: + description: Items for all in one resources secrets, configmaps, and downward API + properties: + defaultMode: + description: Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + format: int32 + type: integer + sources: + description: list of volume projections + items: + description: Projection that may be projected along with other supported volume types + properties: + configMap: + description: information about the configMap data to project + properties: + items: + description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys must be defined + type: boolean + type: object + downwardAPI: + description: information about the downwardAPI data to project + properties: + items: + description: Items is a list of DownwardAPIVolume file + items: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + description: information about the secret data to project + properties: + items: + description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + type: object + serviceAccountToken: + description: information about the serviceAccountToken data to project + properties: + audience: + description: Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + type: string + expirationSeconds: + description: ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + format: int64 + type: integer + path: + description: Path is the path relative to the mount point of the file to project the token into. + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + description: Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + properties: + group: + description: Group to map volume access to Default is no group + type: string + readOnly: + description: ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + type: boolean + registry: + description: Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + type: string + tenant: + description: Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + type: string + user: + description: User to map volume access to Defaults to serivceaccount user + type: string + volume: + description: Volume is a string that references an already created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'RBD represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' + type: string + image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + user: + description: 'The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + type: string + gateway: + description: The host address of the ScaleIO API Gateway. + type: string + protectionDomain: + description: The name of the ScaleIO Protection Domain for the configured storage. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, default false + type: boolean + storageMode: + description: Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + type: string + storagePool: + description: The ScaleIO Storage Pool associated with the protection domain. + type: string + system: + description: The name of the storage system as configured in ScaleIO. + type: string + volumeName: + description: The name of a volume already created in the ScaleIO system that is associated with this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + items: + description: Maps a string key to a path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: Specify whether the Secret or its keys must be defined + type: boolean + secretName: + description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + volumeName: + description: VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + type: string + volumeNamespace: + description: VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + type: string + type: object + vsphereVolume: + description: VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + storagePolicyID: + description: Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: Storage Policy Based Management (SPBM) profile name. + type: string + volumePath: + description: Path that identifies vSphere volume vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + status: + description: 'Most recent observed status of the ThanosRuler cluster. Read-only. Not included when requesting from the apiserver, only from the ThanosRuler Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' + properties: + availableReplicas: + description: Total number of available pods (ready for at least minReadySeconds) targeted by this ThanosRuler deployment. + format: int32 + type: integer + paused: + description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. + type: boolean + replicas: + description: Total number of non-terminated pods targeted by this ThanosRuler deployment (their labels match the selector). + format: int32 + type: integer + unavailableReplicas: + description: Total number of unavailable pods targeted by this ThanosRuler deployment. + format: int32 + type: integer + updatedReplicas: + description: Total number of non-terminated pods targeted by this ThanosRuler deployment that have the desired version spec. + format: int32 + type: integer + required: + - availableReplicas + - paused + - replicas + - unavailableReplicas + - updatedReplicas + type: object + required: + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/kube-prometheus-stack/templates/NOTES.txt b/charts/kube-prometheus-stack/templates/NOTES.txt new file mode 100644 index 000000000..371f3ae39 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/NOTES.txt @@ -0,0 +1,4 @@ +{{ $.Chart.Name }} has been installed. Check its status by running: + kubectl --namespace {{ template "kube-prometheus-stack.namespace" . }} get pods -l "release={{ $.Release.Name }}" + +Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator. diff --git a/charts/kube-prometheus-stack/templates/_helpers.tpl b/charts/kube-prometheus-stack/templates/_helpers.tpl new file mode 100644 index 000000000..8a3d1b76f --- /dev/null +++ b/charts/kube-prometheus-stack/templates/_helpers.tpl @@ -0,0 +1,93 @@ +{{/* vim: set filetype=mustache: */}} +{{/* Expand the name of the chart. This is suffixed with -alertmanager, which means subtract 13 from longest 63 available */}} +{{- define "kube-prometheus-stack.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 50 | trimSuffix "-" -}} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +The components in this chart create additional resources that expand the longest created name strings. +The longest name that gets created adds and extra 37 characters, so truncation should be 63-35=26. +*/}} +{{- define "kube-prometheus-stack.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 26 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 26 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 26 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* Fullname suffixed with operator */}} +{{- define "kube-prometheus-stack.operator.fullname" -}} +{{- printf "%s-operator" (include "kube-prometheus-stack.fullname" .) -}} +{{- end }} + +{{/* Fullname suffixed with prometheus */}} +{{- define "kube-prometheus-stack.prometheus.fullname" -}} +{{- printf "%s-prometheus" (include "kube-prometheus-stack.fullname" .) -}} +{{- end }} + +{{/* Fullname suffixed with alertmanager */}} +{{- define "kube-prometheus-stack.alertmanager.fullname" -}} +{{- printf "%s-alertmanager" (include "kube-prometheus-stack.fullname" .) -}} +{{- end }} + +{{/* Create chart name and version as used by the chart label. */}} +{{- define "kube-prometheus-stack.chartref" -}} +{{- replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name -}} +{{- end }} + +{{/* Generate basic labels */}} +{{- define "kube-prometheus-stack.labels" }} +chart: {{ template "kube-prometheus-stack.chartref" . }} +release: {{ $.Release.Name | quote }} +heritage: {{ $.Release.Service | quote }} +{{- if .Values.commonLabels}} +{{ toYaml .Values.commonLabels }} +{{- end }} +{{- end }} + +{{/* Create the name of kube-prometheus-stack service account to use */}} +{{- define "kube-prometheus-stack.operator.serviceAccountName" -}} +{{- if .Values.prometheusOperator.serviceAccount.create -}} + {{ default (include "kube-prometheus-stack.operator.fullname" .) .Values.prometheusOperator.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.prometheusOperator.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* Create the name of prometheus service account to use */}} +{{- define "kube-prometheus-stack.prometheus.serviceAccountName" -}} +{{- if .Values.prometheus.serviceAccount.create -}} + {{ default (include "kube-prometheus-stack.prometheus.fullname" .) .Values.prometheus.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.prometheus.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* Create the name of alertmanager service account to use */}} +{{- define "kube-prometheus-stack.alertmanager.serviceAccountName" -}} +{{- if .Values.alertmanager.serviceAccount.create -}} + {{ default (include "kube-prometheus-stack.alertmanager.fullname" .) .Values.alertmanager.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.alertmanager.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Allow the release namespace to be overridden for multi-namespace deployments in combined charts +*/}} +{{- define "kube-prometheus-stack.namespace" -}} + {{- if .Values.namespaceOverride -}} + {{- .Values.namespaceOverride -}} + {{- else -}} + {{- .Release.Namespace -}} + {{- end -}} +{{- end -}} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/alertmanager/alertmanager.yaml b/charts/kube-prometheus-stack/templates/alertmanager/alertmanager.yaml new file mode 100644 index 000000000..42f104531 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/alertmanager.yaml @@ -0,0 +1,141 @@ +{{- if .Values.alertmanager.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: Alertmanager +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: +{{- if .Values.alertmanager.alertmanagerSpec.image }} + image: {{ .Values.alertmanager.alertmanagerSpec.image.repository }}:{{ .Values.alertmanager.alertmanagerSpec.image.tag }} + version: {{ .Values.alertmanager.alertmanagerSpec.image.tag }} + {{- if .Values.alertmanager.alertmanagerSpec.image.sha }} + sha: {{ .Values.alertmanager.alertmanagerSpec.image.sha }} + {{- end }} +{{- end }} + replicas: {{ .Values.alertmanager.alertmanagerSpec.replicas }} + listenLocal: {{ .Values.alertmanager.alertmanagerSpec.listenLocal }} + serviceAccountName: {{ template "kube-prometheus-stack.alertmanager.serviceAccountName" . }} +{{- if .Values.alertmanager.alertmanagerSpec.externalUrl }} + externalUrl: "{{ .Values.alertmanager.alertmanagerSpec.externalUrl }}" +{{- else if and .Values.alertmanager.ingress.enabled .Values.alertmanager.ingress.hosts }} + externalUrl: "http://{{ tpl (index .Values.alertmanager.ingress.hosts 0) . }}{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}" +{{- else }} + externalUrl: http://{{ template "kube-prometheus-stack.fullname" . }}-alertmanager.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.alertmanager.service.port }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.nodeSelector }} + nodeSelector: +{{ toYaml .Values.alertmanager.alertmanagerSpec.nodeSelector | indent 4 }} +{{- end }} + paused: {{ .Values.alertmanager.alertmanagerSpec.paused }} + logFormat: {{ .Values.alertmanager.alertmanagerSpec.logFormat | quote }} + logLevel: {{ .Values.alertmanager.alertmanagerSpec.logLevel | quote }} + retention: {{ .Values.alertmanager.alertmanagerSpec.retention | quote }} +{{- if .Values.alertmanager.alertmanagerSpec.secrets }} + secrets: +{{ toYaml .Values.alertmanager.alertmanagerSpec.secrets | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.configSecret }} + configSecret: {{ .Values.alertmanager.alertmanagerSpec.configSecret }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.configMaps }} + configMaps: +{{ toYaml .Values.alertmanager.alertmanagerSpec.configMaps | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector }} + alertmanagerConfigSelector: +{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector | indent 4}} +{{ else }} + alertmanagerConfigSelector: {} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector }} + alertmanagerConfigNamespaceSelector: +{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector | indent 4}} +{{ else }} + alertmanagerConfigNamespaceSelector: {} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.resources }} + resources: +{{ toYaml .Values.alertmanager.alertmanagerSpec.resources | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.routePrefix }} + routePrefix: "{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}" +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.securityContext }} + securityContext: +{{ toYaml .Values.alertmanager.alertmanagerSpec.securityContext | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.storage }} + storage: +{{ toYaml .Values.alertmanager.alertmanagerSpec.storage | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.podMetadata }} + podMetadata: +{{ toYaml .Values.alertmanager.alertmanagerSpec.podMetadata | indent 4 }} +{{- end }} +{{- if or .Values.alertmanager.alertmanagerSpec.podAntiAffinity .Values.alertmanager.alertmanagerSpec.affinity }} + affinity: +{{- if .Values.alertmanager.alertmanagerSpec.affinity }} +{{ toYaml .Values.alertmanager.alertmanagerSpec.affinity | indent 4 }} +{{- end }} +{{- if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity "hard" }} + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }} + labelSelector: + matchExpressions: + - {key: app, operator: In, values: [alertmanager]} + - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-alertmanager]} +{{- else if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity "soft" }} + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }} + labelSelector: + matchExpressions: + - {key: app, operator: In, values: [alertmanager]} + - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-alertmanager]} +{{- end }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.tolerations }} + tolerations: +{{ toYaml .Values.alertmanager.alertmanagerSpec.tolerations | indent 4 }} +{{- end }} +{{- if .Values.global.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.global.imagePullSecrets | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.containers }} + containers: +{{ toYaml .Values.alertmanager.alertmanagerSpec.containers | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.initContainers }} + initContainers: +{{ toYaml .Values.alertmanager.alertmanagerSpec.initContainers | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.priorityClassName }} + priorityClassName: {{.Values.alertmanager.alertmanagerSpec.priorityClassName }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.additionalPeers }} + additionalPeers: +{{ toYaml .Values.alertmanager.alertmanagerSpec.additionalPeers | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.volumes }} + volumes: +{{ toYaml .Values.alertmanager.alertmanagerSpec.volumes | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.volumeMounts }} + volumeMounts: +{{ toYaml .Values.alertmanager.alertmanagerSpec.volumeMounts | indent 4 }} +{{- end }} + portName: {{ .Values.alertmanager.alertmanagerSpec.portName }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.clusterAdvertiseAddress }} + clusterAdvertiseAddress: {{ .Values.alertmanager.alertmanagerSpec.clusterAdvertiseAddress }} +{{- end }} +{{- if .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }} + forceEnableClusterMode: {{ .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/ingress.yaml b/charts/kube-prometheus-stack/templates/alertmanager/ingress.yaml new file mode 100644 index 000000000..1aff09475 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/ingress.yaml @@ -0,0 +1,58 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }} +{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} +{{- $servicePort := .Values.alertmanager.service.port -}} +{{- $routePrefix := list .Values.alertmanager.alertmanagerSpec.routePrefix }} +{{- $paths := .Values.alertmanager.ingress.paths | default $routePrefix -}} +{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} +apiVersion: networking.k8s.io/v1beta1 +{{ else }} +apiVersion: extensions/v1beta1 +{{ end -}} +kind: Ingress +metadata: + name: {{ $serviceName }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- if .Values.alertmanager.ingress.annotations }} + annotations: +{{ toYaml .Values.alertmanager.ingress.annotations | indent 4 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{- if .Values.alertmanager.ingress.labels }} +{{ toYaml .Values.alertmanager.ingress.labels | indent 4 }} +{{- end }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + {{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} + {{- if .Values.alertmanager.ingress.ingressClassName }} + ingressClassName: {{ .Values.alertmanager.ingress.ingressClassName }} + {{- end }} + {{- end }} + rules: + {{- if .Values.alertmanager.ingress.hosts }} + {{- range $host := .Values.alertmanager.ingress.hosts }} + - host: {{ tpl $host $ }} + http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- else }} + - http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- if .Values.alertmanager.ingress.tls }} + tls: +{{ tpl (toYaml .Values.alertmanager.ingress.tls | indent 4) . }} + {{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/ingressperreplica.yaml b/charts/kube-prometheus-stack/templates/alertmanager/ingressperreplica.yaml new file mode 100644 index 000000000..7689c29d9 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/ingressperreplica.yaml @@ -0,0 +1,58 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled .Values.alertmanager.ingressPerReplica.enabled }} +{{- $count := .Values.alertmanager.alertmanagerSpec.replicas | int -}} +{{- $servicePort := .Values.alertmanager.service.port -}} +{{- $ingressValues := .Values.alertmanager.ingressPerReplica -}} +apiVersion: v1 +kind: List +metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-ingressperreplica + namespace: {{ template "kube-prometheus-stack.namespace" . }} +items: +{{ range $i, $e := until $count }} + - kind: Ingress + {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} + apiVersion: networking.k8s.io/v1beta1 + {{ else }} + apiVersion: extensions/v1beta1 + {{ end -}} + metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ include "kube-prometheus-stack.name" $ }}-alertmanager +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if $ingressValues.labels }} +{{ toYaml $ingressValues.labels | indent 8 }} + {{- end }} + {{- if $ingressValues.annotations }} + annotations: +{{ toYaml $ingressValues.annotations | indent 8 }} + {{- end }} + spec: + {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} + {{- if $ingressValues.ingressClassName }} + ingressClassName: {{ $ingressValues.ingressClassName }} + {{- end }} + {{- end }} + rules: + - host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} + http: + paths: + {{- range $p := $ingressValues.paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }} + tls: + - hosts: + - {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} + {{- if $ingressValues.tlsSecretPerReplica.enabled }} + secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }} + {{- else }} + secretName: {{ $ingressValues.tlsSecretName }} + {{- end }} + {{- end }} +{{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/persistentvolume.yaml b/charts/kube-prometheus-stack/templates/alertmanager/persistentvolume.yaml new file mode 100755 index 000000000..f3a099a90 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/persistentvolume.yaml @@ -0,0 +1,22 @@ +{{- if .Values.alertmanager.alertmanagerSpec.persistentVolume.enabled }} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + capacity: + storage: {{ .Values.alertmanager.alertmanagerSpec.persistentVolume.size }} + accessModes: + {{- range .Values.alertmanager.alertmanagerSpec.persistentVolume.accessModes }} + - {{ . | quote }} + {{- end }} + persistentVolumeReclaimPolicy: {{ .Values.alertmanager.alertmanagerSpec.persistentVolume.reclaimPolicy }} + hostPath: + path: "{{.Values.alertmanager.alertmanagerSpec.persistentVolume.location}}" + storageClassName: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/alertmanager/podDisruptionBudget.yaml b/charts/kube-prometheus-stack/templates/alertmanager/podDisruptionBudget.yaml new file mode 100644 index 000000000..1dbe809cd --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/podDisruptionBudget.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.podDisruptionBudget.enabled }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + {{- if .Values.alertmanager.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.alertmanager.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.alertmanager.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.alertmanager.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + app: alertmanager + alertmanager: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/psp-role.yaml b/charts/kube-prometheus-stack/templates/alertmanager/psp-role.yaml new file mode 100644 index 000000000..d64d1f813 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/psp-role.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +rules: +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} +- apiGroups: ['policy'] +{{- else }} +- apiGroups: ['extensions'] +{{- end }} + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "kube-prometheus-stack.fullname" . }}-alertmanager +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/psp-rolebinding.yaml b/charts/kube-prometheus-stack/templates/alertmanager/psp-rolebinding.yaml new file mode 100644 index 000000000..9248cc8dd --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/psp-rolebinding.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus-stack.alertmanager.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/psp.yaml b/charts/kube-prometheus-stack/templates/alertmanager/psp.yaml new file mode 100644 index 000000000..6fa445009 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/psp.yaml @@ -0,0 +1,52 @@ +{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{- if .Values.global.rbac.pspAnnotations }} + annotations: +{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} +{{- end }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + privileged: false + # Required to prevent escalations to root. + # allowPrivilegeEscalation: false + # This is redundant with non-root + disallow privilege escalation, + # but we can provide it for defense in depth. + #requiredDropCapabilities: + # - ALL + # Allow core volume types. + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'persistentVolumeClaim' + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + # Permits the container to run with root privileges as well. + rule: 'RunAsAny' + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + readOnlyRootFilesystem: false +{{- end }} + diff --git a/charts/kube-prometheus-stack/templates/alertmanager/secret.yaml b/charts/kube-prometheus-stack/templates/alertmanager/secret.yaml new file mode 100644 index 000000000..43c4e20b2 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/secret.yaml @@ -0,0 +1,23 @@ +{{- if and (.Values.alertmanager.enabled) (not .Values.alertmanager.alertmanagerSpec.useExistingSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- if .Values.alertmanager.secret.annotations }} + annotations: +{{ toYaml .Values.alertmanager.secret.annotations | indent 4 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +data: +{{- if .Values.alertmanager.tplConfig }} + alertmanager.yaml: {{ tpl (toYaml .Values.alertmanager.config) . | b64enc | quote }} +{{- else }} + alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }} +{{- end}} +{{- range $key, $val := .Values.alertmanager.templateFiles }} + {{ $key }}: {{ $val | b64enc | quote }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/service.yaml b/charts/kube-prometheus-stack/templates/alertmanager/service.yaml new file mode 100644 index 000000000..bbcc60f2b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/service.yaml @@ -0,0 +1,50 @@ +{{- if .Values.alertmanager.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager + self-monitor: {{ .Values.alertmanager.serviceMonitor.selfMonitor | quote }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.alertmanager.service.labels }} +{{ toYaml .Values.alertmanager.service.labels | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.service.annotations }} + annotations: +{{ toYaml .Values.alertmanager.service.annotations | indent 4 }} +{{- end }} +spec: +{{- if .Values.alertmanager.service.clusterIP }} + clusterIP: {{ .Values.alertmanager.service.clusterIP }} +{{- end }} +{{- if .Values.alertmanager.service.externalIPs }} + externalIPs: +{{ toYaml .Values.alertmanager.service.externalIPs | indent 4 }} +{{- end }} +{{- if .Values.alertmanager.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.alertmanager.service.loadBalancerIP }} +{{- end }} +{{- if .Values.alertmanager.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $cidr := .Values.alertmanager.service.loadBalancerSourceRanges }} + - {{ $cidr }} + {{- end }} +{{- end }} + ports: + - name: {{ .Values.alertmanager.alertmanagerSpec.portName }} + {{- if eq .Values.alertmanager.service.type "NodePort" }} + nodePort: {{ .Values.alertmanager.service.nodePort }} + {{- end }} + port: {{ .Values.alertmanager.service.port }} + targetPort: {{ .Values.alertmanager.service.targetPort }} + protocol: TCP +{{- if .Values.alertmanager.service.additionalPorts }} +{{ toYaml .Values.alertmanager.service.additionalPorts | indent 2 }} +{{- end }} + selector: + app: alertmanager + alertmanager: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + type: "{{ .Values.alertmanager.service.type }}" +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/serviceaccount.yaml b/charts/kube-prometheus-stack/templates/alertmanager/serviceaccount.yaml new file mode 100644 index 000000000..c5e6e9228 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/serviceaccount.yaml @@ -0,0 +1,16 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus-stack.alertmanager.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.alertmanager.serviceAccount.annotations }} + annotations: +{{ toYaml .Values.alertmanager.serviceAccount.annotations | indent 4 }} +{{- end }} +imagePullSecrets: +{{ toYaml .Values.global.imagePullSecrets | indent 2 }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/alertmanager/servicemonitor.yaml new file mode 100644 index 000000000..a699accb8 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/servicemonitor.yaml @@ -0,0 +1,42 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.selfMonitor }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-alertmanager + release: {{ $.Release.Name | quote }} + self-monitor: "true" + namespaceSelector: + matchNames: + - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} + endpoints: + - port: {{ .Values.alertmanager.alertmanagerSpec.portName }} + {{- if .Values.alertmanager.serviceMonitor.interval }} + interval: {{ .Values.alertmanager.serviceMonitor.interval }} + {{- end }} + {{- if .Values.alertmanager.serviceMonitor.scheme }} + scheme: {{ .Values.alertmanager.serviceMonitor.scheme }} + {{- end }} + {{- if .Values.alertmanager.serviceMonitor.bearerTokenFile }} + bearerTokenFile: {{ .Values.alertmanager.serviceMonitor.bearerTokenFile }} + {{- end }} + {{- if .Values.alertmanager.serviceMonitor.tlsConfig }} + tlsConfig: {{ toYaml .Values.alertmanager.serviceMonitor.tlsConfig | nindent 6 }} + {{- end }} + path: "{{ trimSuffix "/" .Values.alertmanager.alertmanagerSpec.routePrefix }}/metrics" +{{- if .Values.alertmanager.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.alertmanager.serviceMonitor.metricRelabelings | indent 6) . }} +{{- end }} +{{- if .Values.alertmanager.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.alertmanager.serviceMonitor.relabelings | indent 6 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/alertmanager/serviceperreplica.yaml b/charts/kube-prometheus-stack/templates/alertmanager/serviceperreplica.yaml new file mode 100644 index 000000000..0f12ae879 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/alertmanager/serviceperreplica.yaml @@ -0,0 +1,46 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled }} +{{- $count := .Values.alertmanager.alertmanagerSpec.replicas | int -}} +{{- $serviceValues := .Values.alertmanager.servicePerReplica -}} +apiVersion: v1 +kind: List +metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-serviceperreplica + namespace: {{ template "kube-prometheus-stack.namespace" . }} +items: +{{- range $i, $e := until $count }} + - apiVersion: v1 + kind: Service + metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ include "kube-prometheus-stack.name" $ }}-alertmanager +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if $serviceValues.annotations }} + annotations: +{{ toYaml $serviceValues.annotations | indent 8 }} + {{- end }} + spec: + {{- if $serviceValues.clusterIP }} + clusterIP: {{ $serviceValues.clusterIP }} + {{- end }} + {{- if $serviceValues.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $cidr := $serviceValues.loadBalancerSourceRanges }} + - {{ $cidr }} + {{- end }} + {{- end }} + ports: + - name: {{ $.Values.alertmanager.alertmanagerSpec.portName }} + {{- if eq $serviceValues.type "NodePort" }} + nodePort: {{ $serviceValues.nodePort }} + {{- end }} + port: {{ $serviceValues.port }} + targetPort: {{ $serviceValues.targetPort }} + selector: + app: alertmanager + alertmanager: {{ template "kube-prometheus-stack.fullname" $ }}-alertmanager + statefulset.kubernetes.io/pod-name: alertmanager-{{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} + type: "{{ $serviceValues.type }}" +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/core-dns/service.yaml b/charts/kube-prometheus-stack/templates/exporters/core-dns/service.yaml new file mode 100644 index 000000000..f77db4199 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/core-dns/service.yaml @@ -0,0 +1,24 @@ +{{- if .Values.coreDns.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-coredns + labels: + app: {{ template "kube-prometheus-stack.name" . }}-coredns + jobLabel: coredns +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.coreDns.service.port }} + protocol: TCP + targetPort: {{ .Values.coreDns.service.targetPort }} + selector: + {{- if .Values.coreDns.service.selector }} +{{ toYaml .Values.coreDns.service.selector | indent 4 }} + {{- else}} + k8s-app: kube-dns + {{- end}} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/core-dns/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/core-dns/servicemonitor.yaml new file mode 100644 index 000000000..c398db612 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/core-dns/servicemonitor.yaml @@ -0,0 +1,33 @@ +{{- if .Values.coreDns.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-coredns + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-coredns +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: jobLabel + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-coredns + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - port: http-metrics + {{- if .Values.coreDns.serviceMonitor.interval}} + interval: {{ .Values.coreDns.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- if .Values.coreDns.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.coreDns.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.coreDns.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.coreDns.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-api-server/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-api-server/servicemonitor.yaml new file mode 100644 index 000000000..4c0290e73 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-api-server/servicemonitor.yaml @@ -0,0 +1,36 @@ +{{- if .Values.kubeApiServer.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-apiserver + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-apiserver +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + endpoints: + - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeApiServer.serviceMonitor.interval }} + interval: {{ .Values.kubeApiServer.serviceMonitor.interval }} + {{- end }} + port: https + scheme: https +{{- if .Values.kubeApiServer.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubeApiServer.serviceMonitor.metricRelabelings | indent 6) . }} +{{- end }} +{{- if .Values.kubeApiServer.relabelings }} + relabelings: +{{ toYaml .Values.kubeApiServer.relabelings | indent 6 }} +{{- end }} + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + serverName: {{ .Values.kubeApiServer.tlsConfig.serverName }} + insecureSkipVerify: {{ .Values.kubeApiServer.tlsConfig.insecureSkipVerify }} + jobLabel: {{ .Values.kubeApiServer.serviceMonitor.jobLabel }} + namespaceSelector: + matchNames: + - default + selector: +{{ toYaml .Values.kubeApiServer.serviceMonitor.selector | indent 4 }} +{{- end}} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/endpoints.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/endpoints.yaml new file mode 100644 index 000000000..413193028 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/endpoints.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager + k8s-app: kube-controller-manager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +subsets: + - addresses: + {{- range .Values.kubeControllerManager.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeControllerManager.service.port }} + protocol: TCP +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/service.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/service.yaml new file mode 100644 index 000000000..8b5556a89 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/service.yaml @@ -0,0 +1,27 @@ +{{- if .Values.kubeControllerManager.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager + jobLabel: kube-controller-manager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeControllerManager.service.port }} + protocol: TCP + targetPort: {{ .Values.kubeControllerManager.service.targetPort }} +{{- if .Values.kubeControllerManager.endpoints }}{{- else }} + selector: + {{- if .Values.kubeControllerManager.service.selector }} +{{ toYaml .Values.kubeControllerManager.service.selector | indent 4 }} + {{- else}} + component: kube-controller-manager + {{- end}} +{{- end }} + type: ClusterIP +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/servicemonitor.yaml new file mode 100644 index 000000000..2f30a0cc2 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-controller-manager/servicemonitor.yaml @@ -0,0 +1,44 @@ +{{- if .Values.kubeControllerManager.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: jobLabel + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - port: http-metrics + {{- if .Values.kubeControllerManager.serviceMonitor.interval }} + interval: {{ .Values.kubeControllerManager.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeControllerManager.serviceMonitor.https }} + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + {{- if .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify }} + insecureSkipVerify: {{ .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify }} + {{- end }} + {{- if .Values.kubeControllerManager.serviceMonitor.serverName }} + serverName: {{ .Values.kubeControllerManager.serviceMonitor.serverName }} + {{- end }} + {{- end }} +{{- if .Values.kubeControllerManager.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubeControllerManager.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubeControllerManager.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-dns/service.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-dns/service.yaml new file mode 100644 index 000000000..c7bf142d5 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-dns/service.yaml @@ -0,0 +1,28 @@ +{{- if .Values.kubeDns.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-dns + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-dns + jobLabel: kube-dns +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics-dnsmasq + port: {{ .Values.kubeDns.service.dnsmasq.port }} + protocol: TCP + targetPort: {{ .Values.kubeDns.service.dnsmasq.targetPort }} + - name: http-metrics-skydns + port: {{ .Values.kubeDns.service.skydns.port }} + protocol: TCP + targetPort: {{ .Values.kubeDns.service.skydns.targetPort }} + selector: + {{- if .Values.kubeDns.service.selector }} +{{ toYaml .Values.kubeDns.service.selector | indent 4 }} + {{- else}} + k8s-app: kube-dns + {{- end}} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-dns/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-dns/servicemonitor.yaml new file mode 100644 index 000000000..3c1a06175 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-dns/servicemonitor.yaml @@ -0,0 +1,46 @@ +{{- if .Values.kubeDns.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-dns + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-dns +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: jobLabel + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-dns + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - port: http-metrics-dnsmasq + {{- if .Values.kubeDns.serviceMonitor.interval }} + interval: {{ .Values.kubeDns.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- if .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubeDns.serviceMonitor.dnsmasqRelabelings }} + relabelings: +{{ toYaml .Values.kubeDns.serviceMonitor.dnsmasqRelabelings | indent 4 }} +{{- end }} + - port: http-metrics-skydns + {{- if .Values.kubeDns.serviceMonitor.interval }} + interval: {{ .Values.kubeDns.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- if .Values.kubeDns.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubeDns.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubeDns.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubeDns.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-etcd/endpoints.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-etcd/endpoints.yaml new file mode 100644 index 000000000..8f07a5cc2 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-etcd/endpoints.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd + k8s-app: etcd-server +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +subsets: + - addresses: + {{- range .Values.kubeEtcd.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeEtcd.service.port }} + protocol: TCP +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-etcd/service.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-etcd/service.yaml new file mode 100644 index 000000000..957e8bbc1 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-etcd/service.yaml @@ -0,0 +1,27 @@ +{{- if .Values.kubeEtcd.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd + jobLabel: kube-etcd +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeEtcd.service.port }} + protocol: TCP + targetPort: {{ .Values.kubeEtcd.service.targetPort }} +{{- if .Values.kubeEtcd.endpoints }}{{- else }} + selector: + {{- if .Values.kubeEtcd.service.selector }} +{{ toYaml .Values.kubeEtcd.service.selector | indent 4 }} + {{- else}} + component: etcd + {{- end}} +{{- end }} + type: ClusterIP +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-etcd/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-etcd/servicemonitor.yaml new file mode 100644 index 000000000..17a447ad9 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-etcd/servicemonitor.yaml @@ -0,0 +1,50 @@ +{{- if .Values.kubeEtcd.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: jobLabel + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - port: http-metrics + {{- if .Values.kubeEtcd.serviceMonitor.interval }} + interval: {{ .Values.kubeEtcd.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if eq .Values.kubeEtcd.serviceMonitor.scheme "https" }} + scheme: https + tlsConfig: + {{- if .Values.kubeEtcd.serviceMonitor.serverName }} + serverName: {{ .Values.kubeEtcd.serviceMonitor.serverName }} + {{- end }} + {{- if .Values.kubeEtcd.serviceMonitor.caFile }} + caFile: {{ .Values.kubeEtcd.serviceMonitor.caFile }} + {{- end }} + {{- if .Values.kubeEtcd.serviceMonitor.certFile }} + certFile: {{ .Values.kubeEtcd.serviceMonitor.certFile }} + {{- end }} + {{- if .Values.kubeEtcd.serviceMonitor.keyFile }} + keyFile: {{ .Values.kubeEtcd.serviceMonitor.keyFile }} + {{- end}} + insecureSkipVerify: {{ .Values.kubeEtcd.serviceMonitor.insecureSkipVerify }} + {{- end }} +{{- if .Values.kubeEtcd.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubeEtcd.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubeEtcd.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-proxy/endpoints.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-proxy/endpoints.yaml new file mode 100644 index 000000000..2cb756d15 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-proxy/endpoints.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy + k8s-app: kube-proxy +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +subsets: + - addresses: + {{- range .Values.kubeProxy.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeProxy.service.port }} + protocol: TCP +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-proxy/service.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-proxy/service.yaml new file mode 100644 index 000000000..abe420600 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-proxy/service.yaml @@ -0,0 +1,27 @@ +{{- if .Values.kubeProxy.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy + jobLabel: kube-proxy +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeProxy.service.port }} + protocol: TCP + targetPort: {{ .Values.kubeProxy.service.targetPort }} +{{- if .Values.kubeProxy.endpoints }}{{- else }} + selector: + {{- if .Values.kubeProxy.service.selector }} +{{ toYaml .Values.kubeProxy.service.selector | indent 4 }} + {{- else}} + k8s-app: kube-proxy + {{- end}} +{{- end }} + type: ClusterIP +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-proxy/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-proxy/servicemonitor.yaml new file mode 100644 index 000000000..0ac44182b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-proxy/servicemonitor.yaml @@ -0,0 +1,38 @@ +{{- if .Values.kubeProxy.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: jobLabel + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - port: http-metrics + {{- if .Values.kubeProxy.serviceMonitor.interval }} + interval: {{ .Values.kubeProxy.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeProxy.serviceMonitor.https }} + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + {{- end}} +{{- if .Values.kubeProxy.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ toYaml .Values.kubeProxy.serviceMonitor.metricRelabelings | indent 4 }} +{{- end }} +{{- if .Values.kubeProxy.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubeProxy.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/endpoints.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/endpoints.yaml new file mode 100644 index 000000000..f4ad60fd6 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/endpoints.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler + k8s-app: kube-scheduler +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +subsets: + - addresses: + {{- range .Values.kubeScheduler.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeScheduler.service.port }} + protocol: TCP +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/service.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/service.yaml new file mode 100644 index 000000000..15559d45a --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/service.yaml @@ -0,0 +1,27 @@ +{{- if .Values.kubeScheduler.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler + jobLabel: kube-scheduler +{{ include "kube-prometheus-stack.labels" . | indent 4 }} + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeScheduler.service.port}} + protocol: TCP + targetPort: {{ .Values.kubeScheduler.service.targetPort}} +{{- if .Values.kubeScheduler.endpoints }}{{- else }} + selector: + {{- if .Values.kubeScheduler.service.selector }} +{{ toYaml .Values.kubeScheduler.service.selector | indent 4 }} + {{- else}} + component: kube-scheduler + {{- end}} +{{- end }} + type: ClusterIP +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/servicemonitor.yaml new file mode 100644 index 000000000..b565ec2b8 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kube-scheduler/servicemonitor.yaml @@ -0,0 +1,44 @@ +{{- if .Values.kubeScheduler.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: jobLabel + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - port: http-metrics + {{- if .Values.kubeScheduler.serviceMonitor.interval }} + interval: {{ .Values.kubeScheduler.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeScheduler.serviceMonitor.https }} + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + {{- if .Values.kubeScheduler.serviceMonitor.insecureSkipVerify }} + insecureSkipVerify: {{ .Values.kubeScheduler.serviceMonitor.insecureSkipVerify }} + {{- end}} + {{- if .Values.kubeScheduler.serviceMonitor.serverName }} + serverName: {{ .Values.kubeScheduler.serviceMonitor.serverName }} + {{- end}} + {{- end}} +{{- if .Values.kubeScheduler.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubeScheduler.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubeScheduler.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/exporters/kubelet/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/kubelet/servicemonitor.yaml new file mode 100644 index 000000000..364593274 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/kubelet/servicemonitor.yaml @@ -0,0 +1,151 @@ +{{- if .Values.kubelet.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-kubelet + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-kubelet +{{- include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + endpoints: + {{- if .Values.kubelet.serviceMonitor.https }} + - port: https-metrics + scheme: https + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + honorLabels: true +{{- if .Values.kubelet.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.cAdvisor }} + - port: https-metrics + scheme: https + path: /metrics/cadvisor + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} + {{- end }} + honorLabels: true + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4 }} +{{- end }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.probes }} + - port: https-metrics + scheme: https + path: /metrics/probes + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + honorLabels: true + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- if .Values.kubelet.serviceMonitor.probesMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.probesRelabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.probesRelabelings | indent 4 }} +{{- end }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.resource }} + - port: https-metrics + scheme: https + path: {{ .Values.kubelet.serviceMonitor.resourcePath }} + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + honorLabels: true + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token +{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4 }} +{{- end }} +{{- end }} + {{- else }} + - port: http-metrics + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + honorLabels: true +{{- if .Values.kubelet.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.cAdvisor }} + - port: http-metrics + path: /metrics/cadvisor + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + honorLabels: true +{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4 }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.resource }} + - port: http-metrics + path: {{ .Values.kubelet.serviceMonitor.resourcePath }} + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + honorLabels: true +{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }} + relabelings: +{{ toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4 }} +{{- end }} +{{- end }} +{{- end }} + {{- end }} + jobLabel: k8s-app + namespaceSelector: + matchNames: + - {{ .Values.kubelet.namespace }} + selector: + matchLabels: + k8s-app: kubelet +{{- end}} diff --git a/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml new file mode 100644 index 000000000..e33c0af7b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/exporters/node-exporter/servicemonitor.yaml @@ -0,0 +1,32 @@ +{{- if .Values.nodeExporter.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-node-exporter + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-node-exporter +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + jobLabel: {{ .Values.nodeExporter.jobLabel }} + selector: + matchLabels: + app: node-exporter + release: {{ $.Release.Name }} + endpoints: + - port: metrics + {{- if .Values.nodeExporter.serviceMonitor.interval }} + interval: {{ .Values.nodeExporter.serviceMonitor.interval }} + {{- end }} + {{- if .Values.nodeExporter.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.nodeExporter.serviceMonitor.scrapeTimeout }} + {{- end }} +{{- if .Values.nodeExporter.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.nodeExporter.serviceMonitor.metricRelabelings | indent 4) . }} +{{- end }} +{{- if .Values.nodeExporter.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.nodeExporter.serviceMonitor.relabelings | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml new file mode 100644 index 000000000..249af770a --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml @@ -0,0 +1,33 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +rules: + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + - mutatingwebhookconfigurations + verbs: + - get + - update +{{- if .Values.global.rbac.pspEnabled }} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} + - apiGroups: ['policy'] +{{- else }} + - apiGroups: ['extensions'] +{{- end }} + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "kube-prometheus-stack.fullname" . }}-admission +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml new file mode 100644 index 000000000..31fd2def0 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus-stack.fullname" . }}-admission +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml new file mode 100644 index 000000000..f8afcb854 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml @@ -0,0 +1,65 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission-create + namespace: {{ template "kube-prometheus-stack.namespace" . }} + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission-create +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +spec: + {{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }} + # Alpha feature since k8s 1.12 + ttlSecondsAfterFinished: 0 + {{- end }} + template: + metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission-create +{{- with .Values.prometheusOperator.admissionWebhooks.patch.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission-create +{{- include "kube-prometheus-stack.labels" $ | indent 8 }} + spec: + {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} + priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} + {{- end }} + containers: + - name: create + {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} + image: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} + {{- else }} + image: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }} + {{- end }} + imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }} + args: + - create + - --host={{ template "kube-prometheus-stack.operator.fullname" . }},{{ template "kube-prometheus-stack.operator.fullname" . }}.{{ template "kube-prometheus-stack.namespace" . }}.svc + - --namespace={{ template "kube-prometheus-stack.namespace" . }} + - --secret-name={{ template "kube-prometheus-stack.fullname" . }}-admission + resources: +{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.resources | indent 12 }} + restartPolicy: OnFailure + serviceAccountName: {{ template "kube-prometheus-stack.fullname" . }}-admission + {{- with .Values.prometheusOperator.admissionWebhooks.patch.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.prometheusOperator.admissionWebhooks.patch.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.prometheusOperator.admissionWebhooks.patch.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 2000 +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml new file mode 100644 index 000000000..b2d8912f8 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml @@ -0,0 +1,66 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission-patch + namespace: {{ template "kube-prometheus-stack.namespace" . }} + annotations: + "helm.sh/hook": post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +spec: + {{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }} + # Alpha feature since k8s 1.12 + ttlSecondsAfterFinished: 0 + {{- end }} + template: + metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission-patch +{{- with .Values.prometheusOperator.admissionWebhooks.patch.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch +{{- include "kube-prometheus-stack.labels" $ | indent 8 }} + spec: + {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} + priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} + {{- end }} + containers: + - name: patch + {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} + image: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} + {{- else }} + image: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }} + {{- end }} + imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }} + args: + - patch + - --webhook-name={{ template "kube-prometheus-stack.fullname" . }}-admission + - --namespace={{ template "kube-prometheus-stack.namespace" . }} + - --secret-name={{ template "kube-prometheus-stack.fullname" . }}-admission + - --patch-failure-policy={{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} + resources: +{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.resources | indent 12 }} + restartPolicy: OnFailure + serviceAccountName: {{ template "kube-prometheus-stack.fullname" . }}-admission + {{- with .Values.prometheusOperator.admissionWebhooks.patch.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.prometheusOperator.admissionWebhooks.patch.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.prometheusOperator.admissionWebhooks.patch.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 2000 +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml new file mode 100644 index 000000000..5834c483c --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml @@ -0,0 +1,54 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" . }}-admission +{{- if .Values.global.rbac.pspAnnotations }} + annotations: +{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} +{{- end }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + privileged: false + # Required to prevent escalations to root. + # allowPrivilegeEscalation: false + # This is redundant with non-root + disallow privilege escalation, + # but we can provide it for defense in depth. + #requiredDropCapabilities: + # - ALL + # Allow core volume types. + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'persistentVolumeClaim' + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + # Permits the container to run with root privileges as well. + rule: 'RunAsAny' + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + readOnlyRootFilesystem: false +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml new file mode 100644 index 000000000..d229f76ef --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + namespace: {{ template "kube-prometheus-stack.namespace" . }} + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - create +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml new file mode 100644 index 000000000..f4b1fbf0e --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + namespace: {{ template "kube-prometheus-stack.namespace" . }} + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "kube-prometheus-stack.fullname" . }}-admission +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml new file mode 100644 index 000000000..2048f049c --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml @@ -0,0 +1,15 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + namespace: {{ template "kube-prometheus-stack.namespace" . }} + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +imagePullSecrets: +{{ toYaml .Values.global.imagePullSecrets | indent 2 }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml new file mode 100644 index 000000000..b67df54bf --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml @@ -0,0 +1,41 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled }} +apiVersion: admissionregistration.k8s.io/v1 +kind: MutatingWebhookConfiguration +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission +{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }} + annotations: + certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} + cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +webhooks: + - name: prometheusrulemutate.monitoring.coreos.com + {{- if .Values.prometheusOperator.admissionWebhooks.patch.enabled }} + failurePolicy: Ignore + {{- else }} + failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} + {{- end }} + rules: + - apiGroups: + - monitoring.coreos.com + apiVersions: + - "*" + resources: + - prometheusrules + operations: + - CREATE + - UPDATE + clientConfig: + service: + namespace: {{ template "kube-prometheus-stack.namespace" . }} + name: {{ template "kube-prometheus-stack.operator.fullname" $ }} + path: /admission-prometheusrules/mutate + {{- if and .Values.prometheusOperator.admissionWebhooks.caBundle (not .Values.prometheusOperator.admissionWebhooks.patch.enabled) (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} + caBundle: {{ .Values.prometheusOperator.admissionWebhooks.caBundle }} + {{- end }} + admissionReviewVersions: ["v1", "v1beta1"] + sideEffects: None +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml new file mode 100644 index 000000000..249488e41 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml @@ -0,0 +1,41 @@ +{{- if and .Values.prometheusOperator.admissionWebhooks.enabled }} +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingWebhookConfiguration +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission +{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }} + annotations: + certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} + cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-admission +{{- include "kube-prometheus-stack.labels" $ | indent 4 }} +webhooks: + - name: prometheusrulemutate.monitoring.coreos.com + {{- if .Values.prometheusOperator.admissionWebhooks.patch.enabled }} + failurePolicy: Ignore + {{- else }} + failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} + {{- end }} + rules: + - apiGroups: + - monitoring.coreos.com + apiVersions: + - "*" + resources: + - prometheusrules + operations: + - CREATE + - UPDATE + clientConfig: + service: + namespace: {{ template "kube-prometheus-stack.namespace" . }} + name: {{ template "kube-prometheus-stack.operator.fullname" $ }} + path: /admission-prometheusrules/validate + {{- if and .Values.prometheusOperator.admissionWebhooks.caBundle (not .Values.prometheusOperator.admissionWebhooks.patch.enabled) (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} + caBundle: {{ .Values.prometheusOperator.admissionWebhooks.caBundle }} + {{- end }} + admissionReviewVersions: ["v1", "v1beta1"] + sideEffects: None +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/certmanager.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/certmanager.yaml new file mode 100644 index 000000000..090e6a5bb --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/certmanager.yaml @@ -0,0 +1,57 @@ +{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled -}} +{{- if not .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef -}} +# Create a selfsigned Issuer, in order to create a root CA certificate for +# signing webhook serving certificates +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-self-signed-issuer + namespace: {{ template "kube-prometheus-stack.namespace" . }} +spec: + selfSigned: {} +--- +# Generate a CA Certificate used to sign certificates for the webhook +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-root-cert + namespace: {{ template "kube-prometheus-stack.namespace" . }} +spec: + secretName: {{ template "kube-prometheus-stack.fullname" . }}-root-cert + duration: 43800h # 5y + issuerRef: + name: {{ template "kube-prometheus-stack.fullname" . }}-self-signed-issuer + commonName: "ca.webhook.kube-prometheus-stack" + isCA: true +--- +# Create an Issuer that uses the above generated CA certificate to issue certs +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-root-issuer + namespace: {{ template "kube-prometheus-stack.namespace" . }} +spec: + ca: + secretName: {{ template "kube-prometheus-stack.fullname" . }}-root-cert +{{- end }} +--- +# generate a serving certificate for the apiservices to use +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + namespace: {{ template "kube-prometheus-stack.namespace" . }} +spec: + secretName: {{ template "kube-prometheus-stack.fullname" . }}-admission + duration: 8760h # 1y + issuerRef: + {{- if .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef }} + {{- toYaml .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef | nindent 4 }} + {{- else }} + name: {{ template "kube-prometheus-stack.fullname" . }}-root-issuer + {{- end }} + dnsNames: + - {{ template "kube-prometheus-stack.operator.fullname" . }} + - {{ template "kube-prometheus-stack.operator.fullname" . }}.{{ template "kube-prometheus-stack.namespace" . }} + - {{ template "kube-prometheus-stack.operator.fullname" . }}.{{ template "kube-prometheus-stack.namespace" . }}.svc +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrole.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrole.yaml new file mode 100644 index 000000000..e5568534c --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrole.yaml @@ -0,0 +1,80 @@ +{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +rules: +- apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - alertmanagers/finalizers + - alertmanagerconfigs + - prometheuses + - prometheuses/finalizers + - thanosrulers + - thanosrulers/finalizers + - servicemonitors + - podmonitors + - probes + - prometheusrules + verbs: + - '*' +- apiGroups: + - apps + resources: + - statefulsets + verbs: + - '*' +- apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + verbs: + - list + - delete +- apiGroups: + - "" + resources: + - services + - services/finalizers + - endpoints + verbs: + - get + - create + - update + - delete +- apiGroups: + - "" + resources: + - nodes + verbs: + - list + - watch +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch +- apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrolebinding.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrolebinding.yaml new file mode 100644 index 000000000..c9ab0ab87 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/clusterrolebinding.yaml @@ -0,0 +1,17 @@ +{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus-stack.fullname" . }}-operator +subjects: +- kind: ServiceAccount + name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/deployment.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/deployment.yaml new file mode 100644 index 000000000..c0139fece --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/deployment.yaml @@ -0,0 +1,132 @@ +{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} +{{- if .Values.prometheusOperator.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-operator + release: {{ $.Release.Name | quote }} + template: + metadata: + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 8 }} +{{- if .Values.prometheusOperator.podLabels }} +{{ toYaml .Values.prometheusOperator.podLabels | indent 8 }} +{{- end }} +{{- if .Values.prometheusOperator.podAnnotations }} + annotations: +{{ toYaml .Values.prometheusOperator.podAnnotations | indent 8 }} +{{- end }} + spec: + {{- if .Values.prometheusOperator.priorityClassName }} + priorityClassName: {{ .Values.prometheusOperator.priorityClassName }} + {{- end }} + containers: + - name: {{ template "kube-prometheus-stack.name" . }} + {{- if .Values.prometheusOperator.image.sha }} + image: "{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag }}@sha256:{{ .Values.prometheusOperator.image.sha }}" + {{- else }} + image: "{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag }}" + {{- end }} + imagePullPolicy: "{{ .Values.prometheusOperator.image.pullPolicy }}" + args: + {{- if .Values.prometheusOperator.kubeletService.enabled }} + - --kubelet-service={{ .Values.prometheusOperator.kubeletService.namespace }}/{{ template "kube-prometheus-stack.fullname" . }}-kubelet + {{- end }} + {{- if .Values.prometheusOperator.logFormat }} + - --log-format={{ .Values.prometheusOperator.logFormat }} + {{- end }} + {{- if .Values.prometheusOperator.logLevel }} + - --log-level={{ .Values.prometheusOperator.logLevel }} + {{- end }} + {{- if .Values.prometheusOperator.denyNamespaces }} + - --deny-namespaces={{ .Values.prometheusOperator.denyNamespaces | join "," }} + {{- end }} + {{- with $.Values.prometheusOperator.namespaces }} + {{ $ns := .additional }} + {{- if .releaseNamespace }} + {{- $ns = append $ns $namespace }} + {{- end }} + - --namespaces={{ $ns | join "," }} + {{- end }} + - --localhost=127.0.0.1 + {{- if .Values.prometheusOperator.prometheusConfigReloaderImage.sha }} + - --prometheus-config-reloader={{ .Values.prometheusOperator.prometheusConfigReloaderImage.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.tag }}@sha256:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.sha }} + {{- else }} + - --prometheus-config-reloader={{ .Values.prometheusOperator.prometheusConfigReloaderImage.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.tag }} + {{- end }} + - --config-reloader-cpu={{ .Values.prometheusOperator.configReloaderCpu }} + - --config-reloader-memory={{ .Values.prometheusOperator.configReloaderMemory }} + {{- if .Values.prometheusOperator.alertmanagerInstanceNamespaces }} + - --alertmanager-instance-namespaces={{ .Values.prometheusOperator.alertmanagerInstanceNamespaces | join "," }} + {{- end }} + {{- if .Values.prometheusOperator.prometheusInstanceNamespaces }} + - --prometheus-instance-namespaces={{ .Values.prometheusOperator.prometheusInstanceNamespaces | join "," }} + {{- end }} + {{- if .Values.prometheusOperator.thanosRulerInstanceNamespaces }} + - --thanos-ruler-instance-namespaces={{ .Values.prometheusOperator.thanosRulerInstanceNamespaces | join "," }} + {{- end }} + {{- if .Values.prometheusOperator.secretFieldSelector }} + - --secret-field-selector={{ .Values.prometheusOperator.secretFieldSelector }} + {{- end }} + {{- if .Values.prometheusOperator.tls.enabled }} + - --web.enable-tls=true + - --web.cert-file=/cert/{{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}tls.crt{{ else }}cert{{ end }} + - --web.key-file=/cert/{{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}tls.key{{ else }}key{{ end }} + - --web.listen-address=:8443 + - --web.tls-min-version={{ .Values.prometheusOperator.tls.tlsMinVersion }} + ports: + - containerPort: 8443 + name: https + {{- else }} + ports: + - containerPort: 8080 + name: http + {{- end }} + resources: +{{ toYaml .Values.prometheusOperator.resources | indent 12 }} + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true +{{- if .Values.prometheusOperator.tls.enabled }} + volumeMounts: + - name: tls-secret + mountPath: /cert + readOnly: true + volumes: + - name: tls-secret + secret: + defaultMode: 420 + secretName: {{ template "kube-prometheus-stack.fullname" . }}-admission +{{- end }} +{{- if .Values.prometheusOperator.securityContext }} + securityContext: +{{ toYaml .Values.prometheusOperator.securityContext | indent 8 }} +{{- end }} + serviceAccountName: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} +{{- if .Values.prometheusOperator.hostNetwork }} + hostNetwork: true + dnsPolicy: ClusterFirstWithHostNet +{{- end }} + {{- with .Values.prometheusOperator.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.prometheusOperator.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.prometheusOperator.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrole.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrole.yaml new file mode 100644 index 000000000..d667d6275 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrole.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator-psp + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +rules: +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} +- apiGroups: ['policy'] +{{- else }} +- apiGroups: ['extensions'] +{{- end }} + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "kube-prometheus-stack.fullname" . }}-operator +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrolebinding.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrolebinding.yaml new file mode 100644 index 000000000..c538cd173 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/psp-clusterrolebinding.yaml @@ -0,0 +1,17 @@ +{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator-psp + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus-stack.fullname" . }}-operator-psp +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/psp.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/psp.yaml new file mode 100644 index 000000000..18d1d37df --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/psp.yaml @@ -0,0 +1,51 @@ +{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{- if .Values.global.rbac.pspAnnotations }} + annotations: +{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} +{{- end }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + privileged: false + # Required to prevent escalations to root. + # allowPrivilegeEscalation: false + # This is redundant with non-root + disallow privilege escalation, + # but we can provide it for defense in depth. + #requiredDropCapabilities: + # - ALL + # Allow core volume types. + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'persistentVolumeClaim' + hostNetwork: {{ .Values.prometheusOperator.hostNetwork }} + hostIPC: false + hostPID: false + runAsUser: + # Permits the container to run with root privileges as well. + rule: 'RunAsAny' + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + readOnlyRootFilesystem: false +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/service.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/service.yaml new file mode 100644 index 000000000..8ccb2bb2d --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/service.yaml @@ -0,0 +1,55 @@ +{{- if .Values.prometheusOperator.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheusOperator.service.labels }} +{{ toYaml .Values.prometheusOperator.service.labels | indent 4 }} +{{- end }} +{{- if .Values.prometheusOperator.service.annotations }} + annotations: +{{ toYaml .Values.prometheusOperator.service.annotations | indent 4 }} +{{- end }} +spec: +{{- if .Values.prometheusOperator.service.clusterIP }} + clusterIP: {{ .Values.prometheusOperator.service.clusterIP }} +{{- end }} +{{- if .Values.prometheusOperator.service.externalIPs }} + externalIPs: +{{ toYaml .Values.prometheusOperator.service.externalIPs | indent 4 }} +{{- end }} +{{- if .Values.prometheusOperator.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.prometheusOperator.service.loadBalancerIP }} +{{- end }} +{{- if .Values.prometheusOperator.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $cidr := .Values.prometheusOperator.service.loadBalancerSourceRanges }} + - {{ $cidr }} + {{- end }} +{{- end }} + ports: + {{- if not .Values.prometheusOperator.tls.enabled }} + - name: http + {{- if eq .Values.prometheusOperator.service.type "NodePort" }} + nodePort: {{ .Values.prometheusOperator.service.nodePort }} + {{- end }} + port: 8080 + targetPort: http + {{- end }} + {{- if .Values.prometheusOperator.tls.enabled }} + - name: https + {{- if eq .Values.prometheusOperator.service.type "NodePort"}} + nodePort: {{ .Values.prometheusOperator.service.nodePortTls }} + {{- end }} + port: 443 + targetPort: https + {{- end }} + selector: + app: {{ template "kube-prometheus-stack.name" . }}-operator + release: {{ $.Release.Name | quote }} + type: "{{ .Values.prometheusOperator.service.type }}" +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/serviceaccount.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/serviceaccount.yaml new file mode 100644 index 000000000..ab41797e3 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +imagePullSecrets: +{{ toYaml .Values.global.imagePullSecrets | indent 2 }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus-operator/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/prometheus-operator/servicemonitor.yaml new file mode 100644 index 000000000..b7bd952bb --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus-operator/servicemonitor.yaml @@ -0,0 +1,44 @@ +{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceMonitor.selfMonitor }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-operator + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-operator +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + endpoints: + {{- if .Values.prometheusOperator.tls.enabled }} + - port: https + scheme: https + tlsConfig: + serverName: {{ template "kube-prometheus-stack.operator.fullname" . }} + ca: + secret: + name: {{ template "kube-prometheus-stack.fullname" . }}-admission + key: {{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}ca.crt{{ else }}ca{{ end }} + optional: false + {{- else }} + - port: http + {{- end }} + honorLabels: true + {{- if .Values.prometheusOperator.serviceMonitor.interval }} + interval: {{ .Values.prometheusOperator.serviceMonitor.interval }} + {{- end }} +{{- if .Values.prometheusOperator.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.prometheusOperator.serviceMonitor.metricRelabelings | indent 6) . }} +{{- end }} +{{- if .Values.prometheusOperator.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.prometheusOperator.serviceMonitor.relabelings | indent 6 }} +{{- end }} + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-operator + release: {{ $.Release.Name | quote }} + namespaceSelector: + matchNames: + - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/additionalAlertRelabelConfigs.yaml b/charts/kube-prometheus-stack/templates/prometheus/additionalAlertRelabelConfigs.yaml new file mode 100644 index 000000000..bff930981 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/additionalAlertRelabelConfigs.yaml @@ -0,0 +1,16 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-relabel-confg + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }} + annotations: +{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus-am-relabel-confg +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +data: + additional-alert-relabel-configs.yaml: {{ toYaml .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs | b64enc | quote }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/additionalAlertmanagerConfigs.yaml b/charts/kube-prometheus-stack/templates/prometheus/additionalAlertmanagerConfigs.yaml new file mode 100644 index 000000000..8aebc96c3 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/additionalAlertmanagerConfigs.yaml @@ -0,0 +1,16 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-confg + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }} + annotations: +{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus-am-confg +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +data: + additional-alertmanager-configs.yaml: {{ toYaml .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs | b64enc | quote }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/additionalPrometheusRules.yaml b/charts/kube-prometheus-stack/templates/prometheus/additionalPrometheusRules.yaml new file mode 100644 index 000000000..794e9ad27 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/additionalPrometheusRules.yaml @@ -0,0 +1,40 @@ +{{- if or .Values.additionalPrometheusRules .Values.additionalPrometheusRulesMap}} +apiVersion: v1 +kind: List +items: +{{- if .Values.additionalPrometheusRulesMap }} +{{- range $prometheusRuleName, $prometheusRule := .Values.additionalPrometheusRulesMap }} + - apiVersion: monitoring.coreos.com/v1 + kind: PrometheusRule + metadata: + name: {{ template "kube-prometheus-stack.name" $ }}-{{ $prometheusRuleName }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }} +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if $prometheusRule.additionalLabels }} +{{ toYaml $prometheusRule.additionalLabels | indent 8 }} + {{- end }} + spec: + groups: +{{ toYaml $prometheusRule.groups| indent 8 }} +{{- end }} +{{- else }} +{{- range .Values.additionalPrometheusRules }} + - apiVersion: monitoring.coreos.com/v1 + kind: PrometheusRule + metadata: + name: {{ template "kube-prometheus-stack.name" $ }}-{{ .name }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }} +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if .additionalLabels }} +{{ toYaml .additionalLabels | indent 8 }} + {{- end }} + spec: + groups: +{{ toYaml .groups| indent 8 }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/additionalScrapeConfigs.yaml b/charts/kube-prometheus-stack/templates/prometheus/additionalScrapeConfigs.yaml new file mode 100644 index 000000000..21d9429d8 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/additionalScrapeConfigs.yaml @@ -0,0 +1,16 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalScrapeConfigs }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-scrape-confg + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }} + annotations: +{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }} +{{- end }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus-scrape-confg +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +data: + additional-scrape-configs.yaml: {{ tpl (toYaml .Values.prometheus.prometheusSpec.additionalScrapeConfigs) $ | b64enc | quote }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/clusterrole.yaml b/charts/kube-prometheus-stack/templates/prometheus/clusterrole.yaml new file mode 100644 index 000000000..3585b5db1 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/clusterrole.yaml @@ -0,0 +1,30 @@ +{{- if and .Values.prometheus.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +rules: +# This permission are not in the kube-prometheus repo +# they're grabbed from https://github.com/prometheus/prometheus/blob/master/documentation/examples/rbac-setup.yml +- apiGroups: [""] + resources: + - nodes + - nodes/metrics + - services + - endpoints + - pods + verbs: ["get", "list", "watch"] +- apiGroups: + - "networking.k8s.io" + resources: + - ingresses + verbs: ["get", "list", "watch"] +- nonResourceURLs: ["/metrics", "/metrics/cadvisor"] + verbs: ["get"] +{{- if .Values.prometheus.additionalRulesForClusterRole }} +{{ toYaml .Values.prometheus.additionalRulesForClusterRole | indent 0 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/clusterrolebinding.yaml b/charts/kube-prometheus-stack/templates/prometheus/clusterrolebinding.yaml new file mode 100644 index 000000000..9fc4f65da --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/clusterrolebinding.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.prometheus.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} + diff --git a/charts/kube-prometheus-stack/templates/prometheus/ingress.yaml b/charts/kube-prometheus-stack/templates/prometheus/ingress.yaml new file mode 100644 index 000000000..fece24063 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/ingress.yaml @@ -0,0 +1,58 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.ingress.enabled }} +{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} +{{- $servicePort := .Values.prometheus.service.port -}} +{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }} +{{- $paths := .Values.prometheus.ingress.paths | default $routePrefix -}} +{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} +apiVersion: networking.k8s.io/v1beta1 +{{ else }} +apiVersion: extensions/v1beta1 +{{ end -}} +kind: Ingress +metadata: +{{- if .Values.prometheus.ingress.annotations }} + annotations: +{{ toYaml .Values.prometheus.ingress.annotations | indent 4 }} +{{- end }} + name: {{ $serviceName }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheus.ingress.labels }} +{{ toYaml .Values.prometheus.ingress.labels | indent 4 }} +{{- end }} +spec: + {{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} + {{- if .Values.prometheus.ingress.ingressClassName }} + ingressClassName: {{ .Values.prometheus.ingress.ingressClassName }} + {{- end }} + {{- end }} + rules: + {{- if .Values.prometheus.ingress.hosts }} + {{- range $host := .Values.prometheus.ingress.hosts }} + - host: {{ tpl $host $ }} + http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- else }} + - http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- if .Values.prometheus.ingress.tls }} + tls: +{{ tpl (toYaml .Values.prometheus.ingress.tls | indent 4) . }} + {{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/prometheus/ingressThanosSidecar.yaml b/charts/kube-prometheus-stack/templates/prometheus/ingressThanosSidecar.yaml new file mode 100644 index 000000000..efad4558a --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/ingressThanosSidecar.yaml @@ -0,0 +1,53 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.thanosIngress.enabled }} +{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} +{{- $thanosPort := .Values.prometheus.thanosIngress.servicePort -}} +{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }} +{{- $paths := .Values.prometheus.thanosIngress.paths | default $routePrefix -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: +{{- if .Values.prometheus.thanosIngress.annotations }} + annotations: +{{ toYaml .Values.prometheus.thanosIngress.annotations | indent 4 }} +{{- end }} + name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-gateway + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheus.thanosIngress.labels }} +{{ toYaml .Values.prometheus.thanosIngress.labels | indent 4 }} +{{- end }} +spec: + {{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} + {{- if .Values.prometheus.thanosIngress.ingressClassName }} + ingressClassName: {{ .Values.prometheus.thanosIngress.ingressClassName }} + {{- end }} + {{- end }} + rules: + {{- if .Values.prometheus.thanosIngress.hosts }} + {{- range $host := .Values.prometheus.thanosIngress.hosts }} + - host: {{ tpl $host $ }} + http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $thanosPort }} + {{- end -}} + {{- end -}} + {{- else }} + - http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $thanosPort }} + {{- end -}} + {{- end -}} + {{- if .Values.prometheus.thanosIngress.tls }} + tls: +{{ toYaml .Values.prometheus.thanosIngress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/prometheus/ingressperreplica.yaml b/charts/kube-prometheus-stack/templates/prometheus/ingressperreplica.yaml new file mode 100644 index 000000000..a4dcde524 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/ingressperreplica.yaml @@ -0,0 +1,58 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled .Values.prometheus.ingressPerReplica.enabled }} +{{- $count := .Values.prometheus.prometheusSpec.replicas | int -}} +{{- $servicePort := .Values.prometheus.servicePerReplica.port -}} +{{- $ingressValues := .Values.prometheus.ingressPerReplica -}} +apiVersion: v1 +kind: List +metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-ingressperreplica + namespace: {{ template "kube-prometheus-stack.namespace" $ }} +items: +{{ range $i, $e := until $count }} + - kind: Ingress + {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} + apiVersion: networking.k8s.io/v1beta1 + {{ else }} + apiVersion: extensions/v1beta1 + {{ end -}} + metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ include "kube-prometheus-stack.name" $ }}-prometheus +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if $ingressValues.labels }} +{{ toYaml $ingressValues.labels | indent 8 }} + {{- end }} + {{- if $ingressValues.annotations }} + annotations: +{{ toYaml $ingressValues.annotations | indent 8 }} + {{- end }} + spec: + {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} + {{- if $ingressValues.ingressClassName }} + ingressClassName: {{ $ingressValues.ingressClassName }} + {{- end }} + {{- end }} + rules: + - host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} + http: + paths: + {{- range $p := $ingressValues.paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }} + tls: + - hosts: + - {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} + {{- if $ingressValues.tlsSecretPerReplica.enabled }} + secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }} + {{- else }} + secretName: {{ $ingressValues.tlsSecretName }} + {{- end }} + {{- end }} +{{- end -}} +{{- end -}} diff --git a/charts/kube-prometheus-stack/templates/prometheus/persistentvolume.yaml b/charts/kube-prometheus-stack/templates/prometheus/persistentvolume.yaml new file mode 100755 index 000000000..04a0b3c66 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/persistentvolume.yaml @@ -0,0 +1,22 @@ +{{- if .Values.prometheus.prometheusSpec.persistentVolume.enabled }} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-server + labels: + app: {{ template "kube-prometheus-stack.name" . }}-server + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + capacity: + storage: {{ .Values.prometheus.prometheusSpec.persistentVolume.size }} + accessModes: + {{- range .Values.prometheus.prometheusSpec.persistentVolume.accessModes }} + - {{ . | quote }} + {{- end }} + persistentVolumeReclaimPolicy: {{ .Values.prometheus.prometheusSpec.persistentVolume.reclaimPolicy }} + hostPath: + path: "{{.Values.prometheus.prometheusSpec.persistentVolume.location}}" + storageClassName: {{ template "kube-prometheus-stack.fullname" . }}-server +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/podDisruptionBudget.yaml b/charts/kube-prometheus-stack/templates/prometheus/podDisruptionBudget.yaml new file mode 100644 index 000000000..573317a32 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/podDisruptionBudget.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.podDisruptionBudget.enabled }} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + {{- if .Values.prometheus.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.prometheus.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.prometheus.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.prometheus.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + app: prometheus + prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/podmonitors.yaml b/charts/kube-prometheus-stack/templates/prometheus/podmonitors.yaml new file mode 100644 index 000000000..95d568e13 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/podmonitors.yaml @@ -0,0 +1,37 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPodMonitors }} +apiVersion: v1 +kind: List +items: +{{- range .Values.prometheus.additionalPodMonitors }} + - apiVersion: monitoring.coreos.com/v1 + kind: PodMonitor + metadata: + name: {{ .name }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-prometheus +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if .additionalLabels }} +{{ toYaml .additionalLabels | indent 8 }} + {{- end }} + spec: + podMetricsEndpoints: +{{ toYaml .podMetricsEndpoints | indent 8 }} + {{- if .jobLabel }} + jobLabel: {{ .jobLabel }} + {{- end }} + {{- if .namespaceSelector }} + namespaceSelector: +{{ toYaml .namespaceSelector | indent 8 }} + {{- end }} + selector: +{{ toYaml .selector | indent 8 }} + {{- if .podTargetLabels }} + podTargetLabels: +{{ toYaml .podTargetLabels | indent 8 }} + {{- end }} + {{- if .sampleLimit }} + sampleLimit: {{ .sampleLimit }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/prometheus.yaml b/charts/kube-prometheus-stack/templates/prometheus/prometheus.yaml new file mode 100644 index 000000000..50923d1c7 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/prometheus.yaml @@ -0,0 +1,303 @@ +{{- if .Values.prometheus.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheus.annotations }} + annotations: +{{ toYaml .Values.prometheus.annotations | indent 4 }} +{{- end }} +spec: + alerting: + alertmanagers: +{{- if .Values.prometheus.prometheusSpec.alertingEndpoints }} +{{ toYaml .Values.prometheus.prometheusSpec.alertingEndpoints | indent 6 }} +{{- else if .Values.alertmanager.enabled }} + - namespace: {{ template "kube-prometheus-stack.namespace" . }} + name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager + port: {{ .Values.alertmanager.alertmanagerSpec.portName }} + {{- if .Values.alertmanager.alertmanagerSpec.routePrefix }} + pathPrefix: "{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}" + {{- end }} + apiVersion: {{ .Values.alertmanager.apiVersion }} +{{- else }} + [] +{{- end }} +{{- if .Values.prometheus.prometheusSpec.apiserverConfig }} + apiserverConfig: +{{ toYaml .Values.prometheus.prometheusSpec.apiserverConfig | indent 4}} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.image }} + image: {{ .Values.prometheus.prometheusSpec.image.repository }}:{{ .Values.prometheus.prometheusSpec.image.tag }} + version: {{ .Values.prometheus.prometheusSpec.image.tag }} + {{- if .Values.prometheus.prometheusSpec.image.sha }} + sha: {{ .Values.prometheus.prometheusSpec.image.sha }} + {{- end }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.externalLabels }} + externalLabels: +{{ toYaml .Values.prometheus.prometheusSpec.externalLabels | indent 4}} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.prometheusExternalLabelNameClear }} + prometheusExternalLabelName: "" +{{- else if .Values.prometheus.prometheusSpec.prometheusExternalLabelName }} + prometheusExternalLabelName: "{{ .Values.prometheus.prometheusSpec.prometheusExternalLabelName }}" +{{- end }} +{{- if .Values.prometheus.prometheusSpec.replicaExternalLabelNameClear }} + replicaExternalLabelName: "" +{{- else if .Values.prometheus.prometheusSpec.replicaExternalLabelName }} + replicaExternalLabelName: "{{ .Values.prometheus.prometheusSpec.replicaExternalLabelName }}" +{{- end }} +{{- if .Values.prometheus.prometheusSpec.externalUrl }} + externalUrl: "{{ tpl .Values.prometheus.prometheusSpec.externalUrl . }}" +{{- else if and .Values.prometheus.ingress.enabled .Values.prometheus.ingress.hosts }} + externalUrl: "http://{{ tpl (index .Values.prometheus.ingress.hosts 0) . }}{{ .Values.prometheus.prometheusSpec.routePrefix }}" +{{- else }} + externalUrl: http://{{ template "kube-prometheus-stack.fullname" . }}-prometheus.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.prometheus.service.port }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.nodeSelector }} + nodeSelector: +{{ toYaml .Values.prometheus.prometheusSpec.nodeSelector | indent 4 }} +{{- end }} + paused: {{ .Values.prometheus.prometheusSpec.paused }} + replicas: {{ .Values.prometheus.prometheusSpec.replicas }} + shards: {{ .Values.prometheus.prometheusSpec.shards }} + logLevel: {{ .Values.prometheus.prometheusSpec.logLevel }} + logFormat: {{ .Values.prometheus.prometheusSpec.logFormat }} + listenLocal: {{ .Values.prometheus.prometheusSpec.listenLocal }} + enableAdminAPI: {{ .Values.prometheus.prometheusSpec.enableAdminAPI }} +{{- if .Values.prometheus.prometheusSpec.scrapeInterval }} + scrapeInterval: {{ .Values.prometheus.prometheusSpec.scrapeInterval }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.scrapeTimeout }} + scrapeTimeout: {{ .Values.prometheus.prometheusSpec.scrapeTimeout }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.evaluationInterval }} + evaluationInterval: {{ .Values.prometheus.prometheusSpec.evaluationInterval }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.resources }} + resources: +{{ toYaml .Values.prometheus.prometheusSpec.resources | indent 4 }} +{{- end }} + retention: {{ .Values.prometheus.prometheusSpec.retention | quote }} +{{- if .Values.prometheus.prometheusSpec.retentionSize }} + retentionSize: {{ .Values.prometheus.prometheusSpec.retentionSize | quote }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.walCompression }} + walCompression: {{ .Values.prometheus.prometheusSpec.walCompression }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.routePrefix }} + routePrefix: {{ .Values.prometheus.prometheusSpec.routePrefix | quote }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.secrets }} + secrets: +{{ toYaml .Values.prometheus.prometheusSpec.secrets | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.configMaps }} + configMaps: +{{ toYaml .Values.prometheus.prometheusSpec.configMaps | indent 4 }} +{{- end }} + serviceAccountName: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} +{{- if .Values.prometheus.prometheusSpec.serviceMonitorSelector }} + serviceMonitorSelector: +{{ toYaml .Values.prometheus.prometheusSpec.serviceMonitorSelector | indent 4 }} +{{ else if .Values.prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues }} + serviceMonitorSelector: + matchLabels: + release: {{ $.Release.Name | quote }} +{{ else }} + serviceMonitorSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector }} + serviceMonitorNamespaceSelector: +{{ toYaml .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector | indent 4 }} +{{ else }} + serviceMonitorNamespaceSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.podMonitorSelector }} + podMonitorSelector: +{{ toYaml .Values.prometheus.prometheusSpec.podMonitorSelector | indent 4 }} +{{ else if .Values.prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues }} + podMonitorSelector: + matchLabels: + release: {{ $.Release.Name | quote }} +{{ else }} + podMonitorSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector }} + podMonitorNamespaceSelector: +{{ toYaml .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector | indent 4 }} +{{ else }} + podMonitorNamespaceSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.probeSelector }} + probeSelector: +{{ toYaml .Values.prometheus.prometheusSpec.probeSelector | indent 4 }} +{{ else if .Values.prometheus.prometheusSpec.probeSelectorNilUsesHelmValues }} + probeSelector: + matchLabels: + release: {{ $.Release.Name | quote }} +{{ else }} + probeSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.probeNamespaceSelector }} + probeNamespaceSelector: +{{ toYaml .Values.prometheus.prometheusSpec.probeNamespaceSelector | indent 4 }} +{{ else }} + probeNamespaceSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.remoteRead }} + remoteRead: +{{ toYaml .Values.prometheus.prometheusSpec.remoteRead | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.remoteWrite }} + remoteWrite: +{{ toYaml .Values.prometheus.prometheusSpec.remoteWrite | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.securityContext }} + securityContext: +{{ toYaml .Values.prometheus.prometheusSpec.securityContext | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.ruleNamespaceSelector }} + ruleNamespaceSelector: +{{ toYaml .Values.prometheus.prometheusSpec.ruleNamespaceSelector | indent 4 }} +{{ else }} + ruleNamespaceSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.ruleSelector }} + ruleSelector: +{{ toYaml .Values.prometheus.prometheusSpec.ruleSelector | indent 4}} +{{- else if .Values.prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues }} + ruleSelector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }} + release: {{ $.Release.Name | quote }} +{{ else }} + ruleSelector: {} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.storageSpec }} + storage: +{{ toYaml .Values.prometheus.prometheusSpec.storageSpec | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.podMetadata }} + podMetadata: +{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMetadata | indent 4) . }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.query }} + query: +{{ toYaml .Values.prometheus.prometheusSpec.query | indent 4}} +{{- end }} +{{- if or .Values.prometheus.prometheusSpec.podAntiAffinity .Values.prometheus.prometheusSpec.affinity }} + affinity: +{{- if .Values.prometheus.prometheusSpec.affinity }} +{{ toYaml .Values.prometheus.prometheusSpec.affinity | indent 4 }} +{{- end }} +{{- if eq .Values.prometheus.prometheusSpec.podAntiAffinity "hard" }} + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }} + labelSelector: + matchExpressions: + - {key: app, operator: In, values: [prometheus]} + - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-prometheus]} +{{- else if eq .Values.prometheus.prometheusSpec.podAntiAffinity "soft" }} + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }} + labelSelector: + matchExpressions: + - {key: app, operator: In, values: [prometheus]} + - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-prometheus]} +{{- end }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.tolerations }} + tolerations: +{{ toYaml .Values.prometheus.prometheusSpec.tolerations | indent 4 }} +{{- end }} +{{- if .Values.global.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.global.imagePullSecrets | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.additionalScrapeConfigs }} + additionalScrapeConfigs: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-scrape-confg + key: additional-scrape-configs.yaml +{{- end }} +{{- if .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.enabled }} + additionalScrapeConfigs: + name: {{ .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.name }} + key: {{ .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.key }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }} + additionalAlertManagerConfigs: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-confg + key: additional-alertmanager-configs.yaml +{{- end }} +{{- if .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }} + additionalAlertRelabelConfigs: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-relabel-confg + key: additional-alert-relabel-configs.yaml +{{- end }} +{{- if .Values.prometheus.prometheusSpec.containers }} + containers: +{{ toYaml .Values.prometheus.prometheusSpec.containers | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.initContainers }} + initContainers: +{{ toYaml .Values.prometheus.prometheusSpec.initContainers | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.priorityClassName }} + priorityClassName: {{ .Values.prometheus.prometheusSpec.priorityClassName }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.thanos }} + thanos: +{{ toYaml .Values.prometheus.prometheusSpec.thanos | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.disableCompaction }} + disableCompaction: {{ .Values.prometheus.prometheusSpec.disableCompaction }} +{{- end }} + portName: {{ .Values.prometheus.prometheusSpec.portName }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }} + enforcedNamespaceLabel: {{ .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.volumes }} + volumes: +{{ toYaml .Values.prometheus.prometheusSpec.volumes | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.volumeMounts }} + volumeMounts: +{{ toYaml .Values.prometheus.prometheusSpec.volumeMounts | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.arbitraryFSAccessThroughSMs }} + arbitraryFSAccessThroughSMs: +{{ toYaml .Values.prometheus.prometheusSpec.arbitraryFSAccessThroughSMs | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.overrideHonorLabels }} + overrideHonorLabels: {{ .Values.prometheus.prometheusSpec.overrideHonorLabels }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.overrideHonorTimestamps }} + overrideHonorTimestamps: {{ .Values.prometheus.prometheusSpec.overrideHonorTimestamps }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} + ignoreNamespaceSelectors: {{ .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce }} + prometheusRulesExcludedFromEnforce: +{{ toYaml .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce | indent 4 }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.queryLogFile }} + queryLogFile: {{ .Values.prometheus.prometheusSpec.queryLogFile }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.enforcedSampleLimit }} + enforcedSampleLimit: {{ .Values.prometheus.prometheusSpec.enforcedSampleLimit }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.allowOverlappingBlocks }} + allowOverlappingBlocks: {{ .Values.prometheus.prometheusSpec.allowOverlappingBlocks }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrole.yaml b/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrole.yaml new file mode 100644 index 000000000..a279fb241 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrole.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-psp + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +rules: +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} +- apiGroups: ['policy'] +{{- else }} +- apiGroups: ['extensions'] +{{- end }} + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "kube-prometheus-stack.fullname" . }}-prometheus +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrolebinding.yaml b/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrolebinding.yaml new file mode 100644 index 000000000..27b73b74b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/psp-clusterrolebinding.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-psp + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-psp +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} +{{- end }} + diff --git a/charts/kube-prometheus-stack/templates/prometheus/psp.yaml b/charts/kube-prometheus-stack/templates/prometheus/psp.yaml new file mode 100644 index 000000000..bd2b270d5 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/psp.yaml @@ -0,0 +1,55 @@ +{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{- if .Values.global.rbac.pspAnnotations }} + annotations: +{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} +{{- end }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + privileged: false + # Required to prevent escalations to root. + # allowPrivilegeEscalation: false + # This is redundant with non-root + disallow privilege escalation, + # but we can provide it for defense in depth. + #requiredDropCapabilities: + # - ALL + # Allow core volume types. + volumes: + - 'configMap' + - 'emptyDir' + - 'projected' + - 'secret' + - 'downwardAPI' + - 'persistentVolumeClaim' + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + # Permits the container to run with root privileges as well. + rule: 'RunAsAny' + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: 'RunAsAny' + supplementalGroups: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + fsGroup: + rule: 'MustRunAs' + ranges: + # Forbid adding the root group. + - min: 0 + max: 65535 + readOnlyRootFilesystem: false +{{- if .Values.prometheus.podSecurityPolicy.allowedCapabilities }} + allowedCapabilities: +{{ toYaml .Values.prometheus.podSecurityPolicy.allowedCapabilities | indent 4 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/alertmanager.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/alertmanager.rules.yaml new file mode 100644 index 000000000..387a67715 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/alertmanager.rules.yaml @@ -0,0 +1,70 @@ +{{- /* +Generated from 'alertmanager.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.alertmanager }} +{{- $alertmanagerJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} +{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: alertmanager.rules + rules: + - alert: AlertmanagerConfigInconsistent + annotations: + message: 'The configuration of the instances of the Alertmanager cluster `{{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.service {{`}}`}}` are out of sync. + + {{`{{`}} range printf "alertmanager_config_hash{namespace=\"%s\",service=\"%s\"}" $labels.namespace $labels.service | query {{`}}`}} + + Configuration hash for pod {{`{{`}} .Labels.pod {{`}}`}} is "{{`{{`}} printf "%.f" .Value {{`}}`}}" + + {{`{{`}} end {{`}}`}} + + ' + expr: count by(namespace,service) (count_values by(namespace,service) ("config_hash", alertmanager_config_hash{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"})) != 1 + for: 5m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: AlertmanagerFailedReload + annotations: + message: Reloading Alertmanager's configuration has failed for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}}. + expr: alertmanager_config_last_reload_successful{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} == 0 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: AlertmanagerMembersInconsistent + annotations: + message: Alertmanager has not found all other members of the cluster. + expr: |- + alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} + != on (service) GROUP_LEFT() + count by (service) (alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}) + for: 5m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/etcd.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/etcd.yaml new file mode 100644 index 000000000..b4309510b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/etcd.yaml @@ -0,0 +1,197 @@ +{{- /* +Generated from 'etcd' group from https://raw.githubusercontent.com/etcd-io/etcd/master/Documentation/op-guide/etcd3_alert.rules.yml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeEtcd.enabled .Values.defaultRules.rules.etcd }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "etcd" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: etcd + rules: + - alert: etcdMembersDown + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": members are down ({{`{{`}} $value {{`}}`}}).' + expr: |- + max by (job) ( + sum by (job) (up{job=~".*etcd.*"} == bool 0) + or + count by (job,endpoint) ( + sum by (job,endpoint,To) (rate(etcd_network_peer_sent_failures_total{job=~".*etcd.*"}[3m])) > 0.01 + ) + ) + > 0 + for: 3m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdInsufficientMembers + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": insufficient members ({{`{{`}} $value {{`}}`}}).' + expr: sum(up{job=~".*etcd.*"} == bool 1) by (job) < ((count(up{job=~".*etcd.*"}) by (job) + 1) / 2) + for: 3m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdNoLeader + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member {{`{{`}} $labels.instance {{`}}`}} has no leader.' + expr: etcd_server_has_leader{job=~".*etcd.*"} == 0 + for: 1m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighNumberOfLeaderChanges + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}} leader changes within the last 15 minutes. Frequent elections may be a sign of insufficient resources, high network latency, or disruptions by other components and should be investigated.' + expr: increase((max by (job) (etcd_server_leader_changes_seen_total{job=~".*etcd.*"}) or 0*absent(etcd_server_leader_changes_seen_total{job=~".*etcd.*"}))[15m:1m]) >= 3 + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighNumberOfFailedGRPCRequests + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method) + / + sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method) + > 1 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighNumberOfFailedGRPCRequests + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method) + / + sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method) + > 5 + for: 5m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdGRPCRequestsSlow + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": gRPC requests to {{`{{`}} $labels.grpc_method {{`}}`}} are taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~".*etcd.*", grpc_type="unary"}[5m])) by (job, instance, grpc_service, grpc_method, le)) + > 0.15 + for: 10m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdMemberCommunicationSlow + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member communication with {{`{{`}} $labels.To {{`}}`}} is taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~".*etcd.*"}[5m])) + > 0.15 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighNumberOfFailedProposals + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}} proposal failures within the last 30 minutes on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: rate(etcd_server_proposals_failed_total{job=~".*etcd.*"}[15m]) > 5 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighFsyncDurations + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile fync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~".*etcd.*"}[5m])) + > 0.5 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighCommitDurations + annotations: + message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile commit durations {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket{job=~".*etcd.*"}[5m])) + > 0.25 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighNumberOfFailedHTTPRequests + annotations: + message: '{{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}' + expr: |- + sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) + BY (method) > 0.01 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHighNumberOfFailedHTTPRequests + annotations: + message: '{{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' + expr: |- + sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) + BY (method) > 0.05 + for: 10m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: etcdHTTPRequestsSlow + annotations: + message: etcd instance {{`{{`}} $labels.instance {{`}}`}} HTTP requests to {{`{{`}} $labels.method {{`}}`}} are slow. + expr: |- + histogram_quantile(0.99, rate(etcd_http_successful_duration_seconds_bucket[5m])) + > 0.15 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/general.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/general.rules.yaml new file mode 100644 index 000000000..80771f4f8 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/general.rules.yaml @@ -0,0 +1,56 @@ +{{- /* +Generated from 'general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.general }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "general.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: general.rules + rules: + - alert: TargetDown + annotations: + message: '{{`{{`}} printf "%.4g" $value {{`}}`}}% of the {{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.service {{`}}`}} targets in {{`{{`}} $labels.namespace {{`}}`}} namespace are down.' + expr: 100 * (count(up == 0) BY (job, namespace, service) / count(up) BY (job, namespace, service)) > 10 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: Watchdog + annotations: + message: 'This is an alert meant to ensure that the entire alerting pipeline is functional. + + This alert is always firing, therefore it should always be firing in Alertmanager + + and always fire against a receiver. There are integrations with various notification + + mechanisms that send a notification when this alert is not firing. For example the + + "DeadMansSnitch" integration in PagerDuty. + + ' + expr: vector(1) + labels: + severity: none +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/k8s.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/k8s.rules.yaml new file mode 100644 index 000000000..35e4edebf --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/k8s.rules.yaml @@ -0,0 +1,121 @@ +{{- /* +Generated from 'k8s.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.k8s }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: k8s.rules + rules: + - expr: sum(rate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!="", container!="POD"}[5m])) by (namespace) + record: namespace:container_cpu_usage_seconds_total:sum_rate + - expr: |- + sum by (cluster, namespace, pod, container) ( + rate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!="", container!="POD"}[5m]) + ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) ( + 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=""}) + ) + record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate + - expr: |- + container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} + * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, + max by(namespace, pod, node) (kube_pod_info{node!=""}) + ) + record: node_namespace_pod_container:container_memory_working_set_bytes + - expr: |- + container_memory_rss{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} + * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, + max by(namespace, pod, node) (kube_pod_info{node!=""}) + ) + record: node_namespace_pod_container:container_memory_rss + - expr: |- + container_memory_cache{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} + * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, + max by(namespace, pod, node) (kube_pod_info{node!=""}) + ) + record: node_namespace_pod_container:container_memory_cache + - expr: |- + container_memory_swap{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} + * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, + max by(namespace, pod, node) (kube_pod_info{node!=""}) + ) + record: node_namespace_pod_container:container_memory_swap + - expr: sum(container_memory_usage_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!="", container!="POD"}) by (namespace) + record: namespace:container_memory_usage_bytes:sum + - expr: |- + sum by (namespace) ( + sum by (namespace, pod) ( + max by (namespace, pod, container) ( + kube_pod_container_resource_requests_memory_bytes{job="kube-state-metrics"} + ) * on(namespace, pod) group_left() max by (namespace, pod) ( + kube_pod_status_phase{phase=~"Pending|Running"} == 1 + ) + ) + ) + record: namespace:kube_pod_container_resource_requests_memory_bytes:sum + - expr: |- + sum by (namespace) ( + sum by (namespace, pod) ( + max by (namespace, pod, container) ( + kube_pod_container_resource_requests_cpu_cores{job="kube-state-metrics"} + ) * on(namespace, pod) group_left() max by (namespace, pod) ( + kube_pod_status_phase{phase=~"Pending|Running"} == 1 + ) + ) + ) + record: namespace:kube_pod_container_resource_requests_cpu_cores:sum + - expr: |- + max by (cluster, namespace, workload, pod) ( + label_replace( + label_replace( + kube_pod_owner{job="kube-state-metrics", owner_kind="ReplicaSet"}, + "replicaset", "$1", "owner_name", "(.*)" + ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) ( + 1, max by (replicaset, namespace, owner_name) ( + kube_replicaset_owner{job="kube-state-metrics"} + ) + ), + "workload", "$1", "owner_name", "(.*)" + ) + ) + labels: + workload_type: deployment + record: namespace_workload_pod:kube_pod_owner:relabel + - expr: |- + max by (cluster, namespace, workload, pod) ( + label_replace( + kube_pod_owner{job="kube-state-metrics", owner_kind="DaemonSet"}, + "workload", "$1", "owner_name", "(.*)" + ) + ) + labels: + workload_type: daemonset + record: namespace_workload_pod:kube_pod_owner:relabel + - expr: |- + max by (cluster, namespace, workload, pod) ( + label_replace( + kube_pod_owner{job="kube-state-metrics", owner_kind="StatefulSet"}, + "workload", "$1", "owner_name", "(.*)" + ) + ) + labels: + workload_type: statefulset + record: namespace_workload_pod:kube_pod_owner:relabel +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml new file mode 100644 index 000000000..78a09e323 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml @@ -0,0 +1,158 @@ +{{- /* +Generated from 'kube-apiserver-availability.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverAvailability }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver-availability.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - interval: 3m + name: kube-apiserver-availability.rules + rules: + - expr: |- + 1 - ( + ( + # write too slow + sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d])) + - + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d])) + ) + + ( + # read too slow + sum(increase(apiserver_request_duration_seconds_count{verb=~"LIST|GET"}[30d])) + - + ( + ( + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) + or + vector(0) + ) + + + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) + + + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="cluster",le="5"}[30d])) + ) + ) + + # errors + sum(code:apiserver_request_total:increase30d{code=~"5.."} or vector(0)) + ) + / + sum(code:apiserver_request_total:increase30d) + labels: + verb: all + record: apiserver_request:availability30d + - expr: |- + 1 - ( + sum(increase(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[30d])) + - + ( + # too slow + ( + sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) + or + vector(0) + ) + + + sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) + + + sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[30d])) + ) + + + # errors + sum(code:apiserver_request_total:increase30d{verb="read",code=~"5.."} or vector(0)) + ) + / + sum(code:apiserver_request_total:increase30d{verb="read"}) + labels: + verb: read + record: apiserver_request:availability30d + - expr: |- + 1 - ( + ( + # too slow + sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d])) + - + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d])) + ) + + + # errors + sum(code:apiserver_request_total:increase30d{verb="write",code=~"5.."} or vector(0)) + ) + / + sum(code:apiserver_request_total:increase30d{verb="write"}) + labels: + verb: write + record: apiserver_request:availability30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"2.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"2.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"2.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"2.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"2.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"2.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"3.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"3.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"3.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"3.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"3.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"3.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"4.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"4.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"4.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"4.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"4.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"4.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"5.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"5.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"5.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"5.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"5.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"5.."}[30d])) + record: code_verb:apiserver_request_total:increase30d + - expr: sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"LIST|GET"}) + labels: + verb: read + record: code:apiserver_request_total:increase30d + - expr: sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"POST|PUT|PATCH|DELETE"}) + labels: + verb: write + record: code:apiserver_request_total:increase30d +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml new file mode 100644 index 000000000..da0de91a3 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml @@ -0,0 +1,95 @@ +{{- /* +Generated from 'kube-apiserver-slos' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverSlos }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver-slos" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kube-apiserver-slos + rules: + - alert: KubeAPIErrorBudgetBurn + annotations: + description: The API server is burning too much error budget. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn + summary: The API server is burning too much error budget. + expr: |- + sum(apiserver_request:burnrate1h) > (14.40 * 0.01000) + and + sum(apiserver_request:burnrate5m) > (14.40 * 0.01000) + for: 2m + labels: + long: 1h + severity: critical + short: 5m +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeAPIErrorBudgetBurn + annotations: + description: The API server is burning too much error budget. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn + summary: The API server is burning too much error budget. + expr: |- + sum(apiserver_request:burnrate6h) > (6.00 * 0.01000) + and + sum(apiserver_request:burnrate30m) > (6.00 * 0.01000) + for: 15m + labels: + long: 6h + severity: critical + short: 30m +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeAPIErrorBudgetBurn + annotations: + description: The API server is burning too much error budget. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn + summary: The API server is burning too much error budget. + expr: |- + sum(apiserver_request:burnrate1d) > (3.00 * 0.01000) + and + sum(apiserver_request:burnrate2h) > (3.00 * 0.01000) + for: 1h + labels: + long: 1d + severity: warning + short: 2h +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeAPIErrorBudgetBurn + annotations: + description: The API server is burning too much error budget. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn + summary: The API server is burning too much error budget. + expr: |- + sum(apiserver_request:burnrate3d) > (1.00 * 0.01000) + and + sum(apiserver_request:burnrate6h) > (1.00 * 0.01000) + for: 3h + labels: + long: 3d + severity: warning + short: 6h +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml new file mode 100644 index 000000000..b4d1a0f39 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml @@ -0,0 +1,363 @@ +{{- /* +Generated from 'kube-apiserver.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserver }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kube-apiserver.rules + rules: + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[1d])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1d])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[1d])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[1d])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1d])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1d])) + labels: + verb: read + record: apiserver_request:burnrate1d + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[1h])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1h])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[1h])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[1h])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1h])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1h])) + labels: + verb: read + record: apiserver_request:burnrate1h + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[2h])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[2h])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[2h])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[2h])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[2h])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[2h])) + labels: + verb: read + record: apiserver_request:burnrate2h + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[30m])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30m])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[30m])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[30m])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[30m])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[30m])) + labels: + verb: read + record: apiserver_request:burnrate30m + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[3d])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[3d])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[3d])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[3d])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[3d])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[3d])) + labels: + verb: read + record: apiserver_request:burnrate3d + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[5m])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[5m])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[5m])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[5m])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) + labels: + verb: read + record: apiserver_request:burnrate5m + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[6h])) + - + ( + ( + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[6h])) + or + vector(0) + ) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[6h])) + + + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[6h])) + ) + ) + + + # errors + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[6h])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[6h])) + labels: + verb: read + record: apiserver_request:burnrate6h + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1d])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d])) + labels: + verb: write + record: apiserver_request:burnrate1d + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1h])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) + labels: + verb: write + record: apiserver_request:burnrate1h + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[2h])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) + labels: + verb: write + record: apiserver_request:burnrate2h + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[30m])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) + labels: + verb: write + record: apiserver_request:burnrate30m + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[3d])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d])) + labels: + verb: write + record: apiserver_request:burnrate3d + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[5m])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) + labels: + verb: write + record: apiserver_request:burnrate5m + - expr: |- + ( + ( + # too slow + sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) + - + sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[6h])) + ) + + + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h])) + ) + / + sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) + labels: + verb: write + record: apiserver_request:burnrate6h + - expr: sum by (code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) + labels: + verb: read + record: code_resource:apiserver_request_total:rate5m + - expr: sum by (code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) + labels: + verb: write + record: code_resource:apiserver_request_total:rate5m + - expr: histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET"}[5m]))) > 0 + labels: + quantile: '0.99' + verb: read + record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))) > 0 + labels: + quantile: '0.99' + verb: write + record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile + - expr: |- + sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod) + / + sum(rate(apiserver_request_duration_seconds_count{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod) + record: cluster:apiserver_request_duration_seconds:mean5m + - expr: histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) + labels: + quantile: '0.99' + record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.9, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) + labels: + quantile: '0.9' + record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.5, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) + labels: + quantile: '0.5' + record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml new file mode 100644 index 000000000..e54bee587 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml @@ -0,0 +1,31 @@ +{{- /* +Generated from 'kube-prometheus-general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusGeneral }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-prometheus-general.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kube-prometheus-general.rules + rules: + - expr: count without(instance, pod, node) (up == 1) + record: count:up1 + - expr: count without(instance, pod, node) (up == 0) + record: count:up0 +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml new file mode 100644 index 000000000..27271f1b5 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml @@ -0,0 +1,39 @@ +{{- /* +Generated from 'kube-prometheus-node-recording.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusNodeRecording }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-prometheus-node-recording.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kube-prometheus-node-recording.rules + rules: + - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[3m])) BY (instance) + record: instance:node_cpu:rate:sum + - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance) + record: instance:node_network_receive_bytes:rate:sum + - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance) + record: instance:node_network_transmit_bytes:rate:sum + - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance) + record: instance:node_cpu:ratio + - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m])) + record: cluster:node_cpu:sum_rate5m + - expr: cluster:node_cpu_seconds_total:rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu)) + record: cluster:node_cpu:ratio +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml new file mode 100644 index 000000000..594f1bb3b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml @@ -0,0 +1,63 @@ +{{- /* +Generated from 'kube-scheduler.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeScheduler.enabled .Values.defaultRules.rules.kubeScheduler }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-scheduler.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kube-scheduler.rules + rules: + - expr: histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.99' + record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.99' + record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.99' + record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.9, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.9' + record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.9' + record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.9, sum(rate(scheduler_binding_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.9' + record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.5, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.5' + record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.5' + record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.5, sum(rate(scheduler_binding_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod)) + labels: + quantile: '0.5' + record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-state-metrics.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-state-metrics.yaml new file mode 100644 index 000000000..0fa5032ba --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kube-state-metrics.yaml @@ -0,0 +1,59 @@ +{{- /* +Generated from 'kube-state-metrics' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubeStateMetrics }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-state-metrics" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kube-state-metrics + rules: + - alert: KubeStateMetricsListErrors + annotations: + description: kube-state-metrics is experiencing errors at an elevated rate in list operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatemetricslisterrors + summary: kube-state-metrics is experiencing errors in list operations. + expr: |- + (sum(rate(kube_state_metrics_list_total{job="kube-state-metrics",result="error"}[5m])) + / + sum(rate(kube_state_metrics_list_total{job="kube-state-metrics"}[5m]))) + > 0.01 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeStateMetricsWatchErrors + annotations: + description: kube-state-metrics is experiencing errors at an elevated rate in watch operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatemetricswatcherrors + summary: kube-state-metrics is experiencing errors in watch operations. + expr: |- + (sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics",result="error"}[5m])) + / + sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics"}[5m]))) + > 0.01 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubelet.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubelet.rules.yaml new file mode 100644 index 000000000..f9bd1ccd6 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubelet.rules.yaml @@ -0,0 +1,39 @@ +{{- /* +Generated from 'kubelet.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubelet.enabled .Values.defaultRules.rules.kubelet }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubelet.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubelet.rules + rules: + - expr: histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (instance, le) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) + labels: + quantile: '0.99' + record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (instance, le) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) + labels: + quantile: '0.9' + record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile + - expr: histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (instance, le) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) + labels: + quantile: '0.5' + record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-apps.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-apps.yaml new file mode 100644 index 000000000..6eb5e0295 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-apps.yaml @@ -0,0 +1,298 @@ +{{- /* +Generated from 'kubernetes-apps' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesApps }} +{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-apps" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-apps + rules: + - alert: KubePodCrashLooping + annotations: + description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} ({{`{{`}} $labels.container {{`}}`}}) is restarting {{`{{`}} printf "%.2f" $value {{`}}`}} times / 5 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepodcrashlooping + summary: Pod is crash looping. + expr: rate(kube_pod_container_status_restarts_total{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) * 60 * 5 > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubePodNotReady + annotations: + description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has been in a non-ready state for longer than 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepodnotready + summary: Pod has been in a non-ready state for more than 15 minutes. + expr: |- + sum by (namespace, pod) ( + max by(namespace, pod) ( + kube_pod_status_phase{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}", phase=~"Pending|Unknown"} + ) * on(namespace, pod) group_left(owner_kind) topk by(namespace, pod) ( + 1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"}) + ) + ) > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeDeploymentGenerationMismatch + annotations: + description: Deployment generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} does not match, this indicates that the Deployment has failed but has not been rolled back. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedeploymentgenerationmismatch + summary: Deployment generation mismatch due to possible roll-back + expr: |- + kube_deployment_status_observed_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_deployment_metadata_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeDeploymentReplicasMismatch + annotations: + description: Deployment {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedeploymentreplicasmismatch + summary: Deployment has not matched the expected number of replicas. + expr: |- + ( + kube_deployment_spec_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_deployment_status_replicas_available{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) and ( + changes(kube_deployment_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) + == + 0 + ) + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeStatefulSetReplicasMismatch + annotations: + description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetreplicasmismatch + summary: Deployment has not matched the expected number of replicas. + expr: |- + ( + kube_statefulset_status_replicas_ready{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_statefulset_status_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) and ( + changes(kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) + == + 0 + ) + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeStatefulSetGenerationMismatch + annotations: + description: StatefulSet generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} does not match, this indicates that the StatefulSet has failed but has not been rolled back. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetgenerationmismatch + summary: StatefulSet generation mismatch due to possible roll-back + expr: |- + kube_statefulset_status_observed_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_statefulset_metadata_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeStatefulSetUpdateNotRolledOut + annotations: + description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} update has not been rolled out. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetupdatenotrolledout + summary: StatefulSet update has not been rolled out. + expr: |- + ( + max without (revision) ( + kube_statefulset_status_current_revision{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + unless + kube_statefulset_status_update_revision{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) + * + ( + kube_statefulset_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) + ) and ( + changes(kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) + == + 0 + ) + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeDaemonSetRolloutStuck + annotations: + description: DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} has not finished or progressed for at least 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetrolloutstuck + summary: DaemonSet rollout is stuck. + expr: |- + ( + ( + kube_daemonset_status_current_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) or ( + kube_daemonset_status_number_misscheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + 0 + ) or ( + kube_daemonset_updated_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) or ( + kube_daemonset_status_number_available{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + ) + ) and ( + changes(kube_daemonset_updated_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) + == + 0 + ) + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeContainerWaiting + annotations: + description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} container {{`{{`}} $labels.container{{`}}`}} has been in waiting state for longer than 1 hour. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecontainerwaiting + summary: Pod container waiting longer than 1 hour + expr: sum by (namespace, pod, container) (kube_pod_container_status_waiting_reason{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) > 0 + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeDaemonSetNotScheduled + annotations: + description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are not scheduled.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetnotscheduled + summary: DaemonSet pods are not scheduled. + expr: |- + kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + - + kube_daemonset_status_current_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeDaemonSetMisScheduled + annotations: + description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are running where they are not supposed to run.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetmisscheduled + summary: DaemonSet pods are misscheduled. + expr: kube_daemonset_status_number_misscheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeJobCompletion + annotations: + description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} is taking more than 12 hours to complete. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubejobcompletion + summary: Job did not complete in time + expr: kube_job_spec_completions{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - kube_job_status_succeeded{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 + for: 12h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeJobFailed + annotations: + description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} failed to complete. Removing failed job after investigation should clear this alert. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubejobfailed + summary: Job failed to complete. + expr: kube_job_failed{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeHpaReplicasMismatch + annotations: + description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.hpa {{`}}`}} has not matched the desired number of replicas for longer than 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubehpareplicasmismatch + summary: HPA has not matched descired number of replicas. + expr: |- + (kube_hpa_status_desired_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + != + kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) + and + (kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + > + kube_hpa_spec_min_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) + and + (kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + < + kube_hpa_spec_max_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) + and + changes(kube_hpa_status_current_replicas[15m]) == 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeHpaMaxedOut + annotations: + description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.hpa {{`}}`}} has been running at max replicas for longer than 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubehpamaxedout + summary: HPA is running at max replicas + expr: |- + kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + == + kube_hpa_spec_max_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-resources.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-resources.yaml new file mode 100644 index 000000000..87933e5b2 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-resources.yaml @@ -0,0 +1,159 @@ +{{- /* +Generated from 'kubernetes-resources' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesResources }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-resources" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-resources + rules: + - alert: KubeCPUOvercommit + annotations: + description: Cluster has overcommitted CPU resource requests for Pods and cannot tolerate node failure. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecpuovercommit + summary: Cluster has overcommitted CPU resource requests. + expr: |- + sum(namespace:kube_pod_container_resource_requests_cpu_cores:sum{}) + / + sum(kube_node_status_allocatable_cpu_cores) + > + (count(kube_node_status_allocatable_cpu_cores)-1) / count(kube_node_status_allocatable_cpu_cores) + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeMemoryOvercommit + annotations: + description: Cluster has overcommitted memory resource requests for Pods and cannot tolerate node failure. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubememoryovercommit + summary: Cluster has overcommitted memory resource requests. + expr: |- + sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{}) + / + sum(kube_node_status_allocatable_memory_bytes) + > + (count(kube_node_status_allocatable_memory_bytes)-1) + / + count(kube_node_status_allocatable_memory_bytes) + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeCPUQuotaOvercommit + annotations: + description: Cluster has overcommitted CPU resource requests for Namespaces. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecpuquotaovercommit + summary: Cluster has overcommitted CPU resource requests. + expr: |- + sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"}) + / + sum(kube_node_status_allocatable_cpu_cores) + > 1.5 + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeMemoryQuotaOvercommit + annotations: + description: Cluster has overcommitted memory resource requests for Namespaces. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubememoryquotaovercommit + summary: Cluster has overcommitted memory resource requests. + expr: |- + sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"}) + / + sum(kube_node_status_allocatable_memory_bytes{job="kube-state-metrics"}) + > 1.5 + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeQuotaAlmostFull + annotations: + description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotaalmostfull + summary: Namespace quota is going to be full. + expr: |- + kube_resourcequota{job="kube-state-metrics", type="used"} + / ignoring(instance, job, type) + (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) + > 0.9 < 1 + for: 15m + labels: + severity: info +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeQuotaFullyUsed + annotations: + description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotafullyused + summary: Namespace quota is fully used. + expr: |- + kube_resourcequota{job="kube-state-metrics", type="used"} + / ignoring(instance, job, type) + (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) + == 1 + for: 15m + labels: + severity: info +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeQuotaExceeded + annotations: + description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotaexceeded + summary: Namespace quota has exceeded the limits. + expr: |- + kube_resourcequota{job="kube-state-metrics", type="used"} + / ignoring(instance, job, type) + (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) + > 1 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: CPUThrottlingHigh + annotations: + description: '{{`{{`}} $value | humanizePercentage {{`}}`}} throttling of CPU in namespace {{`{{`}} $labels.namespace {{`}}`}} for container {{`{{`}} $labels.container {{`}}`}} in pod {{`{{`}} $labels.pod {{`}}`}}.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-cputhrottlinghigh + summary: Processes experience elevated CPU throttling. + expr: |- + sum(increase(container_cpu_cfs_throttled_periods_total{container!="", }[5m])) by (container, pod, namespace) + / + sum(increase(container_cpu_cfs_periods_total{}[5m])) by (container, pod, namespace) + > ( 25 / 100 ) + for: 15m + labels: + severity: info +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-storage.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-storage.yaml new file mode 100644 index 000000000..1fadb59f4 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-storage.yaml @@ -0,0 +1,75 @@ +{{- /* +Generated from 'kubernetes-storage' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesStorage }} +{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-storage" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-storage + rules: + - alert: KubePersistentVolumeFillingUp + annotations: + description: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is only {{`{{`}} $value | humanizePercentage {{`}}`}} free. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumefillingup + summary: PersistentVolume is filling up. + expr: |- + kubelet_volume_stats_available_bytes{job="kubelet", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} + / + kubelet_volume_stats_capacity_bytes{job="kubelet", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} + < 0.03 + for: 1m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubePersistentVolumeFillingUp + annotations: + description: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is expected to fill up within four days. Currently {{`{{`}} $value | humanizePercentage {{`}}`}} is available. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumefillingup + summary: PersistentVolume is filling up. + expr: |- + ( + kubelet_volume_stats_available_bytes{job="kubelet", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} + / + kubelet_volume_stats_capacity_bytes{job="kubelet", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} + ) < 0.15 + and + predict_linear(kubelet_volume_stats_available_bytes{job="kubelet", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0 + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubePersistentVolumeErrors + annotations: + description: The persistent volume {{`{{`}} $labels.persistentvolume {{`}}`}} has status {{`{{`}} $labels.phase {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumeerrors + summary: PersistentVolume is having issues with provisioning. + expr: kube_persistentvolume_status_phase{phase=~"Failed|Pending",job="kube-state-metrics"} > 0 + for: 5m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml new file mode 100644 index 000000000..f9acb6a50 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml @@ -0,0 +1,88 @@ +{{- /* +Generated from 'kubernetes-system-apiserver' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-apiserver" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-system-apiserver + rules: + - alert: KubeClientCertificateExpiration + annotations: + description: A client certificate used to authenticate to the apiserver is expiring in less than 7.0 days. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclientcertificateexpiration + summary: Client certificate is about to expire. + expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 604800 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeClientCertificateExpiration + annotations: + description: A client certificate used to authenticate to the apiserver is expiring in less than 24.0 hours. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclientcertificateexpiration + summary: Client certificate is about to expire. + expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 86400 + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: AggregatedAPIErrors + annotations: + description: An aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has reported errors. The number of errors have increased for it in the past five minutes. High values indicate that the availability of the service changes too often. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-aggregatedapierrors + summary: An aggregated API has reported errors. + expr: sum by(name, namespace)(increase(aggregator_unavailable_apiservice_count[5m])) > 2 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- if semverCompare ">=1.18.0-0" $kubeTargetVersion }} + - alert: AggregatedAPIDown + annotations: + description: An aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has been only {{`{{`}} $value | humanize {{`}}`}}% available over the last 10m. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-aggregatedapidown + summary: An aggregated API is down. + expr: (1 - max by(name, namespace)(avg_over_time(aggregator_unavailable_apiservice[10m]))) * 100 < 85 + for: 5m + labels: + severity: warning +{{- end }} +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- if .Values.kubeApiServer.enabled }} + - alert: KubeAPIDown + annotations: + description: KubeAPI has disappeared from Prometheus target discovery. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapidown + summary: Target disappeared from Prometheus target discovery. + expr: absent(up{job="apiserver"} == 1) + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml new file mode 100644 index 000000000..bc9dab862 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml @@ -0,0 +1,41 @@ +{{- /* +Generated from 'kubernetes-system-controller-manager' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeControllerManager.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-controller-manager" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-system-controller-manager + rules: +{{- if .Values.kubeControllerManager.enabled }} + - alert: KubeControllerManagerDown + annotations: + description: KubeControllerManager has disappeared from Prometheus target discovery. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecontrollermanagerdown + summary: Target disappeared from Prometheus target discovery. + expr: absent(up{job="kube-controller-manager"} == 1) + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml new file mode 100644 index 000000000..cde9da437 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml @@ -0,0 +1,188 @@ +{{- /* +Generated from 'kubernetes-system-kubelet' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-kubelet" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-system-kubelet + rules: + - alert: KubeNodeNotReady + annotations: + description: '{{`{{`}} $labels.node {{`}}`}} has been unready for more than 15 minutes.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodenotready + summary: Node is not ready. + expr: kube_node_status_condition{job="kube-state-metrics",condition="Ready",status="true"} == 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeNodeUnreachable + annotations: + description: '{{`{{`}} $labels.node {{`}}`}} is unreachable and some workloads may be rescheduled.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodeunreachable + summary: Node is unreachable. + expr: (kube_node_spec_taint{job="kube-state-metrics",key="node.kubernetes.io/unreachable",effect="NoSchedule"} unless ignoring(key,value) kube_node_spec_taint{job="kube-state-metrics",key=~"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn"}) == 1 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletTooManyPods + annotations: + description: Kubelet '{{`{{`}} $labels.node {{`}}`}}' is running at {{`{{`}} $value | humanizePercentage {{`}}`}} of its Pod capacity. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubelettoomanypods + summary: Kubelet is running at capacity. + expr: |- + count by(node) ( + (kube_pod_status_phase{job="kube-state-metrics",phase="Running"} == 1) * on(instance,pod,namespace,cluster) group_left(node) topk by(instance,pod,namespace,cluster) (1, kube_pod_info{job="kube-state-metrics"}) + ) + / + max by(node) ( + kube_node_status_capacity_pods{job="kube-state-metrics"} != 1 + ) > 0.95 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeNodeReadinessFlapping + annotations: + description: The readiness status of node {{`{{`}} $labels.node {{`}}`}} has changed {{`{{`}} $value {{`}}`}} times in the last 15 minutes. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodereadinessflapping + summary: Node readiness status is flapping. + expr: sum(changes(kube_node_status_condition{status="true",condition="Ready"}[15m])) by (node) > 2 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletPlegDurationHigh + annotations: + description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletplegdurationhigh + summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist. + expr: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile{quantile="0.99"} >= 10 + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletPodStartUpLatencyHigh + annotations: + description: Kubelet Pod startup 99th percentile latency is {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletpodstartuplatencyhigh + summary: Kubelet Pod startup latency is too high. + expr: histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by (instance, le)) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"} > 60 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletClientCertificateExpiration + annotations: + description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletclientcertificateexpiration + summary: Kubelet client certificate is about to expire. + expr: kubelet_certificate_manager_client_ttl_seconds < 604800 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletClientCertificateExpiration + annotations: + description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletclientcertificateexpiration + summary: Kubelet client certificate is about to expire. + expr: kubelet_certificate_manager_client_ttl_seconds < 86400 + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletServerCertificateExpiration + annotations: + description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletservercertificateexpiration + summary: Kubelet server certificate is about to expire. + expr: kubelet_certificate_manager_server_ttl_seconds < 604800 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletServerCertificateExpiration + annotations: + description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletservercertificateexpiration + summary: Kubelet server certificate is about to expire. + expr: kubelet_certificate_manager_server_ttl_seconds < 86400 + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletClientCertificateRenewalErrors + annotations: + description: Kubelet on node {{`{{`}} $labels.node {{`}}`}} has failed to renew its client certificate ({{`{{`}} $value | humanize {{`}}`}} errors in the last 5 minutes). + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletclientcertificaterenewalerrors + summary: Kubelet has failed to renew its client certificate. + expr: increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeletServerCertificateRenewalErrors + annotations: + description: Kubelet on node {{`{{`}} $labels.node {{`}}`}} has failed to renew its server certificate ({{`{{`}} $value | humanize {{`}}`}} errors in the last 5 minutes). + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletservercertificaterenewalerrors + summary: Kubelet has failed to renew its server certificate. + expr: increase(kubelet_server_expiration_renew_errors[5m]) > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- if .Values.prometheusOperator.kubeletService.enabled }} + - alert: KubeletDown + annotations: + description: Kubelet has disappeared from Prometheus target discovery. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletdown + summary: Target disappeared from Prometheus target discovery. + expr: absent(up{job="kubelet", metrics_path="/metrics"} == 1) + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml new file mode 100644 index 000000000..a2c12725f --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml @@ -0,0 +1,41 @@ +{{- /* +Generated from 'kubernetes-system-scheduler' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeScheduler.enabled .Values.defaultRules.rules.kubeScheduler }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-scheduler" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-system-scheduler + rules: +{{- if .Values.kubeScheduler.enabled }} + - alert: KubeSchedulerDown + annotations: + description: KubeScheduler has disappeared from Prometheus target discovery. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeschedulerdown + summary: Target disappeared from Prometheus target discovery. + expr: absent(up{job="kube-scheduler"} == 1) + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system.yaml new file mode 100644 index 000000000..3aca2e6cc --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/kubernetes-system.yaml @@ -0,0 +1,55 @@ +{{- /* +Generated from 'kubernetes-system' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: kubernetes-system + rules: + - alert: KubeVersionMismatch + annotations: + description: There are {{`{{`}} $value {{`}}`}} different semantic versions of Kubernetes components running. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeversionmismatch + summary: Different semantic versions of Kubernetes components running. + expr: count(count by (gitVersion) (label_replace(kubernetes_build_info{job!~"kube-dns|coredns"},"gitVersion","$1","gitVersion","(v[0-9]*.[0-9]*).*"))) > 1 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: KubeClientErrors + annotations: + description: Kubernetes API server client '{{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.instance {{`}}`}}' is experiencing {{`{{`}} $value | humanizePercentage {{`}}`}} errors.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclienterrors + summary: Kubernetes API server client is experiencing errors. + expr: |- + (sum(rate(rest_client_requests_total{code=~"5.."}[5m])) by (instance, job) + / + sum(rate(rest_client_requests_total[5m])) by (instance, job)) + > 0.01 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.rules.yaml new file mode 100644 index 000000000..b6ae1bbeb --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.rules.yaml @@ -0,0 +1,79 @@ +{{- /* +Generated from 'node-exporter.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-exporter.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: node-exporter.rules + rules: + - expr: |- + count without (cpu) ( + count without (mode) ( + node_cpu_seconds_total{job="node-exporter"} + ) + ) + record: instance:node_num_cpu:sum + - expr: |- + 1 - avg without (cpu, mode) ( + rate(node_cpu_seconds_total{job="node-exporter", mode="idle"}[1m]) + ) + record: instance:node_cpu_utilisation:rate1m + - expr: |- + ( + node_load1{job="node-exporter"} + / + instance:node_num_cpu:sum{job="node-exporter"} + ) + record: instance:node_load1_per_cpu:ratio + - expr: |- + 1 - ( + node_memory_MemAvailable_bytes{job="node-exporter"} + / + node_memory_MemTotal_bytes{job="node-exporter"} + ) + record: instance:node_memory_utilisation:ratio + - expr: rate(node_vmstat_pgmajfault{job="node-exporter"}[1m]) + record: instance:node_vmstat_pgmajfault:rate1m + - expr: rate(node_disk_io_time_seconds_total{job="node-exporter", device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"}[1m]) + record: instance_device:node_disk_io_time_seconds:rate1m + - expr: rate(node_disk_io_time_weighted_seconds_total{job="node-exporter", device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"}[1m]) + record: instance_device:node_disk_io_time_weighted_seconds:rate1m + - expr: |- + sum without (device) ( + rate(node_network_receive_bytes_total{job="node-exporter", device!="lo"}[1m]) + ) + record: instance:node_network_receive_bytes_excluding_lo:rate1m + - expr: |- + sum without (device) ( + rate(node_network_transmit_bytes_total{job="node-exporter", device!="lo"}[1m]) + ) + record: instance:node_network_transmit_bytes_excluding_lo:rate1m + - expr: |- + sum without (device) ( + rate(node_network_receive_drop_total{job="node-exporter", device!="lo"}[1m]) + ) + record: instance:node_network_receive_drop_excluding_lo:rate1m + - expr: |- + sum without (device) ( + rate(node_network_transmit_drop_total{job="node-exporter", device!="lo"}[1m]) + ) + record: instance:node_network_transmit_drop_excluding_lo:rate1m +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.yaml new file mode 100644 index 000000000..7d5ab7dc6 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-exporter.yaml @@ -0,0 +1,278 @@ +{{- /* +Generated from 'node-exporter' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-exporter" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: node-exporter + rules: + - alert: NodeFilesystemSpaceFillingUp + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemspacefillingup + summary: Filesystem is predicted to run out of space within the next 24 hours. + expr: |- + ( + node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 40 + and + predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemSpaceFillingUp + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up fast. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemspacefillingup + summary: Filesystem is predicted to run out of space within the next 4 hours. + expr: |- + ( + node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 15 + and + predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemAlmostOutOfSpace + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemalmostoutofspace + summary: Filesystem has less than 5% space left. + expr: |- + ( + node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 5 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemAlmostOutOfSpace + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemalmostoutofspace + summary: Filesystem has less than 3% space left. + expr: |- + ( + node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 3 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemFilesFillingUp + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left and is filling up. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemfilesfillingup + summary: Filesystem is predicted to run out of inodes within the next 24 hours. + expr: |- + ( + node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 40 + and + predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemFilesFillingUp + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left and is filling up fast. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemfilesfillingup + summary: Filesystem is predicted to run out of inodes within the next 4 hours. + expr: |- + ( + node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 20 + and + predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemAlmostOutOfFiles + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemalmostoutoffiles + summary: Filesystem has less than 5% inodes left. + expr: |- + ( + node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 5 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeFilesystemAlmostOutOfFiles + annotations: + description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodefilesystemalmostoutoffiles + summary: Filesystem has less than 3% inodes left. + expr: |- + ( + node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 3 + and + node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 + ) + for: 1h + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeNetworkReceiveErrs + annotations: + description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf "%.0f" $value {{`}}`}} receive errors in the last two minutes.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodenetworkreceiveerrs + summary: Network interface is reporting many receive errors. + expr: rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01 + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeNetworkTransmitErrs + annotations: + description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf "%.0f" $value {{`}}`}} transmit errors in the last two minutes.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodenetworktransmiterrs + summary: Network interface is reporting many transmit errors. + expr: rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01 + for: 1h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeHighNumberConntrackEntriesUsed + annotations: + description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of conntrack entries are used.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodehighnumberconntrackentriesused + summary: Number of conntrack are getting close to the limit. + expr: (node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeTextFileCollectorScrapeError + annotations: + description: Node Exporter text file collector failed to scrape. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodetextfilecollectorscrapeerror + summary: Node Exporter text file collector failed to scrape. + expr: node_textfile_scrape_error{job="node-exporter"} == 1 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeClockSkewDetected + annotations: + message: Clock on {{`{{`}} $labels.instance {{`}}`}} is out of sync by more than 300s. Ensure NTP is configured correctly on this host. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodeclockskewdetected + summary: Clock skew detected. + expr: |- + ( + node_timex_offset_seconds > 0.05 + and + deriv(node_timex_offset_seconds[5m]) >= 0 + ) + or + ( + node_timex_offset_seconds < -0.05 + and + deriv(node_timex_offset_seconds[5m]) <= 0 + ) + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeClockNotSynchronising + annotations: + message: Clock on {{`{{`}} $labels.instance {{`}}`}} is not synchronising. Ensure NTP is configured on this host. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodeclocknotsynchronising + summary: Clock not synchronising. + expr: |- + min_over_time(node_timex_sync_status[5m]) == 0 + and + node_timex_maxerror_seconds >= 16 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeRAIDDegraded + annotations: + description: RAID array '{{`{{`}} $labels.device {{`}}`}}' on {{`{{`}} $labels.instance {{`}}`}} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-noderaiddegraded + summary: RAID Array is degraded + expr: node_md_disks_required - ignoring (state) (node_md_disks{state="active"}) > 0 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: NodeRAIDDiskFailure + annotations: + description: At least one device in RAID array on {{`{{`}} $labels.instance {{`}}`}} failed. Array '{{`{{`}} $labels.device {{`}}`}}' needs attention and possibly a disk swap. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-noderaiddiskfailure + summary: Failed device in RAID array + expr: node_md_disks{state="fail"} > 0 + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-network.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-network.yaml new file mode 100644 index 000000000..9a6955ae9 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node-network.yaml @@ -0,0 +1,37 @@ +{{- /* +Generated from 'node-network' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.network }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-network" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: node-network + rules: + - alert: NodeNetworkInterfaceFlapping + annotations: + message: Network interface "{{`{{`}} $labels.device {{`}}`}}" changing it's up status often on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}" + expr: changes(node_network_up{job="node-exporter",device!~"veth.+"}[2m]) > 2 + for: 2m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node.rules.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node.rules.yaml new file mode 100644 index 000000000..7253b311b --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/node.rules.yaml @@ -0,0 +1,53 @@ +{{- /* +Generated from 'node.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node.rules" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: node.rules + rules: + - expr: sum(min(kube_pod_info{node!=""}) by (cluster, node)) + record: ':kube_pod_info_node_count:' + - expr: |- + topk by(namespace, pod) (1, + max by (node, namespace, pod) ( + label_replace(kube_pod_info{job="kube-state-metrics",node!=""}, "pod", "$1", "pod", "(.*)") + )) + record: 'node_namespace_pod:kube_pod_info:' + - expr: |- + count by (cluster, node) (sum by (node, cpu) ( + node_cpu_seconds_total{job="node-exporter"} + * on (namespace, pod) group_left(node) + node_namespace_pod:kube_pod_info: + )) + record: node:node_num_cpu:sum + - expr: |- + sum( + node_memory_MemAvailable_bytes{job="node-exporter"} or + ( + node_memory_Buffers_bytes{job="node-exporter"} + + node_memory_Cached_bytes{job="node-exporter"} + + node_memory_MemFree_bytes{job="node-exporter"} + + node_memory_Slab_bytes{job="node-exporter"} + ) + ) by (cluster) + record: :node_memory_MemAvailable_bytes:sum +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus-operator.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus-operator.yaml new file mode 100644 index 000000000..d1c1f6545 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus-operator.yaml @@ -0,0 +1,113 @@ +{{- /* +Generated from 'prometheus-operator' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheusOperator }} +{{- $operatorJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "operator" }} +{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus-operator" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: prometheus-operator + rules: + - alert: PrometheusOperatorListErrors + annotations: + description: Errors while performing List operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorlisterrors + summary: Errors while performing list operations in controller. + expr: (sum by (controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m])) / sum by (controller,namespace) (rate(prometheus_operator_list_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m]))) > 0.4 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOperatorWatchErrors + annotations: + description: Errors while performing watch operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorwatcherrors + summary: Errors while performing watch operations in controller. + expr: (sum by (controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m])) / sum by (controller,namespace) (rate(prometheus_operator_watch_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m]))) > 0.4 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOperatorSyncFailed + annotations: + description: Controller {{`{{`}} $labels.controller {{`}}`}} in {{`{{`}} $labels.namespace {{`}}`}} namespace fails to reconcile {{`{{`}} $value {{`}}`}} objects. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorsyncfailed + summary: Last controller reconciliation failed + expr: min_over_time(prometheus_operator_syncs{status="failed",job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOperatorReconcileErrors + annotations: + description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of reconciling operations failed for {{`{{`}} $labels.controller {{`}}`}} controller in {{`{{`}} $labels.namespace {{`}}`}} namespace.' + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorreconcileerrors + summary: Errors while reconciling controller. + expr: (sum by (controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) / (sum by (controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) > 0.1 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOperatorNodeLookupErrors + annotations: + description: Errors while reconciling Prometheus in {{`{{`}} $labels.namespace {{`}}`}} Namespace. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatornodelookuperrors + summary: Errors while reconciling Prometheus. + expr: rate(prometheus_operator_node_address_lookup_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0.1 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOperatorNotReady + annotations: + description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace isn't ready to reconcile {{`{{`}} $labels.controller {{`}}`}} resources. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatornotready + summary: Prometheus operator not ready + expr: min by(namespace, controller) (max_over_time(prometheus_operator_ready{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) == 0) + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOperatorRejectedResources + annotations: + description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace rejected {{`{{`}} printf "%0.0f" $value {{`}}`}} {{`{{`}} $labels.controller {{`}}`}}/{{`{{`}} $labels.resource {{`}}`}} resources. + runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorrejectedresources + summary: Resources rejected by Prometheus operator + expr: min_over_time(prometheus_operator_managed_resources{state="rejected",job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 5m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus.yaml b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus.yaml new file mode 100644 index 000000000..c9c805eea --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/rules-1.14/prometheus.yaml @@ -0,0 +1,258 @@ +{{- /* +Generated from 'prometheus' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml +Do not change in-place! In order to change this file first read following link: +https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack +*/ -}} +{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} +{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheus }} +{{- $prometheusJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} +{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" | trunc 63 | trimSuffix "-" }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.defaultRules.labels }} +{{ toYaml .Values.defaultRules.labels | indent 4 }} +{{- end }} +{{- if .Values.defaultRules.annotations }} + annotations: +{{ toYaml .Values.defaultRules.annotations | indent 4 }} +{{- end }} +spec: + groups: + - name: prometheus + rules: + - alert: PrometheusBadConfig + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to reload its configuration. + summary: Failed Prometheus configuration reload. + expr: |- + # Without max_over_time, failed scrapes could create false negatives, see + # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. + max_over_time(prometheus_config_last_reload_successful{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) == 0 + for: 10m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusNotificationQueueRunningFull + annotations: + description: Alert notification queue of Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is running full. + summary: Prometheus alert notification queue predicted to run full in less than 30m. + expr: |- + # Without min_over_time, failed scrapes could create false negatives, see + # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. + ( + predict_linear(prometheus_notifications_queue_length{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m], 60 * 30) + > + min_over_time(prometheus_notifications_queue_capacity{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + ) + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers + annotations: + description: '{{`{{`}} printf "%.1f" $value {{`}}`}}% errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to Alertmanager {{`{{`}}$labels.alertmanager{{`}}`}}.' + summary: Prometheus has encountered more than 1% errors sending alerts to a specific Alertmanager. + expr: |- + ( + rate(prometheus_notifications_errors_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + / + rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + ) + * 100 + > 1 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusErrorSendingAlertsToAnyAlertmanager + annotations: + description: '{{`{{`}} printf "%.1f" $value {{`}}`}}% minimum errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to any Alertmanager.' + summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager. + expr: |- + min without(alertmanager) ( + rate(prometheus_notifications_errors_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + / + rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + ) + * 100 + > 3 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusNotConnectedToAlertmanagers + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not connected to any Alertmanagers. + summary: Prometheus is not connected to any Alertmanagers. + expr: |- + # Without max_over_time, failed scrapes could create false negatives, see + # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. + max_over_time(prometheus_notifications_alertmanagers_discovered{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) < 1 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusTSDBReloadsFailing + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} reload failures over the last 3h. + summary: Prometheus has issues reloading blocks from disk. + expr: increase(prometheus_tsdb_reloads_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[3h]) > 0 + for: 4h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusTSDBCompactionsFailing + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} compaction failures over the last 3h. + summary: Prometheus has issues compacting blocks. + expr: increase(prometheus_tsdb_compactions_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[3h]) > 0 + for: 4h + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusNotIngestingSamples + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not ingesting samples. + summary: Prometheus is not ingesting samples. + expr: rate(prometheus_tsdb_head_samples_appended_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) <= 0 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusDuplicateTimestamps + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf "%.4g" $value {{`}}`}} samples/s with different values but duplicated timestamp. + summary: Prometheus is dropping samples with duplicate timestamps. + expr: rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusOutOfOrderTimestamps + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf "%.4g" $value {{`}}`}} samples/s with timestamps arriving out of order. + summary: Prometheus drops samples with out-of-order timestamps. + expr: rate(prometheus_target_scrapes_sample_out_of_order_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 10m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusRemoteStorageFailures + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} failed to send {{`{{`}} printf "%.1f" $value {{`}}`}}% of the samples to {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}} + summary: Prometheus fails to send samples to remote storage. + expr: |- + ( + rate(prometheus_remote_storage_failed_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + / + ( + rate(prometheus_remote_storage_failed_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + + + rate(prometheus_remote_storage_succeeded_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + ) + ) + * 100 + > 1 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusRemoteWriteBehind + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write is {{`{{`}} printf "%.1f" $value {{`}}`}}s behind for {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}. + summary: Prometheus remote write is behind. + expr: |- + # Without max_over_time, failed scrapes could create false negatives, see + # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. + ( + max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + - on(job, instance) group_right + max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + ) + > 120 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusRemoteWriteDesiredShards + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write desired shards calculation wants to run {{`{{`}} $value {{`}}`}} shards for queue {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}, which is more than the max of {{`{{`}} printf `prometheus_remote_storage_shards_max{instance="%s",job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}` $labels.instance | query | first | value {{`}}`}}. + summary: Prometheus remote write desired shards calculation wants to run more than configured max shards. + expr: |- + # Without max_over_time, failed scrapes could create false negatives, see + # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. + ( + max_over_time(prometheus_remote_storage_shards_desired{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + > + max_over_time(prometheus_remote_storage_shards_max{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) + ) + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusRuleFailures + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to evaluate {{`{{`}} printf "%.0f" $value {{`}}`}} rules in the last 5m. + summary: Prometheus is failing rule evaluations. + expr: increase(prometheus_rule_evaluation_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 15m + labels: + severity: critical +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusMissingRuleEvaluations + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has missed {{`{{`}} printf "%.0f" $value {{`}}`}} rule group evaluations in the last 5m. + summary: Prometheus is missing rule evaluations due to slow rule group evaluation. + expr: increase(prometheus_rule_group_iterations_missed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} + - alert: PrometheusTargetLimitHit + annotations: + description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has dropped {{`{{`}} printf "%.0f" $value {{`}}`}} targets because the number of targets exceeded the configured target_limit. + summary: Prometheus has dropped targets because some scrape configs have exceeded the targets limit. + expr: increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 + for: 15m + labels: + severity: warning +{{- if .Values.defaultRules.additionalRuleLabels }} +{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kube-prometheus-stack/templates/prometheus/service.yaml b/charts/kube-prometheus-stack/templates/prometheus/service.yaml new file mode 100644 index 000000000..9358de0fc --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/service.yaml @@ -0,0 +1,60 @@ +{{- if .Values.prometheus.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus + self-monitor: {{ .Values.prometheus.serviceMonitor.selfMonitor | quote }} +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheus.service.labels }} +{{ toYaml .Values.prometheus.service.labels | indent 4 }} +{{- end }} +{{- if .Values.prometheus.service.annotations }} + annotations: +{{ toYaml .Values.prometheus.service.annotations | indent 4 }} +{{- end }} +spec: +{{- if .Values.prometheus.service.clusterIP }} + clusterIP: {{ .Values.prometheus.service.clusterIP }} +{{- end }} +{{- if .Values.prometheus.service.externalIPs }} + externalIPs: +{{ toYaml .Values.prometheus.service.externalIPs | indent 4 }} +{{- end }} +{{- if .Values.prometheus.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.prometheus.service.loadBalancerIP }} +{{- end }} +{{- if .Values.prometheus.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $cidr := .Values.prometheus.service.loadBalancerSourceRanges }} + - {{ $cidr }} + {{- end }} +{{- end }} + ports: + - name: {{ .Values.prometheus.prometheusSpec.portName }} + {{- if eq .Values.prometheus.service.type "NodePort" }} + nodePort: {{ .Values.prometheus.service.nodePort }} + {{- end }} + port: {{ .Values.prometheus.service.port }} + targetPort: {{ .Values.prometheus.service.targetPort }} + {{- if .Values.prometheus.thanosIngress.enabled }} + - name: grpc + {{- if eq .Values.prometheus.service.type "NodePort" }} + nodePort: {{ .Values.prometheus.thanosIngress.servicePort }} + {{- end }} + port: {{ .Values.prometheus.thanosIngress.servicePort }} + targetPort: {{ .Values.prometheus.thanosIngress.servicePort }} + {{- end }} +{{- if .Values.prometheus.service.additionalPorts }} +{{ toYaml .Values.prometheus.service.additionalPorts | indent 2 }} +{{- end }} + selector: + app: prometheus + prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus +{{- if .Values.prometheus.service.sessionAffinity }} + sessionAffinity: {{ .Values.prometheus.service.sessionAffinity }} +{{- end }} + type: "{{ .Values.prometheus.service.type }}" +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/serviceThanosSIdecar.yaml b/charts/kube-prometheus-stack/templates/prometheus/serviceThanosSIdecar.yaml new file mode 100644 index 000000000..6ae1b14d3 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/serviceThanosSIdecar.yaml @@ -0,0 +1,27 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.thanosService.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-discovery + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-thanos-discovery +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheus.thanosService.labels }} +{{ toYaml .Values.prometheus.thanosService.labels | indent 4 }} +{{- end }} +{{- if .Values.prometheus.thanosService.annotations }} + annotations: +{{ toYaml .Values.prometheus.thanosService.annotations | indent 4 }} +{{- end }} +spec: + type: ClusterIP + clusterIP: None + ports: + - name: {{ .Values.prometheus.thanosService.portName }} + port: {{ .Values.prometheus.thanosService.port }} + targetPort: {{ .Values.prometheus.thanosService.targetPort }} + selector: + app: prometheus + prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/serviceaccount.yaml b/charts/kube-prometheus-stack/templates/prometheus/serviceaccount.yaml new file mode 100644 index 000000000..862d5f8e4 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/serviceaccount.yaml @@ -0,0 +1,16 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +{{- if .Values.prometheus.serviceAccount.annotations }} + annotations: +{{ toYaml .Values.prometheus.serviceAccount.annotations | indent 4 }} +{{- end }} +imagePullSecrets: +{{ toYaml .Values.global.imagePullSecrets | indent 2 }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/servicemonitor.yaml b/charts/kube-prometheus-stack/templates/prometheus/servicemonitor.yaml new file mode 100644 index 000000000..356c013ff --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/servicemonitor.yaml @@ -0,0 +1,42 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.serviceMonitor.selfMonitor }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus + namespace: {{ template "kube-prometheus-stack.namespace" . }} + labels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus +{{ include "kube-prometheus-stack.labels" . | indent 4 }} +spec: + selector: + matchLabels: + app: {{ template "kube-prometheus-stack.name" . }}-prometheus + release: {{ $.Release.Name | quote }} + self-monitor: "true" + namespaceSelector: + matchNames: + - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} + endpoints: + - port: {{ .Values.prometheus.prometheusSpec.portName }} + {{- if .Values.prometheus.serviceMonitor.interval }} + interval: {{ .Values.prometheus.serviceMonitor.interval }} + {{- end }} + {{- if .Values.prometheus.serviceMonitor.scheme }} + scheme: {{ .Values.prometheus.serviceMonitor.scheme }} + {{- end }} + {{- if .Values.prometheus.serviceMonitor.tlsConfig }} + tlsConfig: {{ toYaml .Values.prometheus.serviceMonitor.tlsConfig | nindent 6 }} + {{- end }} + {{- if .Values.prometheus.serviceMonitor.bearerTokenFile }} + bearerTokenFile: {{ .Values.prometheus.serviceMonitor.bearerTokenFile }} + {{- end }} + path: "{{ trimSuffix "/" .Values.prometheus.prometheusSpec.routePrefix }}/metrics" +{{- if .Values.prometheus.serviceMonitor.metricRelabelings }} + metricRelabelings: +{{ tpl (toYaml .Values.prometheus.serviceMonitor.metricRelabelings | indent 6) . }} +{{- end }} +{{- if .Values.prometheus.serviceMonitor.relabelings }} + relabelings: +{{ toYaml .Values.prometheus.serviceMonitor.relabelings | indent 6 }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/servicemonitors.yaml b/charts/kube-prometheus-stack/templates/prometheus/servicemonitors.yaml new file mode 100644 index 000000000..959df2124 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/servicemonitors.yaml @@ -0,0 +1,34 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.additionalServiceMonitors }} +apiVersion: v1 +kind: List +items: +{{- range .Values.prometheus.additionalServiceMonitors }} + - apiVersion: monitoring.coreos.com/v1 + kind: ServiceMonitor + metadata: + name: {{ .name }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ template "kube-prometheus-stack.name" $ }}-prometheus +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if .additionalLabels }} +{{ toYaml .additionalLabels | indent 8 }} + {{- end }} + spec: + endpoints: +{{ toYaml .endpoints | indent 8 }} + {{- if .jobLabel }} + jobLabel: {{ .jobLabel }} + {{- end }} + {{- if .namespaceSelector }} + namespaceSelector: +{{ toYaml .namespaceSelector | indent 8 }} + {{- end }} + selector: +{{ toYaml .selector | indent 8 }} + {{- if .targetLabels }} + targetLabels: +{{ toYaml .targetLabels | indent 8 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/serviceperreplica.yaml b/charts/kube-prometheus-stack/templates/prometheus/serviceperreplica.yaml new file mode 100644 index 000000000..1a5543362 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/serviceperreplica.yaml @@ -0,0 +1,46 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled }} +{{- $count := .Values.prometheus.prometheusSpec.replicas | int -}} +{{- $serviceValues := .Values.prometheus.servicePerReplica -}} +apiVersion: v1 +kind: List +metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-serviceperreplica + namespace: {{ template "kube-prometheus-stack.namespace" . }} +items: +{{- range $i, $e := until $count }} + - apiVersion: v1 + kind: Service + metadata: + name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} + namespace: {{ template "kube-prometheus-stack.namespace" $ }} + labels: + app: {{ include "kube-prometheus-stack.name" $ }}-prometheus +{{ include "kube-prometheus-stack.labels" $ | indent 8 }} + {{- if $serviceValues.annotations }} + annotations: +{{ toYaml $serviceValues.annotations | indent 8 }} + {{- end }} + spec: + {{- if $serviceValues.clusterIP }} + clusterIP: {{ $serviceValues.clusterIP }} + {{- end }} + {{- if $serviceValues.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $cidr := $serviceValues.loadBalancerSourceRanges }} + - {{ $cidr }} + {{- end }} + {{- end }} + ports: + - name: {{ $.Values.prometheus.prometheusSpec.portName }} + {{- if eq $serviceValues.type "NodePort" }} + nodePort: {{ $serviceValues.nodePort }} + {{- end }} + port: {{ $serviceValues.port }} + targetPort: {{ $serviceValues.targetPort }} + selector: + app: prometheus + prometheus: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus + statefulset.kubernetes.io/pod-name: prometheus-{{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} + type: "{{ $serviceValues.type }}" +{{- end }} +{{- end }} diff --git a/charts/kube-prometheus-stack/templates/prometheus/storageclass.yaml b/charts/kube-prometheus-stack/templates/prometheus/storageclass.yaml new file mode 100644 index 000000000..1f2a77d03 --- /dev/null +++ b/charts/kube-prometheus-stack/templates/prometheus/storageclass.yaml @@ -0,0 +1,14 @@ +{{- if .Values.prometheus.prometheusSpec.storageClass.enabled }} +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: {{ template "kube-prometheus-stack.fullname" . }}-server + labels: + app: {{ template "kube-prometheus-stack.name" . }}-server + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +provisioner: kubernetes.io/no-provisioner +volumeBindingMode: WaitForFirstConsumer +reclaimPolicy: Delete +{{- end }} diff --git a/charts/kube-prometheus-stack/values.yaml b/charts/kube-prometheus-stack/values.yaml new file mode 100644 index 000000000..c8cac465c --- /dev/null +++ b/charts/kube-prometheus-stack/values.yaml @@ -0,0 +1,2302 @@ +# Default values for kube-prometheus-stack. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +## Provide a name in place of kube-prometheus-stack for `app:` labels +## +nameOverride: "" + +## Override the deployment namespace +## +namespaceOverride: "" + +## Provide a k8s version to auto dashboard import script example: kubeTargetVersionOverride: 1.16.6 +## +kubeTargetVersionOverride: "" + +## Provide a name to substitute for the full names of resources +## +fullnameOverride: "" + +## Labels to apply to all resources +## +commonLabels: {} +# scmhash: abc123 +# myLabel: aakkmd + +## Create default rules for monitoring the cluster +## +defaultRules: + create: false + rules: + alertmanager: true + etcd: true + general: true + k8s: true + kubeApiserver: true + kubeApiserverAvailability: true + kubeApiserverError: true + kubeApiserverSlos: true + kubelet: true + kubePrometheusGeneral: true + kubePrometheusNodeAlerting: true + kubePrometheusNodeRecording: true + kubernetesAbsent: true + kubernetesApps: true + kubernetesResources: true + kubernetesStorage: true + kubernetesSystem: true + kubeScheduler: true + kubeStateMetrics: true + network: true + node: true + prometheus: true + prometheusOperator: true + time: true + + ## Runbook url prefix for default rules + runbookUrl: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md# + ## Reduce app namespace alert scope + appNamespacesTarget: ".*" + + ## Labels for default rules + labels: {} + ## Annotations for default rules + annotations: {} + + ## Additional labels for PrometheusRule alerts + additionalRuleLabels: {} + +## Deprecated way to provide custom recording or alerting rules to be deployed into the cluster. +## +# additionalPrometheusRules: [] +# - name: my-rule-file +# groups: +# - name: my_group +# rules: +# - record: my_record +# expr: 100 * my_record + +## Provide custom recording or alerting rules to be deployed into the cluster. +## +# additionalPrometheusRulesMap: {} +# rule-name: +# groups: +# - name: my_group +# rules: +# - record: my_record +# expr: 100 * my_record + +additionalPrometheusRulesMap: {} + # - rule-name: CustomAlert + # groups: + # - name: CouchDBInstances + # rules: + # - alert: CouchDBDownAlert + # expr: absent(couchdb_httpd_up) or couchdb_httpd_up < 1 + # for: 0m + # annotations: + # summary: CouchDB Node Down + +## +global: + rbac: + create: true + pspEnabled: true + pspAnnotations: {} + ## Specify pod annotations + ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor + ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp + ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl + ## + # seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' + # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' + # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' + + ## Reference to one or more secrets to be used when pulling images + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## + imagePullSecrets: [] + # - name: "image-pull-secret" + +## Configuration for alertmanager +## ref: https://prometheus.io/docs/alerting/alertmanager/ +## +alertmanager: + + ## Deploy alertmanager + ## + enabled: true + + ## Api that prometheus will use to communicate with alertmanager. Possible values are v1, v2 + ## + apiVersion: v2 + + ## Service account for Alertmanager to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + create: true + name: "" + annotations: {} + + ## Configure pod disruption budgets for Alertmanager + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget + ## This configuration is immutable once created and will require the PDB to be deleted to be changed + ## https://github.com/kubernetes/kubernetes/issues/45398 + ## + podDisruptionBudget: + enabled: false + minAvailable: 1 + maxUnavailable: "" + + ## Alertmanager configuration directives + ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file + ## https://prometheus.io/webtools/alerting/routing-tree-editor/ + ## + # config: + # global: + # resolve_timeout: 5m + # route: + # group_by: ['job'] + # group_wait: 30s + # group_interval: 5m + # repeat_interval: 12h + # receiver: 'null' + # routes: + # - match: + # alertname: Watchdog + # receiver: 'null' + # receivers: + # - name: 'null' + + # config: + # global: + # resolve_timeout: 5m + # route: + # group_by: [Alertname] + # receiver: couchdb-alert + # group_by: ['job'] + # group_wait: 30s + # group_interval: 5m + # repeat_interval: 12h + # receiver: 'couchdb-alert' + # routes: + # - match: + # alertname: DeadMansSwitch + # receiver: 'couchdb-alert' + # receivers: + # - name: couchdb-alert + # email_configs: + # - to: + # from: + # smarthost: + # auth_username: + # auth_identity: + # auth_password: + + + ## Pass the Alertmanager configuration directives through Helm's templating + ## engine. If the Alertmanager configuration contains Alertmanager templates, + ## they'll need to be properly escaped so that they are not interpreted by + ## Helm + ## ref: https://helm.sh/docs/developing_charts/#using-the-tpl-function + ## https://prometheus.io/docs/alerting/configuration/#tmpl_string + ## https://prometheus.io/docs/alerting/notifications/ + ## https://prometheus.io/docs/alerting/notification_examples/ + tplConfig: false + + ## Alertmanager template files to format alerts + ## ref: https://prometheus.io/docs/alerting/notifications/ + ## https://prometheus.io/docs/alerting/notification_examples/ + ## + templateFiles: {} + # + ## An example template: + # template_1.tmpl: |- + # {{ define "cluster" }}{{ .ExternalURL | reReplaceAll ".*alertmanager\\.(.*)" "$1" }}{{ end }} + # + # {{ define "slack.myorg.text" }} + # {{- $root := . -}} + # {{ range .Alerts }} + # *Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}` + # *Cluster:* {{ template "cluster" $root }} + # *Description:* {{ .Annotations.description }} + # *Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:> + # *Runbook:* <{{ .Annotations.runbook }}|:spiral_note_pad:> + # *Details:* + # {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ .Value }}` + # {{ end }} + # {{ end }} + # {{ end }} + + ingress: + enabled: true + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2 + kubernetes.io/ingress.class: nginx + ingressClassName: nginx + + labels: {} + + ## Hosts must be provided if Ingress is enabled. + ## + hosts: [] + # - alertmanager.domain.com + + ## Paths to use for ingress rules - one path should match the alertmanagerSpec.routePrefix + ## + paths: + - /alertmanager(/|$)(.*) + + ## TLS configuration for Alertmanager Ingress + ## Secret must be manually created in the namespace + ## + tls: [] + # - secretName: alertmanager-general-tls + # hosts: + # - alertmanager.example.com + + ## Configuration for Alertmanager secret + ## + secret: + annotations: {} + + ## Configuration for creating an Ingress that will map to each Alertmanager replica service + ## alertmanager.servicePerReplica must be enabled + ## + ingressPerReplica: + enabled: false + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: {} + labels: {} + + ## Final form of the hostname for each per replica ingress is + ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }} + ## + ## Prefix for the per replica ingress that will have `-$replicaNumber` + ## appended to the end + hostPrefix: "" + ## Domain that will be used for the per replica ingress + hostDomain: "" + + ## Paths to use for ingress rules + ## + paths: [] + # - / + + ## Secret name containing the TLS certificate for alertmanager per replica ingress + ## Secret must be manually created in the namespace + tlsSecretName: "" + + ## Separated secret for each per replica Ingress. Can be used together with cert-manager + ## + tlsSecretPerReplica: + enabled: false + ## Final form of the secret for each per replica ingress is + ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }} + ## + prefix: "alertmanager" + + ## Configuration for Alertmanager service + ## + service: + annotations: {} + labels: {} + clusterIP: "" + + ## Port for Alertmanager Service to listen on + ## + port: 9093 + ## To be used with a proxy extraContainer port + ## + targetPort: 9093 + ## Port to expose on each node + ## Only used if service.type is 'NodePort' + ## + nodePort: 30903 + ## List of IP addresses at which the Prometheus server service is available + ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips + ## + + ## Additional ports to open for Alertmanager service + additionalPorts: [] + + externalIPs: [] + loadBalancerIP: "" + loadBalancerSourceRanges: [] + ## Service type + ## + type: ClusterIP + + ## Configuration for creating a separate Service for each statefulset Alertmanager replica + ## + servicePerReplica: + enabled: false + annotations: {} + + ## Port for Alertmanager Service per replica to listen on + ## + port: 9093 + + ## To be used with a proxy extraContainer port + targetPort: 9093 + + ## Port to expose on each node + ## Only used if servicePerReplica.type is 'NodePort' + ## + nodePort: 30904 + + ## Loadbalancer source IP ranges + ## Only used if servicePerReplica.type is "loadbalancer" + loadBalancerSourceRanges: [] + ## Service type + ## + type: ClusterIP + + ## If true, create a serviceMonitor for alertmanager + ## + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + selfMonitor: true + + ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. + scheme: "" + + ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. + ## Of type: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#tlsconfig + tlsConfig: {} + + bearerTokenFile: + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## Settings affecting alertmanagerSpec + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec + ## + alertmanagerSpec: + ## Standard object’s metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata + ## Metadata Labels and Annotations gets propagated to the Alertmanager pods. + ## + podMetadata: {} + + ## Image of Alertmanager + ## + image: + repository: quay.io/prometheus/alertmanager + tag: v0.21.0 + sha: "" + + ## If true then the user will be responsible to provide a secret with alertmanager configuration + ## So when true the config part will be ignored (including templateFiles) and the one in the secret will be used + ## + useExistingSecret: false + + ## Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the + ## Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/. + ## + secrets: [] + + ## ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. + ## The ConfigMaps are mounted into /etc/alertmanager/configmaps/. + ## + configMaps: [] + + ## ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains configuration for + ## this Alertmanager instance. Defaults to 'alertmanager-' The secret is mounted into /etc/alertmanager/config. + ## + # configSecret: + + ## AlertmanagerConfigs to be selected to merge and configure Alertmanager with. + ## + alertmanagerConfigSelector: {} + ## Example which selects all alertmanagerConfig resources + ## with label "alertconfig" with values any of "example-config" or "example-config-2" + # alertmanagerConfigSelector: + # matchExpressions: + # - key: alertconfig + # operator: In + # values: + # - example-config + # - example-config-2 + # + ## Example which selects all alertmanagerConfig resources with label "role" set to "example-config" + # alertmanagerConfigSelector: + # matchLabels: + # role: example-config + + ## Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. + ## + alertmanagerConfigNamespaceSelector: {} + ## Example which selects all namespaces + ## with label "alertmanagerconfig" with values any of "example-namespace" or "example-namespace-2" + # alertmanagerConfigNamespaceSelector: + # matchExpressions: + # - key: alertmanagerconfig + # operator: In + # values: + # - example-namespace + # - example-namespace-2 + + ## Example which selects all namespaces with label "alertmanagerconfig" set to "enabled" + # alertmanagerConfigNamespaceSelector: + # matchLabels: + # alertmanagerconfig: enabled + + ## Define Log Format + # Use logfmt (default) or json logging + logFormat: logfmt + + ## Log level for Alertmanager to be configured with. + ## + logLevel: info + + ## Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the + ## running cluster equal to the expected size. + replicas: 1 + + ## Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression + ## [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours). + ## + retention: 120h + + ## Storage is the definition of how storage will be used by the Alertmanager instances. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md + ## + storage: + volumeClaimTemplate: + metadata: + name: "pvc" + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: meep-prometheus-alertmanager + resources: + requests: + storage: 5Gi + selector: + matchLabels: + app: prometheus-alertmanager + + persistentVolume: + enabled: true + accessModes: + - ReadWriteOnce + size: 5Gi + reclaimPolicy: Retain + location: "/prometheus/alertmanager" + + ## The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. string false + ## + externalUrl: + + ## The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, + ## but the server serves requests under a different route prefix. For example for use with kubectl proxy. + ## + routePrefix: / + + ## If set to true all actions on the underlying managed objects are not going to be performed, except for delete actions. + ## + paused: false + + ## Define which Nodes the Pods are scheduled on. + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Define resources requests and limits for single Pods. + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## + resources: {} + # requests: + # memory: 400Mi + + ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. + ## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. + ## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. + ## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. + ## + podAntiAffinity: "" + + ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity. + ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone + ## + podAntiAffinityTopologyKey: kubernetes.io/hostname + + ## Assign custom affinity rules to the alertmanager instance + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + ## + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: kubernetes.io/e2e-az-name + # operator: In + # values: + # - e2e-az1 + # - e2e-az2 + + ## If specified, the pod's tolerations. + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + + ## SecurityContext holds pod-level security attributes and common container settings. + ## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + ## + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + fsGroup: 2000 + + ## ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. + ## Note this is only for the Alertmanager UI, not the gossip communication. + ## + listenLocal: false + + ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. + ## + containers: [] + + # Additional volumes on the output StatefulSet definition. + volumes: [] + + # Additional VolumeMounts on the output StatefulSet definition. + volumeMounts: [] + + ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes + ## (permissions, dir tree) on mounted volumes before starting prometheus + initContainers: [] + + ## Priority class assigned to the Pods + ## + priorityClassName: "" + + ## AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster. + ## + additionalPeers: [] + + ## PortName to use for Alert Manager. + ## + portName: "web" + + ## ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918 + ## + clusterAdvertiseAddress: false + + ## ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. + ## Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each. + forceEnableClusterMode: false + +## Component scraping the kube api server +## +kubeApiServer: + enabled: true + tlsConfig: + serverName: kubernetes + insecureSkipVerify: false + + ## If your API endpoint address is not reachable (as in AKS) you can replace it with the kubernetes service + ## + relabelings: [] + # - sourceLabels: + # - __meta_kubernetes_namespace + # - __meta_kubernetes_service_name + # - __meta_kubernetes_endpoint_port_name + # action: keep + # regex: default;kubernetes;https + # - targetLabel: __address__ + # replacement: kubernetes.default.svc:443 + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + jobLabel: component + selector: + matchLabels: + component: apiserver + provider: kubernetes + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + +## Component scraping the kubelet and kubelet-hosted cAdvisor +## +kubelet: + enabled: true + namespace: kube-system + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## Enable scraping the kubelet over https. For requirements to enable this see + ## https://github.com/prometheus-operator/prometheus-operator/issues/926 + ## + https: true + + ## Enable scraping /metrics/cadvisor from kubelet's service + ## + cAdvisor: true + + ## Enable scraping /metrics/probes from kubelet's service + ## + probes: true + + ## Enable scraping /metrics/resource from kubelet's service + ## This is disabled by default because container metrics are already exposed by cAdvisor + ## + resource: false + # From kubernetes 1.18, /metrics/resource/v1alpha1 renamed to /metrics/resource + resourcePath: "/metrics/resource/v1alpha1" + ## Metric relabellings to apply to samples before ingestion + ## + cAdvisorMetricRelabelings: [] + # - sourceLabels: [__name__, image] + # separator: ; + # regex: container_([a-z_]+); + # replacement: $1 + # action: drop + # - sourceLabels: [__name__] + # separator: ; + # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) + # replacement: $1 + # action: drop + + ## Metric relabellings to apply to samples before ingestion + ## + probesMetricRelabelings: [] + # - sourceLabels: [__name__, image] + # separator: ; + # regex: container_([a-z_]+); + # replacement: $1 + # action: drop + # - sourceLabels: [__name__] + # separator: ; + # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) + # replacement: $1 + # action: drop + + # relabel configs to apply to samples before ingestion. + # metrics_path is required to match upstream rules and charts + ## + cAdvisorRelabelings: + - sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + probesRelabelings: + - sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + resourceRelabelings: + - sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + metricRelabelings: [] + # - sourceLabels: [__name__, image] + # separator: ; + # regex: container_([a-z_]+); + # replacement: $1 + # action: drop + # - sourceLabels: [__name__] + # separator: ; + # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) + # replacement: $1 + # action: drop + + # relabel configs to apply to samples before ingestion. + # metrics_path is required to match upstream rules and charts + ## + relabelings: + - sourceLabels: [__metrics_path__] + targetLabel: metrics_path + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +## Component scraping the kube controller manager +## +kubeControllerManager: + enabled: true + + ## If your kube controller manager is not deployed as a pod, specify IPs it can be found on + ## + endpoints: [] + # - 10.141.4.22 + # - 10.141.4.23 + # - 10.141.4.24 + + ## If using kubeControllerManager.endpoints only the port and targetPort are used + ## + service: + port: 10252 + targetPort: 10252 + # selector: + # component: kube-controller-manager + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## Enable scraping kube-controller-manager over https. + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + + # Skip TLS certificate validation when scraping + insecureSkipVerify: null + + # Name of the server to use when validating TLS certificate + serverName: null + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +## Component scraping coreDns. Use either this or kubeDns +## +coreDns: + enabled: true + service: + port: 9153 + targetPort: 9153 + # selector: + # k8s-app: kube-dns + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +## Component scraping kubeDns. Use either this or coreDns +## +kubeDns: + enabled: false + service: + dnsmasq: + port: 10054 + targetPort: 10054 + skydns: + port: 10055 + targetPort: 10055 + # selector: + # k8s-app: kube-dns + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + dnsmasqMetricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + dnsmasqRelabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +## Component scraping etcd +## +kubeEtcd: + enabled: true + + ## If your etcd is not deployed as a pod, specify IPs it can be found on + ## + endpoints: [] + # - 10.141.4.22 + # - 10.141.4.23 + # - 10.141.4.24 + + ## Etcd service. If using kubeEtcd.endpoints only the port and targetPort are used + ## + service: + port: 2379 + targetPort: 2379 + # selector: + # component: etcd + + ## Configure secure access to the etcd cluster by loading a secret into prometheus and + ## specifying security configuration below. For example, with a secret named etcd-client-cert + ## + ## serviceMonitor: + ## scheme: https + ## insecureSkipVerify: false + ## serverName: localhost + ## caFile: /etc/prometheus/secrets/etcd-client-cert/etcd-ca + ## certFile: /etc/prometheus/secrets/etcd-client-cert/etcd-client + ## keyFile: /etc/prometheus/secrets/etcd-client-cert/etcd-client-key + ## + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + scheme: http + insecureSkipVerify: false + serverName: "" + caFile: "" + certFile: "" + keyFile: "" + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + +## Component scraping kube scheduler +## +kubeScheduler: + enabled: true + + ## If your kube scheduler is not deployed as a pod, specify IPs it can be found on + ## + endpoints: [] + # - 10.141.4.22 + # - 10.141.4.23 + # - 10.141.4.24 + + ## If using kubeScheduler.endpoints only the port and targetPort are used + ## + service: + port: 10251 + targetPort: 10251 + # selector: + # component: kube-scheduler + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + ## Enable scraping kube-scheduler over https. + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + + ## Skip TLS certificate validation when scraping + insecureSkipVerify: null + + ## Name of the server to use when validating TLS certificate + serverName: null + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + +## Component scraping kube proxy +## +kubeProxy: + enabled: true + + ## If your kube proxy is not deployed as a pod, specify IPs it can be found on + ## + endpoints: [] + # - 10.141.4.22 + # - 10.141.4.23 + # - 10.141.4.24 + + service: + port: 10249 + targetPort: 10249 + # selector: + # k8s-app: kube-proxy + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## Enable scraping kube-proxy over https. + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + +## Component scraping kube state metrics +## +kubeStateMetrics: + enabled: false + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +## Configuration for kube-state-metrics subchart +## +kube-state-metrics: + namespaceOverride: "" + rbac: + create: true + podSecurityPolicy: + enabled: true + +## Deploy node exporter as a daemonset to all nodes +## +nodeExporter: + enabled: true + + ## Use the value configured in prometheus-node-exporter.podLabels + ## + jobLabel: jobLabel + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + + ## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used. + ## + scrapeTimeout: "" + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - sourceLabels: [__name__] + # separator: ; + # regex: ^node_mountstats_nfs_(event|operations|transport)_.+ + # replacement: $1 + # action: drop + + ## relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + +## Configuration for prometheus-node-exporter subchart +## +prometheus-node-exporter: + namespaceOverride: "" + podLabels: + ## Add the 'node-exporter' label to be used by serviceMonitor to match standard common usage in rules and grafana dashboards + ## + jobLabel: node-exporter + extraArgs: + - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+)($|/) + - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$ + +## Manages Prometheus and Alertmanager components +## +prometheusOperator: + enabled: true + + # Prometheus-Operator v0.39.0 and later support TLS natively. + tls: + enabled: true + # Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants + tlsMinVersion: VersionTLS13 + + ## Admission webhook support for PrometheusRules resources added in Prometheus Operator 0.30 can be enabled to prevent incorrectly formatted + ## rules from making their way into prometheus and potentially preventing the container from starting + admissionWebhooks: + failurePolicy: Fail + enabled: true + ## A PEM encoded CA bundle which will be used to validate the webhook's server certificate. + ## If unspecified, system trust roots on the apiserver are used. + caBundle: "" + ## If enabled, generate a self-signed certificate, then patch the webhook configurations with the generated data. + ## On chart upgrades (or if the secret exists) the cert will not be re-generated. You can use this to provide your own + ## certs ahead of time if you wish. + ## + patch: + enabled: true + image: + repository: jettech/kube-webhook-certgen + tag: v1.5.0 + sha: "" + pullPolicy: IfNotPresent + resources: {} + ## Provide a priority class name to the webhook patching job + ## + priorityClassName: "" + podAnnotations: {} + nodeSelector: {} + affinity: {} + tolerations: [] + # Use certmanager to generate webhook certs + certManager: + enabled: false + # issuerRef: + # name: "issuer" + # kind: "ClusterIssuer" + + ## Namespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list). + ## This is mutually exclusive with denyNamespaces. Setting this to an empty object will disable the configuration + ## + namespaces: {} + # releaseNamespace: true + # additional: + # - kube-system + + ## Namespaces not to scope the interaction of the Prometheus Operator (deny list). + ## + denyNamespaces: [] + + ## Filter namespaces to look for prometheus-operator custom resources + ## + alertmanagerInstanceNamespaces: [] + prometheusInstanceNamespaces: [] + thanosRulerInstanceNamespaces: [] + + ## Service account for Alertmanager to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + create: true + name: "" + + ## Configuration for Prometheus operator service + ## + service: + annotations: {} + labels: {} + clusterIP: "" + + ## Port to expose on each node + ## Only used if service.type is 'NodePort' + ## + nodePort: 30080 + + nodePortTls: 30443 + + ## Additional ports to open for Prometheus service + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services + ## + additionalPorts: [] + + ## Loadbalancer IP + ## Only use if service.type is "loadbalancer" + ## + loadBalancerIP: "" + loadBalancerSourceRanges: [] + + ## Service type + ## NodePort, ClusterIP, loadbalancer + ## + type: ClusterIP + + ## List of IP addresses at which the Prometheus server service is available + ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips + ## + externalIPs: [] + + ## Labels to add to the operator pod + ## + podLabels: {} + + ## Annotations to add to the operator pod + ## + podAnnotations: {} + + ## Assign a PriorityClassName to pods if set + # priorityClassName: "" + + ## Define Log Format + # Use logfmt (default) or json logging + # logFormat: logfmt + + ## Decrease log verbosity to errors only + # logLevel: error + + ## If true, the operator will create and maintain a service for scraping kubelets + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/helm/prometheus-operator/README.md + ## + kubeletService: + enabled: true + namespace: kube-system + + ## Create a servicemonitor for the operator + ## + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + ## Scrape timeout. If not set, the Prometheus default scrape timeout is used. + scrapeTimeout: "" + selfMonitor: true + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## Resource limits & requests + ## + resources: {} + # limits: + # cpu: 200m + # memory: 200Mi + # requests: + # cpu: 100m + # memory: 100Mi + + # Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico), + # because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working + ## + hostNetwork: false + + ## Define which Nodes the Pods are scheduled on. + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Tolerations for use with node taints + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + + ## Assign custom affinity rules to the prometheus operator + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + ## + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: kubernetes.io/e2e-az-name + # operator: In + # values: + # - e2e-az1 + # - e2e-az2 + + securityContext: + fsGroup: 65534 + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 65534 + + ## Prometheus-operator image + ## + image: + repository: quay.io/prometheus-operator/prometheus-operator + tag: v0.45.0 + sha: "" + pullPolicy: IfNotPresent + + ## Prometheus-config-reloader image to use for config and rule reloading + ## + prometheusConfigReloaderImage: + repository: quay.io/prometheus-operator/prometheus-config-reloader + tag: v0.45.0 + sha: "" + + ## Set the prometheus config reloader side-car CPU limit + ## + configReloaderCpu: 100m + + ## Set the prometheus config reloader side-car memory limit + ## + configReloaderMemory: 50Mi + + ## Set a Field Selector to filter watched secrets + ## + secretFieldSelector: "" + +## Deploy a Prometheus instance +## +prometheus: + + enabled: true + + ## Annotations for Prometheus + ## + annotations: {} + + ## Service account for Prometheuses to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + create: true + name: "" + + # Service for thanos service discovery on sidecar + # Enable this can make Thanos Query can use + # `--store=dnssrv+_grpc._tcp.${kube-prometheus-stack.fullname}-thanos-discovery.${namespace}.svc.cluster.local` to discovery + # Thanos sidecar on prometheus nodes + # (Please remember to change ${kube-prometheus-stack.fullname} and ${namespace}. Not just copy and paste!) + thanosService: + enabled: false + annotations: {} + labels: {} + portName: grpc + port: 10901 + targetPort: "grpc" + + ## Configuration for Prometheus service + ## + service: + annotations: {} + labels: {} + clusterIP: "" + + ## Port for Prometheus Service to listen on + ## + port: 9090 + + ## To be used with a proxy extraContainer port + targetPort: 9090 + + ## List of IP addresses at which the Prometheus server service is available + ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips + ## + externalIPs: [] + + ## Port to expose on each node + ## Only used if service.type is 'NodePort' + ## + nodePort: 30090 + + ## Loadbalancer IP + ## Only use if service.type is "loadbalancer" + loadBalancerIP: "" + loadBalancerSourceRanges: [] + ## Service type + ## + type: ClusterIP + + sessionAffinity: "" + + ## Configuration for creating a separate Service for each statefulset Prometheus replica + ## + servicePerReplica: + enabled: false + annotations: {} + + ## Port for Prometheus Service per replica to listen on + ## + port: 9090 + + ## To be used with a proxy extraContainer port + targetPort: 9090 + + ## Port to expose on each node + ## Only used if servicePerReplica.type is 'NodePort' + ## + nodePort: 30091 + + ## Loadbalancer source IP ranges + ## Only used if servicePerReplica.type is "loadbalancer" + loadBalancerSourceRanges: [] + ## Service type + ## + type: ClusterIP + + ## Configure pod disruption budgets for Prometheus + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget + ## This configuration is immutable once created and will require the PDB to be deleted to be changed + ## https://github.com/kubernetes/kubernetes/issues/45398 + ## + podDisruptionBudget: + enabled: false + minAvailable: 1 + maxUnavailable: "" + + # Ingress exposes thanos sidecar outside the cluster + thanosIngress: + enabled: false + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: {} + labels: {} + servicePort: 10901 + ## Hosts must be provided if Ingress is enabled. + ## + hosts: [] + # - thanos-gateway.domain.com + + ## Paths to use for ingress rules + ## + paths: [] + # - / + + ## TLS configuration for Thanos Ingress + ## Secret must be manually created in the namespace + ## + tls: [] + # - secretName: thanos-gateway-tls + # hosts: + # - thanos-gateway.domain.com + + ingress: + enabled: true + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2 + kubernetes.io/ingress.class: nginx + ingressClassName: nginx + + labels: {} + + ## Hostnames. + ## Must be provided if Ingress is enabled. + ## + # hosts: + # - prometheus.domain.com + hosts: [] + + ## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix + ## + paths: + - /prometheus(/|$)(.*) + - /graph + + ## TLS configuration for Prometheus Ingress + ## Secret must be manually created in the namespace + ## + tls: [] + # - secretName: prometheus-general-tls + # hosts: + # - prometheus.example.com + + ## Configuration for creating an Ingress that will map to each Prometheus replica service + ## prometheus.servicePerReplica must be enabled + ## + ingressPerReplica: + enabled: false + + # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + # ingressClassName: nginx + + annotations: {} + labels: {} + + ## Final form of the hostname for each per replica ingress is + ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }} + ## + ## Prefix for the per replica ingress that will have `-$replicaNumber` + ## appended to the end + hostPrefix: "" + ## Domain that will be used for the per replica ingress + hostDomain: "" + + ## Paths to use for ingress rules + ## + paths: [] + # - / + + ## Secret name containing the TLS certificate for Prometheus per replica ingress + ## Secret must be manually created in the namespace + tlsSecretName: "" + + ## Separated secret for each per replica Ingress. Can be used together with cert-manager + ## + tlsSecretPerReplica: + enabled: false + ## Final form of the secret for each per replica ingress is + ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }} + ## + prefix: "prometheus" + + ## Configure additional options for default pod security policy for Prometheus + ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ + podSecurityPolicy: + allowedCapabilities: [] + + serviceMonitor: + ## Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + selfMonitor: true + + ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. + scheme: "" + + ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. + ## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#tlsconfig + tlsConfig: {} + + bearerTokenFile: + + ## metric relabel configs to apply to samples before ingestion. + ## + metricRelabelings: [] + # - action: keep + # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + # sourceLabels: [__name__] + + # relabel configs to apply to samples before ingestion. + ## + relabelings: [] + # - sourceLabels: [__meta_kubernetes_pod_node_name] + # separator: ; + # regex: ^(.*)$ + # targetLabel: nodename + # replacement: $1 + # action: replace + + ## Settings affecting prometheusSpec + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## + prometheusSpec: + ## If true, pass --storage.tsdb.max-block-duration=2h to prometheus. This is already done if using Thanos + ## + disableCompaction: false + ## APIServerConfig + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#apiserverconfig + ## + apiserverConfig: {} + + ## Interval between consecutive scrapes. + ## Defaults to 30s. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/release-0.44/pkg/prometheus/promcfg.go#L180-L183 + ## + scrapeInterval: "" + + ## Number of seconds to wait for target to respond before erroring + ## + scrapeTimeout: "" + + ## Interval between consecutive evaluations. + ## + evaluationInterval: "" + + ## ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP. + ## + listenLocal: false + + ## EnableAdminAPI enables Prometheus the administrative HTTP API which includes functionality such as deleting time series. + ## This is disabled by default. + ## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis + ## + enableAdminAPI: false + + ## Image of Prometheus. + ## + image: + repository: quay.io/prometheus/prometheus + tag: v2.24.0 + sha: "" + + ## Tolerations for use with node taints + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + # - key: "key" + # operator: "Equal" + # value: "value" + # effect: "NoSchedule" + + ## Alertmanagers to which alerts will be sent + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerendpoints + ## + ## Default configuration will connect to the alertmanager deployed as part of this release + ## + alertingEndpoints: [] + # - name: "" + # namespace: "" + # port: http + # scheme: http + # pathPrefix: "" + # tlsConfig: {} + # bearerTokenFile: "" + # apiVersion: v2 + + ## External labels to add to any time series or alerts when communicating with external systems + ## + externalLabels: {} + + ## Name of the external label used to denote replica name + ## + replicaExternalLabelName: "" + + ## If true, the Operator won't add the external label used to denote replica name + ## + replicaExternalLabelNameClear: false + + ## Name of the external label used to denote Prometheus instance name + ## + prometheusExternalLabelName: "" + + ## If true, the Operator won't add the external label used to denote Prometheus instance name + ## + prometheusExternalLabelNameClear: false + + ## External URL at which Prometheus will be reachable. + ## + externalUrl: "" + + ## Define which Nodes the Pods are scheduled on. + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + + ## Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. + ## The Secrets are mounted into /etc/prometheus/secrets/. Secrets changes after initial creation of a Prometheus object are not + ## reflected in the running Pods. To change the secrets mounted into the Prometheus Pods, the object must be deleted and recreated + ## with the new list of secrets. + ## + secrets: [] + + ## ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. + ## The ConfigMaps are mounted into /etc/prometheus/configmaps/. + ## + configMaps: [] + + ## QuerySpec defines the query command line flags when starting Prometheus. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#queryspec + ## + query: {} + + ## Namespaces to be selected for PrometheusRules discovery. + ## If nil, select own namespace. Namespaces to be selected for ServiceMonitor discovery. + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + ruleNamespaceSelector: {} + + ## If true, a nil or {} value for prometheus.prometheusSpec.ruleSelector will cause the + ## prometheus resource to be created with selectors based on values in the helm deployment, + ## which will also match the PrometheusRule resources created + ## + ruleSelectorNilUsesHelmValues: true + + ## PrometheusRules to be selected for target discovery. + ## If {}, select all ServiceMonitors + ## + ruleSelector: {} + ## Example which select all prometheusrules resources + ## with label "prometheus" with values any of "example-rules" or "example-rules-2" + # ruleSelector: + # matchExpressions: + # - key: prometheus + # operator: In + # values: + # - example-rules + # - example-rules-2 + # + ## Example which select all prometheusrules resources with label "role" set to "example-rules" + # ruleSelector: + # matchLabels: + # role: example-rules + + ## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the + ## prometheus resource to be created with selectors based on values in the helm deployment, + ## which will also match the servicemonitors created + ## + serviceMonitorSelectorNilUsesHelmValues: false + + ## ServiceMonitors to be selected for target discovery. + ## If {}, select all ServiceMonitors + ## + serviceMonitorSelector: {} + ## Example which selects ServiceMonitors with label "prometheus" set to "somelabel" + # serviceMonitorSelector: + # matchLabels: + # prometheus: somelabel + + ## Namespaces to be selected for ServiceMonitor discovery. + ## + serviceMonitorNamespaceSelector: {} + ## Example which selects ServiceMonitors in namespaces with label "prometheus" set to "somelabel" + # serviceMonitorNamespaceSelector: + # matchLabels: + # prometheus: somelabel + + ## If true, a nil or {} value for prometheus.prometheusSpec.podMonitorSelector will cause the + ## prometheus resource to be created with selectors based on values in the helm deployment, + ## which will also match the podmonitors created + ## + podMonitorSelectorNilUsesHelmValues: true + + ## PodMonitors to be selected for target discovery. + ## If {}, select all PodMonitors + ## + podMonitorSelector: {} + ## Example which selects PodMonitors with label "prometheus" set to "somelabel" + # podMonitorSelector: + # matchLabels: + # prometheus: somelabel + + ## Namespaces to be selected for PodMonitor discovery. + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + podMonitorNamespaceSelector: {} + + ## If true, a nil or {} value for prometheus.prometheusSpec.probeSelector will cause the + ## prometheus resource to be created with selectors based on values in the helm deployment, + ## which will also match the probes created + ## + probeSelectorNilUsesHelmValues: true + + ## Probes to be selected for target discovery. + ## If {}, select all Probes + ## + probeSelector: {} + ## Example which selects Probes with label "prometheus" set to "somelabel" + # probeSelector: + # matchLabels: + # prometheus: somelabel + + ## Namespaces to be selected for Probe discovery. + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + probeNamespaceSelector: {} + + ## How long to retain metrics + ## + retention: 10d + + ## Maximum size of metrics + ## + retentionSize: "" + + ## Enable compression of the write-ahead log using Snappy. + ## + walCompression: false + + ## If true, the Operator won't process any Prometheus configuration changes + ## + paused: false + + ## Number of replicas of each shard to deploy for a Prometheus deployment. + ## Number of replicas multiplied by shards is the total number of Pods created. + ## + replicas: 1 + + ## EXPERIMENTAL: Number of shards to distribute targets onto. + ## Number of replicas multiplied by shards is the total number of Pods created. + ## Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. + ## Increasing shards will not reshard data either but it will continue to be available from the same instances. + ## To query globally use Thanos sidecar and Thanos querier or remote write data to a central location. + ## Sharding is done on the content of the `__address__` target meta-label. + ## + shards: 1 + + ## Log level for Prometheus be configured in + ## + logLevel: info + + ## Log format for Prometheus be configured in + ## + logFormat: logfmt + + ## Prefix used to register routes, overriding externalUrl route. + ## Useful for proxies that rewrite URLs. + ## + routePrefix: / + + ## Standard object’s metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata + ## Metadata Labels and Annotations gets propagated to the prometheus pods. + ## + podMetadata: {} + # labels: + # app: prometheus + # k8s-app: prometheus + + ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. + ## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. + ## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. + ## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. + podAntiAffinity: "" + + ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity. + ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone + ## + podAntiAffinityTopologyKey: kubernetes.io/hostname + + ## Assign custom affinity rules to the prometheus instance + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + ## + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: kubernetes.io/e2e-az-name + # operator: In + # values: + # - e2e-az1 + # - e2e-az2 + + ## The remote_read spec configuration for Prometheus. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotereadspec + remoteRead: [] + # - url: http://remote1/read + + ## The remote_write spec configuration for Prometheus. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotewritespec + remoteWrite: [] + # - url: http://remote1/push + + ## Enable/Disable Grafana dashboards provisioning for prometheus remote write feature + remoteWriteDashboards: false + + ## Resource limits & requests + ## + resources: {} + # requests: + # memory: 400Mi + + ## Prometheus StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md + ## + storageSpec: + volumeClaimTemplate: + metadata: + name: "pvc" + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: meep-prometheus-server + resources: + requests: + storage: 10Gi + selector: + matchLabels: + app: prometheus-server + + storageClass: + enabled: false + + persistentVolume: + enabled: true + accessModes: + - ReadWriteOnce + size: 10Gi + reclaimPolicy: Retain + location: "/prometheus/server" + + ## Using tmpfs volume + ## + # emptyDir: + # medium: Memory + + # Additional volumes on the output StatefulSet definition. + volumes: [] + + # Additional VolumeMounts on the output StatefulSet definition. + volumeMounts: [] + + ## AdditionalScrapeConfigs allows specifying additional Prometheus scrape configurations. Scrape configurations + ## are appended to the configurations generated by the Prometheus Operator. Job configurations must have the form + ## as specified in the official Prometheus documentation: + ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are + ## appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility + ## to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible + ## scrape configs are going to break Prometheus after the upgrade. + ## + ## The scrape configuration example below will find master nodes, provided they have the name .*mst.*, relabel the + ## port to 2379 and allow etcd scraping provided it is running on all Kubernetes master nodes + ## + additionalScrapeConfigs: + - job_name: default/meep-prometheus-couchdb-exporter/0 + honor_timestamps: true + scrape_interval: 1s + scrape_timeout: 1s + metrics_path: /metrics + scheme: http + relabel_configs: + - source_labels: [__meta_kubernetes_service_label_app] + separator: ; + regex: couchdb-exporter + replacement: $1 + action: keep + - source_labels: [__meta_kubernetes_service_label_release] + separator: ; + regex: meep-prometheus + replacement: $1 + action: keep + - source_labels: [__meta_kubernetes_endpoint_port_name] + separator: ; + regex: http + replacement: $1 + action: keep + - source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name] + separator: ; + regex: Node;(.*) + target_label: node + replacement: ${1} + action: replace + - source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name] + separator: ; + regex: Pod;(.*) + target_label: pod + replacement: ${1} + action: replace + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_pod_name] + separator: ; + regex: (.*) + target_label: pod + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_pod_container_name] + separator: ; + regex: (.*) + target_label: container + replacement: $1 + action: replace + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: job + replacement: ${1} + action: replace + - separator: ; + regex: (.*) + target_label: endpoint + replacement: http + action: replace + - source_labels: [__address__] + separator: ; + regex: (.*) + modulus: 1 + target_label: __tmp_hash + replacement: $1 + action: hashmod + - source_labels: [__tmp_hash] + separator: ; + regex: "0" + replacement: $1 + action: keep + kubernetes_sd_configs: + - role: endpoints + namespaces: + names: + - default + + ## If additional scrape configurations are already deployed in a single secret file you can use this section. + ## Expected values are the secret name and key + ## Cannot be used with additionalScrapeConfigs + additionalScrapeConfigsSecret: {} + # enabled: false + # name: + # key: + + ## additionalPrometheusSecretsAnnotations allows to add annotations to the kubernetes secret. This can be useful + ## when deploying via spinnaker to disable versioning on the secret, strategy.spinnaker.io/versioned: 'false' + additionalPrometheusSecretsAnnotations: {} + + ## AdditionalAlertManagerConfigs allows for manual configuration of alertmanager jobs in the form as specified + ## in the official Prometheus documentation https://prometheus.io/docs/prometheus/latest/configuration/configuration/#. + ## AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator. + ## As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this + ## feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release + ## notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade. + ## + additionalAlertManagerConfigs: [] + # - consul_sd_configs: + # - server: consul.dev.test:8500 + # scheme: http + # datacenter: dev + # tag_separator: ',' + # services: + # - metrics-prometheus-alertmanager + + ## AdditionalAlertRelabelConfigs allows specifying Prometheus alert relabel configurations. Alert relabel configurations specified are appended + ## to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the + ## official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. + ## As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the + ## possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel + ## configs are going to break Prometheus after the upgrade. + ## + additionalAlertRelabelConfigs: [] + # - separator: ; + # regex: prometheus_replica + # replacement: $1 + # action: labeldrop + + ## SecurityContext holds pod-level security attributes and common container settings. + ## This defaults to non root user with uid 1000 and gid 2000. + ## https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md + ## + securityContext: + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + fsGroup: 2000 + + ## Priority class assigned to the Pods + ## + priorityClassName: "" + + ## Thanos configuration allows configuring various aspects of a Prometheus server in a Thanos environment. + ## This section is experimental, it may change significantly without deprecation notice in any release. + ## This is experimental and may change significantly without backward compatibility in any release. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#thanosspec + ## + thanos: {} + + ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to a Prometheus pod. + ## if using proxy extraContainer update targetPort with proxy container port + containers: [] + + ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes + ## (permissions, dir tree) on mounted volumes before starting prometheus + initContainers: [] + + ## PortName to use for Prometheus. + ## + portName: "web" + + ## ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files + ## on the file system of the Prometheus container e.g. bearer token files. + arbitraryFSAccessThroughSMs: false + + ## OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceMonitor + ## or PodMonitor to true, this overrides honor_labels to false. + overrideHonorLabels: false + + ## OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. + overrideHonorTimestamps: false + + ## IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from the podmonitor and servicemonitor + ## configs, and they will only discover endpoints within their current namespace. Defaults to false. + ignoreNamespaceSelectors: false + + ## PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels. + ## Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair + prometheusRulesExcludedFromEnforce: false + + ## QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable, + ## and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such + ## as /dev/stdout to log querie information to the default Prometheus log stream. This is only available in versions + ## of Prometheus >= 2.16.0. For more details, see the Prometheus docs (https://prometheus.io/docs/guides/query-log/) + queryLogFile: false + + ## EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit + ## set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall + ## number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead. + enforcedSampleLimit: false + + ## AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental + ## in Prometheus so it may change in any upcoming release. + allowOverlappingBlocks: false + + additionalRulesForClusterRole: [] + # - apiGroups: [ "" ] + # resources: + # - nodes/proxy + # verbs: [ "get", "list", "watch" ] + + additionalServiceMonitors: [] + ## Name of the ServiceMonitor to create + ## + # - name: "" + + ## Additional labels to set used for the ServiceMonitorSelector. Together with standard labels from + ## the chart + ## + # additionalLabels: {} + + ## Service label for use in assembling a job name of the form