<artifactId>a1-med-client</artifactId>
<name>RIC A1 Mediator client</name>
<!-- Update to match submodule tag -->
- <version>1.0.4-SNAPSHOT</version>
+ <version>2.1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-Subproject commit 0b42dfc507b22b49669f360883a1cecaa50cda7b
+Subproject commit ccb4a69e473cab6db7e8d52a04f9b4922528e24f
<artifactId>app-mgr-client</artifactId>
<name>RIC App Manager client</name>
<!-- Update to match submodule tag -->
- <version>0.1.10-SNAPSHOT</version>
+ <version>0.3.3-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-Subproject commit 4703b1a7457cf072640adbc0f5487a0675f5b6d3
+Subproject commit aca8f3cfeaa7e6af5245c2f0370ef517254d62f2
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
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
----------
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
* 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
--------------------------
* 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
--------------------------
<groupId>org.o-ran-sc.ric.plt.e2mgr.client</groupId>
<artifactId>e2-mgr-client</artifactId>
<name>RIC E2 Manager client</name>
- <version>2.0.10-SNAPSHOT</version>
+ <version>3.0.3-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-Subproject commit bc966a778e96ab13590722c140489e8ef053a6f0
+Subproject commit 380b7a2a46087a054ebfac57f3dbf7949d318cc6
</repository>
</repositories>
<dependencies>
- <!-- xApps -->
<!-- Platform components -->
<dependency>
<groupId>org.o-ran-sc.ric.plt.a1med.client</groupId>
<artifactId>a1-med-client</artifactId>
- <version>1.0.4-SNAPSHOT</version>
+ <version>2.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.o-ran-sc.ric.plt.appmgr.client</groupId>
<artifactId>app-mgr-client</artifactId>
- <version>0.1.10-SNAPSHOT</version>
+ <version>0.3.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.o-ran-sc.ric.plt.e2mgr.client</groupId>
<artifactId>e2-mgr-client</artifactId>
- <version>2.0.10-SNAPSHOT</version>
+ <version>3.0.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.onap.portal.sdk</groupId>
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;
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)
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;
}
@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.")
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;
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;
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);
.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);
}
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);
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;
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());
}
}
@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<ConfigMetadata> entity = new HttpEntity<>(delConfig);
- ResponseEntity<Void> voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.DELETE, entity,
+ XAppConfig modConfig = new XAppConfig();
+ HttpEntity<XAppConfig> entity = new HttpEntity<>(modConfig);
+ ResponseEntity<Void> voidResponse = testRestTemplateAdminRole().exchange(uri, HttpMethod.PUT, entity,
Void.class);
Assertions.assertTrue(voidResponse.getStatusCode().is2xxSuccessful());
}
[
- {
- "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",