From 1520b25d5743df0d0d10e02fed7ff243ddbc6f4c Mon Sep 17 00:00:00 2001 From: Martin Skorupski Date: Tue, 10 Oct 2023 15:55:28 +0200 Subject: [PATCH] Define app config schema - configuration.schema.json added Issue-ID: OAM-351 Change-Id: Ie83461c040f4b1f977e818b5cf69fa03dc181768 Signed-off-by: Martin Skorupski --- .../model/jsonSchema/configuration.schema.json | 244 +++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 code/network-generator/model/jsonSchema/configuration.schema.json diff --git a/code/network-generator/model/jsonSchema/configuration.schema.json b/code/network-generator/model/jsonSchema/configuration.schema.json new file mode 100644 index 0000000..1e03a8f --- /dev/null +++ b/code/network-generator/model/jsonSchema/configuration.schema.json @@ -0,0 +1,244 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://highstreet-technologies.com/network-generator/configuration.schema.json", + "title": "Configuration", + "description": "This schema validates the initial configuration for the network generator application.", + "type": "object", + "required": [ + "network", + "output-folder", + "generation-tasks" + ], + "additionalProperties": false, + "properties": { + "network": { + "description": "Defines the network and its topology to be generated.", + "$ref": "#/$defs/network" + }, + "output-folder": { + "description":"The relative path (folder name only) of the directory, where the generated files are stored.", + "type": "string" + }, + "generation-tasks": { + "description": "Defines the files to be generated.", + "$ref": "#/$defs/generation-tasks" + } + }, + "$defs": { + "network": { + "title": "network", + "type": "object", + "required": [ + "name", + "pattern" + ], + "additionalProperties": false, + "properties": { + "name": { + "description": "The name as identification for humans. For the pattern explanation, please see: https://regex101.com/r/3ER25H/1", + "type": "string", + "pattern": "^[a-zA-Z]{1}[\\S]{0,254}$" + }, + "pattern": { + "description": "A description of the relations between O-RAN functions.", + "$ref": "#/$defs/pattern" + } + } + }, + "pattern": { + "description": "A description of the relations between O-RAN functions.", + "title": "pattern", + "type": "object", + "required": [ + "tower", + "smo", + "near-rt-ric", + "o-ran-cu", + "o-ran-du", + "o-ran-ru", + "nr-cell-du" + ], + "additionalProperties": false, + "properties": { + "tower": { + "description": "A 'tower' offers mounting positions of O-RUs.", + "title": "tower", + "type": "object", + "required": [ + "representation", + "cellAngle" + ], + "properties": { + "representation": { + "description": "A fixed value for information only.", + "type": "string", + "enum": [ + "hexagon" + ] + }, + "cellAngle": { + "description": "The area covered by an NRCellDU around the tower in grad.", + "type": "integer", + "minimum": 0, + "maximum": 360, + "exclusiveMinimum": true + } + } + }, + "smo": { + "description": "Definition of the relation to SMO children.", + "title": "Service Management and Orchestration", + "type": "object", + "required": [ + "five-g-core-count", + "near-rt-ric-spiral-radius", + "o-could-resource-pool-count" + ], + "properties": { + "five-g-core-count": { + "description": "The number of 5G-Cores controlled by SMO.", + "type": "integer", + "minimum": 0, + "maximum": 1 + }, + "near-rt-ric-spiral-radius": { + "description": "The spiral radius of hexagons within an hexagon grid defines the number of Near-RT-RICs and the geographical coverage of the SMO.", + "type": "integer", + "minimum": 0, + "maximum": 3 + }, + "o-could-resource-pool-count": { + "description": "Number of O-RAN O-Cloud resource pools managed by O2-controller of the SMO.", + "type": "integer", + "enum": [ + 1, + 7, + 19, + 37 + ] + } + } + }, + "near-rt-ric": { + "description": "Definition of the relation to Near-RT-Ric children.", + "title": "near-rt-ric", + "type": "object", + "required": [ + "o-ran-cu-spiral-radius" + ], + "properties": { + "o-ran-cu-spiral-radius": { + "description": "The spiral radius of hexagons within an hexagon grid defines the number of O-RAN CUs and the geographical coverage of the SMO.", + "type": "integer", + "minimum": 0, + "maximum": 3 + } + } + }, + "o-ran-cu": { + "description": "Definition of the relation to O-RAN-RU children.", + "title": "o-ran-cu", + "type": "object", + "required": [ + "tower-spiral-radius" + ], + "properties": { + "tower-spiral-radius": { + "description": "The spiral radius of hexagons within an hexagon grid defines the number of towers and the geographical coverage of the SMO.", + "type": "integer", + "minimum": 0, + "maximum": 3 + } + } + }, + "o-ran-du": { + "description": "Definition of the relation to O-RAN-DU children.", + "title": "o-ran-du", + "type": "object", + "required": [ + "fronthaul-gateway-count", + "o-ran-ru-count" + ], + "properties": { + "fronthaul-gateway-count": { + "description": "Number of fronthaul gateway connected to an O-RAN-DU.", + "type": "integer", + "minimum": 0, + "maximum": 1 + }, + "o-ran-ru-count": { + "description": "Number of O-RAN-RUs managed by an O-RAN-DU.", + "type": "integer", + "enum": [ + 1, + 7, + 19, + 37 + ] + } + } + }, + "o-ran-ru": { + "description": "Definition of the relation to O-RAN-RU children.", + "title": "o-ran-ru", + "type": "object", + "required": [ + "nr-cell-du-count" + ], + "properties": { + "nr-cell-du-count": { + "description": "Number of 3GPP:NRCellDUs managed by an O-RAN-RU.", + "type": "integer", + "enum": [ + 1, + 3 + ] + } + } + }, + "nr-cell-du": { + "description": "Definition of the relation to 3GPP:NRCellDU children.", + "title": "nr-cell-du", + "type": "object", + "required": [ + "sector-count" + ], + "properties": { + "sector-count": { + "description": "Number of sectors managed by an 3GPP:NRCellDUs.", + "type": "integer", + "enum": [ + 1, + 3 + ] + } + } + } + } + }, + "generation-tasks":{ + "title": "generation-tasks", + "type": "object", + "required": [ + "topology", + "svg", + "kml" + ], + "additionalProperties": false, + "properties": { + "topology": { + "description": "If true, an ietf-network-topology file will be generated.", + "type": "boolean" + }, + "svg": { + "description": "If true, a kml file will be generated.", + "type": "boolean" + }, + "kml": { + "description": "If true, a svg file will be generated.", + "type": "boolean" + } + } + } + } +} \ No newline at end of file -- 2.16.6