--- /dev/null
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 AT&T Intellectual Property and Nokia
+ * %%
+ * 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.
+ * ========================LICENSE_END===================================
+ */
+
+import { Component, OnInit, Inject } from '@angular/core';
+import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
+import { AppMgrService } from '../services/app-mgr/app-mgr.service';
+import { ErrorDialogService } from '../services/ui/error-dialog.service';
+import { BehaviorSubject } from 'rxjs/BehaviorSubject';
+import { finalize } from 'rxjs/operators';
+
+
+@Component({
+ selector: 'rd-app-configuration',
+ templateUrl: './app-configuration.component.html',
+ styleUrls: ['./app-configuration.component.scss']
+})
+export class AppConfigurationComponent implements OnInit {
+
+ private loadingSubject = new BehaviorSubject<boolean>(false);
+ public loading$ = this.loadingSubject.asObservable();
+
+ constructor(
+ private dialogRef: MatDialogRef<AppConfigurationComponent>,
+ private appMgrService: AppMgrService,
+ private errorDiaglogService: ErrorDialogService,
+ @Inject(MAT_DIALOG_DATA) private data
+ ) { }
+
+ xappMetadata: any;
+ xappConfigSchema: any;
+ xappConfigData: any;
+ xappLayout:any;
+ ngOnInit() {
+ this.loadingSubject.next(true);
+ this.appMgrService.getConfig()
+ .pipe(
+ finalize(() => this.loadingSubject.next(false))
+ )
+ .subscribe(
+ (allConfig: any) => {
+ this.loadConfigForm(this.data.name, allConfig)
+ }
+ )
+ }
+
+ updateconfig(event) {
+ var config = {
+ metadata: this.xappMetadata,
+ descriptor: this.xappConfigSchema,
+ config: event,
+ layout: this.xappLayout
+ }
+ this.appMgrService.putConfig(config)
+ this.dialogRef.close();
+ }
+
+ loadConfigForm(name: string, allConfig: any) {
+ var xappConfig = allConfig.find(xapp => xapp.metadata.name == name)
+ if (xappConfig != null) {
+ this.xappMetadata = xappConfig.metadata
+ this.xappConfigSchema = xappConfig.descriptor;
+ this.xappConfigData = xappConfig.config;
+ this.xappLayout= xappConfig.layout;
+ } else {
+ this.errorDiaglogService.displayError("Cannot find configration data for " + name);
+ this.dialogRef.close();
+ }
+ }
+}
--- /dev/null
+[
+ {
+ "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",
+ "configName": "UEEC-appconfig",
+ "namespace": "ricxapp"
+ },
+ "descriptor": {
+ "definitions": {},
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://example.com/root.json",
+ "type": "object",
+ "title": "The Root Schema",
+ "required": [
+ "local",
+ "logger",
+ "rmr",
+ "db",
+ "controls",
+ "metrics"
+ ],
+ "properties": {
+ "local": {
+ "$id": "#/properties/local",
+ "type": "object",
+ "title": "The Local Schema",
+ "required": [
+ "host"
+ ],
+ "properties": {
+ "host": {
+ "$id": "#/properties/local/properties/host",
+ "type": "string",
+ "title": "The Host Schema",
+ "default": "",
+ "examples": [
+ ":8080"
+ ],
+ "pattern": "^(.*)$"
+ }
+ }
+ },
+ "logger": {
+ "$id": "#/properties/logger",
+ "type": "object",
+ "title": "The Logger Schema",
+ "required": [
+ "level"
+ ],
+ "properties": {
+ "level": {
+ "$id": "#/properties/logger/properties/level",
+ "type": "integer",
+ "title": "The Level Schema",
+ "default": 0,
+ "examples": [
+ 3
+ ]
+ }
+ }
+ },
+ "rmr": {
+ "$id": "#/properties/rmr",
+ "type": "object",
+ "title": "The Rmr Schema",
+ "required": [
+ "protPort",
+ "maxSize",
+ "numWorkers",
+ "txMessages",
+ "rxMessages"
+ ],
+ "properties": {
+ "protPort": {
+ "$id": "#/properties/rmr/properties/protPort",
+ "type": "string",
+ "title": "The Protport Schema",
+ "default": "",
+ "examples": [
+ "tcp:4560"
+ ],
+ "pattern": "^(.*)$"
+ },
+ "maxSize": {
+ "$id": "#/properties/rmr/properties/maxSize",
+ "type": "integer",
+ "title": "The Maxsize Schema",
+ "default": 0,
+ "examples": [
+ 2072
+ ]
+ },
+ "numWorkers": {
+ "$id": "#/properties/rmr/properties/numWorkers",
+ "type": "integer",
+ "title": "The Numworkers Schema",
+ "default": 0,
+ "examples": [
+ 1
+ ]
+ },
+ "txMessages": {
+ "$id": "#/properties/rmr/properties/txMessages",
+ "type": "array",
+ "title": "The Txmessages Schema",
+ "items": {
+ "$id": "#/properties/rmr/properties/txMessages/items",
+ "type": "string",
+ "title": "The Items Schema",
+ "default": "",
+ "examples": [
+ "RIC_SUB_REQ",
+ "RIC_SUB_DEL_REQ"
+ ],
+ "pattern": "^(.*)$"
+ }
+ },
+ "rxMessages": {
+ "$id": "#/properties/rmr/properties/rxMessages",
+ "type": "array",
+ "title": "The Rxmessages Schema",
+ "items": {
+ "$id": "#/properties/rmr/properties/rxMessages/items",
+ "type": "string",
+ "title": "The Items Schema",
+ "default": "",
+ "examples": [
+ "RIC_SUB_RESP",
+ "RIC_SUB_FAILURE",
+ "RIC_SUB_DEL_RESP",
+ "RIC_SUB_DEL_FAILURE",
+ "RIC_INDICATION"
+ ],
+ "pattern": "^(.*)$"
+ }
+ }
+ }
+ },
+ "db": {
+ "$id": "#/properties/db",
+ "type": "object",
+ "title": "The Db Schema",
+ "required": [
+ "host",
+ "port",
+ "namespaces"
+ ],
+ "properties": {
+ "host": {
+ "$id": "#/properties/db/properties/host",
+ "type": "string",
+ "title": "The Host Schema",
+ "default": "",
+ "examples": [
+ "localhost"
+ ],
+ "pattern": "^(.*)$"
+ },
+ "port": {
+ "$id": "#/properties/db/properties/port",
+ "type": "integer",
+ "title": "The Port Schema",
+ "default": 0,
+ "examples": [
+ 6379
+ ]
+ },
+ "namespaces": {
+ "$id": "#/properties/db/properties/namespaces",
+ "type": "array",
+ "title": "The Namespaces Schema",
+ "items": {
+ "$id": "#/properties/db/properties/namespaces/items",
+ "type": "string",
+ "title": "The Items Schema",
+ "default": "",
+ "examples": [
+ "sdl",
+ "rnib"
+ ],
+ "pattern": "^(.*)$"
+ }
+ }
+ }
+ },
+ "controls": {
+ "$id": "#/properties/controls",
+ "type": "object",
+ "title": "The Controls Schema",
+ "required": [
+ "active",
+ "requestorId",
+ "ranFunctionId",
+ "ricActionId",
+ "interfaceId"
+ ],
+ "properties": {
+ "active": {
+ "$id": "#/properties/controls/properties/active",
+ "type": "boolean",
+ "title": "The Active Schema",
+ "default": false,
+ "examples": [
+ true
+ ]
+ },
+ "requestorId": {
+ "$id": "#/properties/controls/properties/requestorId",
+ "type": "integer",
+ "title": "The Requestorid Schema",
+ "default": 0,
+ "examples": [
+ 66
+ ]
+ },
+ "ranFunctionId": {
+ "$id": "#/properties/controls/properties/ranFunctionId",
+ "type": "integer",
+ "title": "The Ranfunctionid Schema",
+ "default": 0,
+ "examples": [
+ 1
+ ]
+ },
+ "ricActionId": {
+ "$id": "#/properties/controls/properties/ricActionId",
+ "type": "integer",
+ "title": "The Ricactionid Schema",
+ "default": 0,
+ "examples": [
+ 0
+ ]
+ },
+ "interfaceId": {
+ "$id": "#/properties/controls/properties/interfaceId",
+ "type": "object",
+ "title": "The Interfaceid Schema",
+ "required": [
+ "globalENBId"
+ ],
+ "properties": {
+ "globalENBId": {
+ "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId",
+ "type": "object",
+ "title": "The Globalenbid Schema",
+ "required": [
+ "plmnId",
+ "eNBId"
+ ],
+ "properties": {
+ "plmnId": {
+ "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId/properties/plmnId",
+ "type": "string",
+ "title": "The Plmnid Schema",
+ "default": "",
+ "examples": [
+ "43962"
+ ],
+ "pattern": "^(.*)$"
+ },
+ "eNBId": {
+ "$id": "#/properties/controls/properties/interfaceId/properties/globalENBId/properties/eNBId",
+ "type": "string",
+ "title": "The Enbid Schema",
+ "default": "",
+ "examples": [
+ "43962"
+ ],
+ "pattern": "^(.*)$"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "metrics": {
+ "$id": "#/properties/metrics",
+ "type": "array",
+ "title": "The Metrics Schema",
+ "items": {
+ "$id": "#/properties/metrics/items",
+ "type": "object",
+ "title": "The Items Schema",
+ "required": [
+ "name",
+ "type",
+ "enabled",
+ "description"
+ ],
+ "properties": {
+ "name": {
+ "$id": "#/properties/metrics/items/properties/name",
+ "type": "string",
+ "title": "The Name Schema",
+ "default": "",
+ "examples": [
+ "UEContextCreated"
+ ],
+ "pattern": "^(.*)$"
+ },
+ "type": {
+ "$id": "#/properties/metrics/items/properties/type",
+ "type": "string",
+ "title": "The Type Schema",
+ "default": "",
+ "examples": [
+ "counter"
+ ],
+ "pattern": "^(.*)$"
+ },
+ "enabled": {
+ "$id": "#/properties/metrics/items/properties/enabled",
+ "type": "boolean",
+ "title": "The Enabled Schema",
+ "default": false,
+ "examples": [
+ true
+ ]
+ },
+ "description": {
+ "$id": "#/properties/metrics/items/properties/description",
+ "type": "string",
+ "title": "The Description Schema",
+ "default": "",
+ "examples": [
+ "The total number of UE context creation events"
+ ],
+ "pattern": "^(.*)$"
+ }
+ }
+ }
+ }
+ }
+ },
+ "config": {
+ "local": {
+ "host": ":8080"
+ },
+ "logger": {
+ "level": 3
+ },
+ "rmr": {
+ "protPort": "tcp:4560",
+ "maxSize": 2072,
+ "numWorkers": 1,
+ "txMessages": [ "RIC_SUB_REQ", "RIC_SUB_DEL_REQ" ],
+ "rxMessages": [ "RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE", "RIC_INDICATION" ]
+ },
+ "db": {
+ "host": "localhost",
+ "port": 6379,
+ "namespaces": [ "sdl", "rnib" ]
+ },
+ "controls": {
+ "active": true,
+ "requestorId": 66,
+ "ranFunctionId": 1,
+ "ricActionId": 0,
+ "interfaceId": {
+ "globalENBId": {
+ "plmnId": "43962",
+ "eNBId": "43962"
+ }
+ }
+ },
+ "metrics": [
+ {
+ "name": "UEContextCreated",
+ "type": "counter",
+ "enabled": true,
+ "description": "The total number of UE context creation events"
+ },
+ {
+ "name": "UEContextReleased",
+ "type": "counter",
+ "enabled": true,
+ "description": "The total number of UE context release events"
+ }
+ ]
+ },
+ "layout": [
+ {
+ "key": "controls.active",
+ "title": "Active"
+ },
+ {
+ "key": "controls.requestorId",
+ "title": "Requestor Id"
+ },
+ {
+ "key": "controls.ranFunctionId",
+ "title": "RAN Function Id"
+ },
+ {
+ "key": "controls.ricActionId",
+ "title": "RIC Action Id"
+ },
+ {
+ "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.eNBId",
+ "title": "ENB Id"
+
+ }
+ ]
+ }
+ ]
+ }
+]
\ No newline at end of file