From 43e79e4a410e1cf377d344cae2c9a7a6e4806fe9 Mon Sep 17 00:00:00 2001 From: "Lott, Christopher (cl778h)" Date: Fri, 17 Jan 2020 10:57:43 -0500 Subject: [PATCH] Upgrade client API versions to R3 latest Upgrade A1 Mediator API and submodule to tag 2.1.0 Upgrade App Manager API and submodule to tag 0.3.3 Upgrade E2 Manager API and submodule to tag 3.0.3 Submodules pinned; using tags as listed above where possible Remove mock config data for ANR Change-Id: I7c7c70fb003c31fe18a24074563163a48a557b83 Signed-off-by: Lott, Christopher (cl778h) --- a1-med-client/pom.xml | 2 +- a1-med-client/ric-plt-a1 | 2 +- app-mgr-client/pom.xml | 2 +- app-mgr-client/ric-plt-appmgr | 2 +- docs/config-deploy.rst | 9 - docs/overview.rst | 13 - docs/release-notes.rst | 10 +- e2-mgr-client/pom.xml | 2 +- e2-mgr-client/ric-plt-e2mgr | 2 +- webapp-backend/pom.xml | 7 +- .../dashboard/controller/AppManagerController.java | 40 +- .../config/AppManagerMockConfiguration.java | 40 +- .../controller/AppManagerControllerTest.java | 25 +- webapp-frontend/src/assets/mockdata/config.json | 452 --------------------- 14 files changed, 43 insertions(+), 565 deletions(-) diff --git a/a1-med-client/pom.xml b/a1-med-client/pom.xml index 1400012b..5f28e667 100644 --- a/a1-med-client/pom.xml +++ b/a1-med-client/pom.xml @@ -32,7 +32,7 @@ limitations under the License. a1-med-client RIC A1 Mediator client - 1.0.4-SNAPSHOT + 2.1.0-SNAPSHOT UTF-8 UTF-8 diff --git a/a1-med-client/ric-plt-a1 b/a1-med-client/ric-plt-a1 index 0b42dfc5..ccb4a69e 160000 --- a/a1-med-client/ric-plt-a1 +++ b/a1-med-client/ric-plt-a1 @@ -1 +1 @@ -Subproject commit 0b42dfc507b22b49669f360883a1cecaa50cda7b +Subproject commit ccb4a69e473cab6db7e8d52a04f9b4922528e24f diff --git a/app-mgr-client/pom.xml b/app-mgr-client/pom.xml index ec7f56b0..341ab376 100644 --- a/app-mgr-client/pom.xml +++ b/app-mgr-client/pom.xml @@ -32,7 +32,7 @@ limitations under the License. app-mgr-client RIC App Manager client - 0.1.10-SNAPSHOT + 0.3.3-SNAPSHOT UTF-8 UTF-8 diff --git a/app-mgr-client/ric-plt-appmgr b/app-mgr-client/ric-plt-appmgr index 4703b1a7..aca8f3cf 160000 --- a/app-mgr-client/ric-plt-appmgr +++ b/app-mgr-client/ric-plt-appmgr @@ -1 +1 @@ -Subproject commit 4703b1a7457cf072640adbc0f5487a0675f5b6d3 +Subproject commit aca8f3cfeaa7e6af5245c2f0370ef517254d62f2 diff --git a/docs/config-deploy.rst b/docs/config-deploy.rst index bdadbe13..ddf164f9 100644 --- a/docs/config-deploy.rst +++ b/docs/config-deploy.rst @@ -46,15 +46,6 @@ like ``http://ricplt-entry/a1mediator`` A1 Mediator URL suffix. Default is the empty string. -``anrxapp.url.prefix`` - -ANR Application URL prefix. No useful default. Usually a service name -like ``http://ricxapp-entry/anr`` - -``anrxapp.url.suffix`` - -ANR Application URL suffix. Default is the empty string. - ``appmgr.url.prefix`` Application Manager URL prefix. No useful default. Usually a service diff --git a/docs/overview.rst b/docs/overview.rst index 2352587c..77e12209 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -58,19 +58,6 @@ configuring applications in the RIC. The Dashboard UI provides screens for these functions. -Automatic Neighbor Relation Application ---------------------------------------- - -The Dashboard interfaces with the Automatic Neighbor Relation (ANR) -application. This RIC application is accessed via HTTP/REST requests -using a client that is generated from an API specification published -by the ANR team. - -This RIC application discovers and manages the Neighbor Cell Relation -Table (NCRT). The Dashboard UI provides screens to view and modify -NCRT data. - - E2 Manager ---------- diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 39587c74..55202c86 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -5,7 +5,7 @@ RIC Dashboard Release Notes =========================== -Version 2.0.0, 26 Dec 2019 +Version 2.0.0, 20 Jan 2020 -------------------------- * Change application properties file to YAML format * Add mock list of RIC instances to application properties @@ -16,9 +16,9 @@ Version 2.0.0, 26 Dec 2019 * Add instance-selector service * Revise ac-xapp, app-mgr, caas-ingress, e2-mgr service to support multiple ric instances * Revise ac-xapp, app-control, catalog, caas-ingress, ran-control components to listen to the instance change -* Upgrade A1 Mediator API and submodule to tag 1.0.4 -* Upgrade App Manager API and submodule to tag 0.1.10 -* Upgrade E2 Manager API and submodule to tag 2.0.10 +* Upgrade A1 Mediator API and submodule to tag 2.1.0 +* Upgrade App Manager API and submodule to tag 0.3.3 +* Upgrade E2 Manager API and submodule to tag 3.0.3 Version 1.3.0, 26 Nov 2019 -------------------------- @@ -28,7 +28,7 @@ Version 1.3.0, 26 Nov 2019 * Silence many Sonar complaints * Revise license statements in documentation files * Revise stats screen to drop mock load, pendulum, reporting items -* Remove ANR xApp +* Remove ANR xApp and mock configuration Version 1.2.4, 24 Oct 2019 -------------------------- diff --git a/e2-mgr-client/pom.xml b/e2-mgr-client/pom.xml index ccc3b684..531bc105 100644 --- a/e2-mgr-client/pom.xml +++ b/e2-mgr-client/pom.xml @@ -31,7 +31,7 @@ limitations under the License. org.o-ran-sc.ric.plt.e2mgr.client e2-mgr-client RIC E2 Manager client - 2.0.10-SNAPSHOT + 3.0.3-SNAPSHOT UTF-8 UTF-8 diff --git a/e2-mgr-client/ric-plt-e2mgr b/e2-mgr-client/ric-plt-e2mgr index bc966a77..380b7a2a 160000 --- a/e2-mgr-client/ric-plt-e2mgr +++ b/e2-mgr-client/ric-plt-e2mgr @@ -1 +1 @@ -Subproject commit bc966a778e96ab13590722c140489e8ef053a6f0 +Subproject commit 380b7a2a46087a054ebfac57f3dbf7949d318cc6 diff --git a/webapp-backend/pom.xml b/webapp-backend/pom.xml index 7c3a2dd1..5c827ecb 100644 --- a/webapp-backend/pom.xml +++ b/webapp-backend/pom.xml @@ -42,22 +42,21 @@ limitations under the License. - org.o-ran-sc.ric.plt.a1med.client a1-med-client - 1.0.4-SNAPSHOT + 2.1.0-SNAPSHOT org.o-ran-sc.ric.plt.appmgr.client app-mgr-client - 0.1.10-SNAPSHOT + 0.3.3-SNAPSHOT org.o-ran-sc.ric.plt.e2mgr.client e2-mgr-client - 2.0.10-SNAPSHOT + 3.0.3-SNAPSHOT org.onap.portal.sdk diff --git a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AppManagerController.java b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AppManagerController.java index 2dcc7d50..0a9d0c80 100644 --- a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AppManagerController.java +++ b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AppManagerController.java @@ -28,10 +28,10 @@ import org.oransc.ric.plt.appmgr.client.api.XappApi; import org.oransc.ric.plt.appmgr.client.model.AllDeployableXapps; import org.oransc.ric.plt.appmgr.client.model.AllDeployedXapps; import org.oransc.ric.plt.appmgr.client.model.AllXappConfig; -import org.oransc.ric.plt.appmgr.client.model.ConfigMetadata; +import org.oransc.ric.plt.appmgr.client.model.ConfigValidationErrors; import org.oransc.ric.plt.appmgr.client.model.XAppConfig; -import org.oransc.ric.plt.appmgr.client.model.XAppInfo; import org.oransc.ric.plt.appmgr.client.model.Xapp; +import org.oransc.ric.plt.appmgr.client.model.XappDescriptor; import org.oransc.ric.portal.dashboard.DashboardApplication; import org.oransc.ric.portal.dashboard.DashboardConstants; import org.oransc.ric.portal.dashboard.config.AppManagerApiBuilder; @@ -136,35 +136,15 @@ public class AppManagerController { return appManagerApiBuilder.getXappApi(instanceKey).getAllXappConfig(); } - @ApiOperation(value = "Create XApp config.", response = XAppConfig.class) - @PostMapping(CONFIG_METHOD_PATH) - @Secured({ DashboardConstants.ROLE_ADMIN }) - public XAppConfig createXappConfig(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, - @RequestBody XAppConfig xAppConfig) { - logger.debug("createXappConfig instance {} config {}", instanceKey, xAppConfig); - return appManagerApiBuilder.getXappApi(instanceKey).createXappConfig(xAppConfig); - } - - @ApiOperation(value = "Modify XApp config.", response = XAppConfig.class) + @ApiOperation(value = "Modify XApp config.", response = ConfigValidationErrors.class) @PutMapping(CONFIG_METHOD_PATH) @Secured({ DashboardConstants.ROLE_ADMIN }) - public XAppConfig modifyXappConfig(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, - @RequestBody XAppConfig xAppConfig) { + public ConfigValidationErrors modifyXappConfig( + @PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, @RequestBody XAppConfig xAppConfig) { logger.debug("modifyXappConfig instance {} config {}", instanceKey, xAppConfig); return appManagerApiBuilder.getXappApi(instanceKey).modifyXappConfig(xAppConfig); } - @ApiOperation(value = "Delete XApp configuration.") - @DeleteMapping(CONFIG_METHOD_PATH + "/{" + PP_XAPP_NAME + "}") - @Secured({ DashboardConstants.ROLE_ADMIN }) - public void deleteXappConfig(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, - @RequestBody ConfigMetadata configMetadata, HttpServletResponse response) { - logger.debug("deleteXappConfig instance {} config {}", instanceKey, configMetadata); - XappApi api = appManagerApiBuilder.getXappApi(instanceKey); - api.deleteXappConfig(configMetadata); - response.setStatus(api.getApiClient().getStatusCode().value()); - } - @ApiOperation(value = "Returns a list of deployable xapps.", response = DashboardDeployableXapps.class) @GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + XAPPS_LIST_METHOD) @@ -172,12 +152,12 @@ public class AppManagerController { public DashboardDeployableXapps getAvailableXapps( @PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) { logger.debug("getAvailableXapps instance {}", instanceKey); - AllDeployableXapps appNames = appManagerApiBuilder.getXappApi(instanceKey).listAllDeployableXapps(); + AllDeployableXapps deployableXapps = appManagerApiBuilder.getXappApi(instanceKey).listAllXapps(); // Answer a collection of structure instead of string // because I expect the AppMgr to be extended with // additional properties for each one. DashboardDeployableXapps apps = new DashboardDeployableXapps(); - for (String n : appNames) + for (String n : deployableXapps) apps.add(new AppTransport(n)); return apps; } @@ -203,9 +183,9 @@ public class AppManagerController { @PostMapping(XAPPS_METHOD_PATH) @Secured({ DashboardConstants.ROLE_ADMIN }) public Xapp deployXapp(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, - @RequestBody XAppInfo appInfo) { - logger.debug("deployXapp instance {} info {}", instanceKey, appInfo); - return appManagerApiBuilder.getXappApi(instanceKey).deployXapp(appInfo); + @RequestBody XappDescriptor appDescriptor) { + logger.debug("deployXapp instance {} descriptor {}", instanceKey, appDescriptor); + return appManagerApiBuilder.getXappApi(instanceKey).deployXapp(appDescriptor); } @ApiOperation(value = "Undeploy an existing xapp.") diff --git a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/AppManagerMockConfiguration.java b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/AppManagerMockConfiguration.java index 3e27120c..36f6ff32 100644 --- a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/AppManagerMockConfiguration.java +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/config/AppManagerMockConfiguration.java @@ -25,7 +25,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.lang.invoke.MethodHandles; -import java.util.Arrays; import org.oransc.ric.plt.appmgr.client.api.HealthApi; import org.oransc.ric.plt.appmgr.client.api.XappApi; @@ -34,12 +33,15 @@ import org.oransc.ric.plt.appmgr.client.model.AllDeployableXapps; import org.oransc.ric.plt.appmgr.client.model.AllDeployedXapps; import org.oransc.ric.plt.appmgr.client.model.AllXappConfig; import org.oransc.ric.plt.appmgr.client.model.ConfigMetadata; +import org.oransc.ric.plt.appmgr.client.model.ConfigValidationError; +import org.oransc.ric.plt.appmgr.client.model.ConfigValidationErrors; +import org.oransc.ric.plt.appmgr.client.model.EventType; import org.oransc.ric.plt.appmgr.client.model.SubscriptionRequest; import org.oransc.ric.plt.appmgr.client.model.SubscriptionResponse; import org.oransc.ric.plt.appmgr.client.model.XAppConfig; -import org.oransc.ric.plt.appmgr.client.model.XAppInfo; import org.oransc.ric.plt.appmgr.client.model.Xapp; import org.oransc.ric.plt.appmgr.client.model.Xapp.StatusEnum; +import org.oransc.ric.plt.appmgr.client.model.XappDescriptor; import org.oransc.ric.plt.appmgr.client.model.XappInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,18 +98,15 @@ public class AppManagerMockConfiguration { logger.debug("Creating XappApi for instance {}", instanceKey); // Create instance-specific objects String[] appNames = { "AdmissionControl " + instanceKey, "UE Event Collector " + instanceKey }; - if (RICInstanceMockConfiguration.INSTANCE_KEY_1.equals(instanceKey)) { - appNames = Arrays.copyOf(appNames, appNames.length + 1); - appNames[appNames.length - 1] = "ANR " + instanceKey; - } final String configJson = " { \"config\" : \"example-" + instanceKey + "\"}"; - final String descriptorJson = " { \"descriptor\" : \"example-" + instanceKey + "\"}"; + final ConfigValidationErrors configValErrs = new ConfigValidationErrors(); + configValErrs.add(new ConfigValidationError().field("mock error")); final AllXappConfig allXappConfigs = new AllXappConfig(); final AllDeployableXapps deployableApps = new AllDeployableXapps(); final AllDeployedXapps deployedXapps = new AllDeployedXapps(); for (String n : appNames) { - ConfigMetadata metadata = new ConfigMetadata().configName("config-" + n).name(n).namespace("namespace"); - XAppConfig config = new XAppConfig().config(configJson).descriptor(descriptorJson).metadata(metadata); + ConfigMetadata metadata = new ConfigMetadata().xappName(n).namespace("namespace"); + XAppConfig config = new XAppConfig().config(configJson).metadata(metadata); allXappConfigs.add(config); deployableApps.add(n); Xapp xapp = new Xapp().name(n).version("version").status(StatusEnum.UNKNOWN); @@ -115,8 +114,7 @@ public class AppManagerMockConfiguration { .status(XappInstance.StatusEnum.RUNNING)); deployedXapps.add(xapp); } - final SubscriptionResponse subRes = new SubscriptionResponse().eventType(SubscriptionResponse.EventTypeEnum.ALL) - .id("subid").version(1); + final SubscriptionResponse subRes = new SubscriptionResponse().eventType(EventType.ALL).id("subid").version(1); // Mock the methods to return the instance-specific objects ApiClient mockClient = mock(ApiClient.class); when(mockClient.getStatusCode()).thenReturn(HttpStatus.OK); @@ -129,41 +127,27 @@ public class AppManagerMockConfiguration { } return allXappConfigs; }).when(mockApi).getAllXappConfig(); - doAnswer(inv -> { - if (delayMs > 0) { - logger.debug("createXappConfig sleeping {}", delayMs); - Thread.sleep(delayMs); - } - return allXappConfigs.get(0); - }).when(mockApi).createXappConfig(any(XAppConfig.class)); doAnswer(inv -> { if (delayMs > 0) { logger.debug("modifyXappConfig sleeping {}", delayMs); Thread.sleep(delayMs); } - return allXappConfigs.get(0); + return configValErrs; }).when(mockApi).modifyXappConfig(any(XAppConfig.class)); - doAnswer(inv -> { - if (delayMs > 0) { - logger.debug("deleteXappConfig sleeping {}", delayMs); - Thread.sleep(delayMs); - } - return null; - }).when(mockApi).deleteXappConfig(any(ConfigMetadata.class)); doAnswer(inv -> { if (delayMs > 0) { logger.debug("deployXapp of {} sleeping {}", inv.getArgument(0), delayMs); Thread.sleep(delayMs); } return deployedXapps.get(0); - }).when(mockApi).deployXapp(any(XAppInfo.class)); + }).when(mockApi).deployXapp(any(XappDescriptor.class)); doAnswer(inv -> { if (delayMs > 0) { logger.debug("listAllDeployableXapps sleeping {}", delayMs); Thread.sleep(delayMs); } return deployableApps; - }).when(mockApi).listAllDeployableXapps(); + }).when(mockApi).listAllXapps(); doAnswer(inv -> { if (delayMs > 0) { logger.debug("getAllXapps sleeping {}", delayMs); diff --git a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/AppManagerControllerTest.java b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/AppManagerControllerTest.java index fcc0566d..52a383ec 100644 --- a/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/AppManagerControllerTest.java +++ b/webapp-backend/src/test/java/org/oransc/ric/portal/dashboard/controller/AppManagerControllerTest.java @@ -26,10 +26,9 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.oransc.ric.plt.appmgr.client.model.AllDeployedXapps; import org.oransc.ric.plt.appmgr.client.model.AllXappConfig; -import org.oransc.ric.plt.appmgr.client.model.ConfigMetadata; import org.oransc.ric.plt.appmgr.client.model.XAppConfig; -import org.oransc.ric.plt.appmgr.client.model.XAppInfo; import org.oransc.ric.plt.appmgr.client.model.Xapp; +import org.oransc.ric.plt.appmgr.client.model.XappDescriptor; import org.oransc.ric.portal.dashboard.DashboardConstants; import org.oransc.ric.portal.dashboard.config.RICInstanceMockConfiguration; import org.oransc.ric.portal.dashboard.model.DashboardDeployableXapps; @@ -103,8 +102,8 @@ public class AppManagerControllerTest extends AbstractControllerTest { URI uri = buildUri(null, AppManagerController.CONTROLLER_PATH, DashboardConstants.RIC_INSTANCE_KEY, RICInstanceMockConfiguration.INSTANCE_KEY_1, AppManagerController.XAPPS_METHOD); logger.info("Invoking {}", uri); - XAppInfo info = new XAppInfo(); - Xapp app = testRestTemplateAdminRole().postForObject(uri, info, Xapp.class); + XappDescriptor descr = new XappDescriptor(); + Xapp app = testRestTemplateAdminRole().postForObject(uri, descr, Xapp.class); Assertions.assertFalse(app.getName().isEmpty()); } @@ -128,23 +127,13 @@ public class AppManagerControllerTest extends AbstractControllerTest { } @Test - public void createConfigTest() { + public void modifyConfigTest() { URI uri = buildUri(null, AppManagerController.CONTROLLER_PATH, DashboardConstants.RIC_INSTANCE_KEY, RICInstanceMockConfiguration.INSTANCE_KEY_1, AppManagerController.CONFIG_METHOD); logger.info("Invoking {}", uri); - XAppConfig newConfig = new XAppConfig(); - XAppConfig response = testRestTemplateAdminRole().postForObject(uri, newConfig, XAppConfig.class); - Assertions.assertNotNull(response.getConfig()); - } - - @Test - public void deleteConfigTest() { - URI uri = buildUri(null, AppManagerController.CONTROLLER_PATH, DashboardConstants.RIC_INSTANCE_KEY, - RICInstanceMockConfiguration.INSTANCE_KEY_1, AppManagerController.CONFIG_METHOD, "app"); - logger.info("Invoking {}", uri); - ConfigMetadata delConfig = new ConfigMetadata(); - HttpEntity entity = new HttpEntity<>(delConfig); - ResponseEntity voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.DELETE, entity, + XAppConfig modConfig = new XAppConfig(); + HttpEntity entity = new HttpEntity<>(modConfig); + ResponseEntity voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.PUT, entity, Void.class); Assertions.assertTrue(voidResponse.getStatusCode().is2xxSuccessful()); } diff --git a/webapp-frontend/src/assets/mockdata/config.json b/webapp-frontend/src/assets/mockdata/config.json index 255b3fe7..eb397423 100644 --- a/webapp-frontend/src/assets/mockdata/config.json +++ b/webapp-frontend/src/assets/mockdata/config.json @@ -1,456 +1,4 @@ [ - { - "metadata": { - "name": "Automatic Neighbor Relation", - "configName": "anr-appconfig", - "namespace": "ricxapp" - }, - "descriptor": { - "$id": "http://example.com/root.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": {}, - "properties": { - "controls": { - "$id": "#/properties/controls", - "properties": { - "active": { - "$id": "#/properties/controls/properties/active", - "default": false, - "examples": [ - true - ], - "title": "The Active Schema", - "type": "boolean" - }, - "interfaceId": { - "$id": "#/properties/controls/properties/interfaceId", - "properties": { - "globalENBId": { - "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId", - "properties": { - "bits": { - "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId/properties/bits", - "default": 0, - "examples": [ - 28 - ], - "title": "The Bits Schema", - "maximum": 1024, - "type": "integer" - }, - "id": { - "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId/properties/id", - "default": 0, - "examples": [ - 202251 - ], - "title": "The Id Schema", - "type": "integer" - }, - "plmnid": { - "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId/properties/plmnid", - "default": "", - "examples": [ - "310150" - ], - "pattern": "^(.*)$", - "title": "The Plmnid Schema", - "type": "string" - } - }, - "required": [ - "plmnid", - "id", - "bits" - ], - "title": "The Globalenbid Schema", - "type": "object" - } - }, - "required": [ - "globalENBId" - ], - "title": "The Interfaceid Schema", - "type": "object" - }, - "subscription": { - "$id": "#/properties/controls/properties/subscription", - "properties": { - "retries": { - "$id": "#/properties/controls/properties/subscription/properties/retries", - "default": 0, - "examples": [ - 1 - ], - "title": "The Retries Schema", - "type": "integer" - }, - "retryto": { - "$id": "#/properties/controls/properties/subscription/properties/retryto", - "default": 0, - "examples": [ - 2 - ], - "title": "The Retryto Schema", - "type": "integer" - } - }, - "required": [ - "retries", - "retryto" - ], - "title": "The Subscription Schema", - "type": "object" - } - }, - "required": [ - "active", - "subscription", - "interfaceId" - ], - "title": "The Controls Schema", - "type": "object" - }, - "db": { - "$id": "#/properties/db", - "properties": { - "host": { - "$id": "#/properties/db/properties/host", - "default": "", - "examples": [ - "localhost" - ], - "pattern": "^(.*)$", - "title": "The Host Schema", - "type": "string" - }, - "namespaces": { - "$id": "#/properties/db/properties/namespaces", - "items": { - "$id": "#/properties/db/properties/namespaces/items", - "default": "", - "examples": [ - "sdl", - "rnib" - ], - "pattern": "^(.*)$", - "title": "The Items Schema", - "type": "string" - }, - "title": "The Namespaces Schema", - "type": "array" - }, - "port": { - "$id": "#/properties/db/properties/port", - "default": 0, - "examples": [ - 6379 - ], - "title": "The Port Schema", - "type": "integer" - } - }, - "required": [ - "host", - "port", - "namespaces" - ], - "title": "The Db Schema", - "type": "object" - }, - "local": { - "$id": "#/properties/local", - "properties": { - "host": { - "$id": "#/properties/local/properties/host", - "default": "", - "examples": [ - ":8080" - ], - "pattern": "^(.*)$", - "title": "The Host Schema", - "type": "string" - } - }, - "required": [ - "host" - ], - "title": "The Local Schema", - "type": "object" - }, - "logger": { - "$id": "#/properties/logger", - "properties": { - "level": { - "$id": "#/properties/logger/properties/level", - "default": 0, - "examples": [ - 3 - ], - "title": "The Level Schema", - "type": "integer" - } - }, - "required": [ - "level" - ], - "title": "The Logger Schema", - "type": "object" - }, - "metrics": { - "$id": "#/properties/metrics", - "items": { - "$id": "#/properties/metrics/items", - "properties": { - "description": { - "$id": "#/properties/metrics/items/properties/description", - "default": "", - "examples": [ - "The total number of UE context creation events" - ], - "pattern": "^(.*)$", - "title": "The Description Schema", - "type": "string" - }, - "enabled": { - "$id": "#/properties/metrics/items/properties/enabled", - "default": false, - "examples": [ - true - ], - "title": "The Enabled Schema", - "type": "boolean" - }, - "name": { - "$id": "#/properties/metrics/items/properties/name", - "default": "", - "examples": [ - "UEContextCreated" - ], - "pattern": "^(.*)$", - "title": "The Name Schema", - "type": "string" - }, - "type": { - "$id": "#/properties/metrics/items/properties/type", - "default": "", - "examples": [ - "counter" - ], - "pattern": "^(.*)$", - "title": "The Type Schema", - "type": "string" - } - }, - "required": [ - "name", - "type", - "enabled", - "description" - ], - "title": "The Items Schema", - "type": "object" - }, - "title": "The Metrics Schema", - "type": "array" - }, - "rmr": { - "$id": "#/properties/rmr", - "properties": { - "maxSize": { - "$id": "#/properties/rmr/properties/maxSize", - "default": 0, - "examples": [ - 2072 - ], - "title": "The Maxsize Schema", - "type": "integer" - }, - "numWorkers": { - "$id": "#/properties/rmr/properties/numWorkers", - "default": 0, - "examples": [ - 1 - ], - "title": "The Numworkers Schema", - "type": "integer" - }, - "protPort": { - "$id": "#/properties/rmr/properties/protPort", - "default": "", - "examples": [ - "tcp:4560" - ], - "pattern": "^(.*)$", - "title": "The Protport Schema", - "type": "string" - }, - "rxMessages": { - "$id": "#/properties/rmr/properties/rxMessages", - "items": { - "$id": "#/properties/rmr/properties/rxMessages/items", - "default": "", - "examples": [ - "RIC_SUB_RESP", - "RIC_SUB_FAILURE", - "RIC_SUB_DEL_RESP", - "RIC_SUB_DEL_FAILURE", - "RIC_INDICATION" - ], - "pattern": "^(.*)$", - "title": "The Items Schema", - "type": "string" - }, - "title": "The Rxmessages Schema", - "type": "array" - }, - "txMessages": { - "$id": "#/properties/rmr/properties/txMessages", - "items": { - "$id": "#/properties/rmr/properties/txMessages/items", - "default": "", - "examples": [ - "RIC_SUB_REQ", - "RIC_SUB_DEL_REQ" - ], - "pattern": "^(.*)$", - "title": "The Items Schema", - "type": "string" - }, - "title": "The Txmessages Schema", - "type": "array" - } - }, - "required": [ - "protPort", - "maxSize", - "numWorkers", - "txMessages", - "rxMessages" - ], - "title": "The Rmr Schema", - "type": "object" - } - }, - "required": [ - "local", - "logger", - "rmr", - "db", - "controls", - "metrics" - ], - "title": "The Root Schema", - "type": "object" - }, - "config": { - "controls": { - "active": true, - "interfaceId": { - "globalENBId": { - "bits": 28, - "id": 202251, - "plmnid": "310150" - } - }, - "subscription": { - "retries": 1, - "retryto": 2 - } - }, - "db": { - "host": "localhost", - "namespaces": [ - "sdl", - "rnib" - ], - "port": 6379 - }, - "local": { - "host": ":8080" - }, - "logger": { - "level": 3 - }, - "metrics": [ - { - "description": "The total number of UE context creation events", - "enabled": true, - "name": "UEContextCreated", - "type": "counter" - }, - { - "description": "The total number of UE context release events", - "enabled": true, - "name": "UEContextReleased", - "type": "counter" - } - ], - "rmr": { - "maxSize": 2072, - "numWorkers": 1, - "protPort": "tcp:4560", - "rxMessages": [ - "RIC_SUB_RESP", - "RIC_SUB_FAILURE", - "RIC_SUB_DEL_RESP", - "RIC_SUB_DEL_FAILURE", - "RIC_INDICATION" - ], - "txMessages": [ - "RIC_SUB_REQ", - "RIC_SUB_DEL_REQ" - ] - } - }, - "layout": [ - { - "key": "controls.active", - "title": "Active" - }, - { - "key": "controls.interfaceId.globalENBId", - "title": "Global ENB Id" - }, - { - "type": "flex", - "flex-flow": "row wrap", - "items": [ - { - "key": "controls.interfaceId.globalENBId.plmnid", - "title": "Plmn Id" - }, - { - "key": "controls.interfaceId.globalENBId.id", - "title": "Id" - - }, - { - "key": "controls.interfaceId.globalENBId.bits", - "title": "Bits" - } - ] - }, - { - "key": "controls.subscription", - "title": "Subscription" - }, - { - "type": "flex", - "flex-flow": "row wrap", - "items": [ - { - "key": "controls.subscription.retries", - "title": "Retries" - }, - { - "key": "controls.subscription.retryto", - "title": "Retry to" - } - ] - } - ] - }, { "metadata": { "name": "UE Event Collector", -- 2.16.6