Implement handover areas in kml
[oam.git] / code / network-generator / network_generation / model / jsonSchema / configuration.schema.json
1 {
2   "$schema": "https://json-schema.org/draft/2020-12/schema",
3   "$id": "https://highstreet-technologies.com/network-generator/configuration.schema.json",
4   "title": "Configuration",
5   "description": "This schema validates the initial configuration for the network generator application.",
6   "type": "object",
7   "required": [
8     "network",
9     "output-folder",
10     "generation-tasks"
11   ],
12   "additionalProperties": false,
13   "properties": {
14     "network": {
15       "description": "Defines the network and its topology to be generated.",
16       "$ref": "#/$defs/network"
17     },
18     "output-folder": {
19       "description": "The relative path (folder name only) of the directory, where the generated files are stored.",
20       "type": "string"
21     },
22     "generation-tasks": {
23       "description": "Defines the files to be generated.",
24       "$ref": "#/$defs/generation-tasks"
25     }
26   },
27   "$defs": {
28     "network": {
29       "title": "network",
30       "type": "object",
31       "required": [
32         "name",
33         "center",
34         "pattern"
35       ],
36       "additionalProperties": false,
37       "properties": {
38         "name": {
39           "description": "The name as identification for humans. For the pattern explanation, please see: https://regex101.com/r/3ER25H/1",
40           "type": "string",
41           "pattern": "^[a-zA-Z]{1}[\\S]{0,254}$"
42         },
43         "center": {
44           "description": "Defines the geographical center of the Radio Access Network.",
45           "$ref": "#/$defs/geoLocation"
46         },
47         "pattern": {
48           "description": "A description of the relations between O-RAN Objects.",
49           "$ref": "#/$defs/pattern"
50         }
51       }
52     },
53     "geoLocation": {
54       "description": "Describes a geographical location.",
55       "title": "geoLocation",
56       "type": "object",
57       "required": [
58         "latitude",
59         "longitude",
60         "aboveMeanSeaLevel"
61       ],
62       "additionalProperties": false,
63       "properties": {
64         "latitude": {
65           "description": "The latitude of the geographical location in decimal degrees. Please note 0.00001° is about 1.11m.",
66           "type": "number",
67           "minimum": -90,
68           "maximum": 90
69         },
70         "longitude": {
71           "description": "The longitude of the geographical location in decimal degrees. Please note 0.00001° is about 1.11m.",
72           "type": "number",
73           "minimum": -180,
74           "maximum": 180
75         },
76         "aboveMeanSeaLevel": {
77           "description": "The height of the geographical location in meters.",
78           "type": "number",
79           "minimum": -20,
80           "maximum": 1000
81         }
82       }
83     },
84     "pattern": {
85       "description": "A description of the relations between O-RAN Objects.",
86       "title": "pattern",
87       "type": "object",
88       "required": [
89         "tower",
90         "smo",
91         "near-rt-ric",
92         "o-ran-cu",
93         "o-ran-du",
94         "o-ran-ru",
95         "nr-cell-du"
96       ],
97       "additionalProperties": false,
98       "properties": {
99         "tower": {
100           "description": "A 'tower' offers mounting positions of O-RUs.",
101           "title": "tower",
102           "type": "object",
103           "required": [
104             "representation"
105           ],
106           "properties": {
107             "representation": {
108               "description": "A fixed value for information only.",
109               "type": "string",
110               "enum": [
111                 "hexagon"
112               ]
113             }
114           }
115         },
116         "smo": {
117           "description": "Definition of the relation to SMO children.",
118           "title": "Service Management and Orchestration",
119           "type": "object",
120           "required": [
121             "five-g-core-count",
122             "near-rt-ric-spiral-radius",
123             "o-could-resource-pool-count"
124           ],
125           "properties": {
126             "five-g-core-count": {
127               "description": "The number of 5G-Cores controlled by SMO.",
128               "type": "integer",
129               "minimum": 0,
130               "maximum": 1
131             },
132             "near-rt-ric-spiral-radius": {
133               "description": "The spiral radius of hexagons within an hexagon grid defines the number of Near-RT-RICs and the geographical coverage of the SMO.",
134               "type": "integer",
135               "minimum": 0,
136               "maximum": 3
137             },
138             "o-could-resource-pool-count": {
139               "description": "Number of O-RAN O-Cloud resource pools managed by O2-controller of the SMO.",
140               "type": "integer",
141               "enum": [
142                 1,
143                 7,
144                 19,
145                 37
146               ]
147             }
148           }
149         },
150         "near-rt-ric": {
151           "description": "Definition of the relation to Near-RT-Ric children.",
152           "title": "near-rt-ric",
153           "type": "object",
154           "required": [
155             "o-ran-cu-spiral-radius"
156           ],
157           "properties": {
158             "o-ran-cu-spiral-radius": {
159               "description": "The spiral radius of hexagons within a hexagon grid defines the number of O-RAN CUs and the geographical coverage of the SMO.",
160               "type": "integer",
161               "minimum": 0,
162               "maximum": 3
163             }
164           }
165         },
166         "o-ran-cu": {
167           "description": "Definition of the relation to O-RAN-CU children.",
168           "title": "o-ran-cu",
169           "type": "object",
170           "required": [
171             "o-ran-du-spiral-radius"
172           ],
173           "properties": {
174             "o-ran-du-spiral-radius": {
175               "description": "The spiral radius of hexagons within a hexagon grid defines the number of O-RAN DUs and the geographical coverage of the SMO.",
176               "type": "integer",
177               "minimum": 0,
178               "maximum": 3
179             }
180           }
181         },
182         "o-ran-du": {
183           "description": "Definition of the relation to O-RAN-DU children.",
184           "title": "o-ran-du",
185           "type": "object",
186           "required": [
187             "tower-spiral-radius",
188             "fronthaul-gateway-count",
189             "o-ran-ru-count"
190           ],
191           "properties": {
192             "tower-spiral-radius": {
193               "description": "The spiral radius of hexagons within an hexagon grid defines the number of towers and the geographical coverage of the O-RAN-DU. This means that center tower offers the O-Cloud resource pool for the surrounding towers and its O-RAN-RUs.",
194               "type": "integer",
195               "minimum": 0,
196               "maximum": 3
197             },
198             "fronthaul-gateway-count": {
199               "description": "Number of fronthaul gateway connected to an O-RAN-DU.",
200               "type": "integer",
201               "minimum": 0,
202               "maximum": 1
203             },
204             "o-ran-ru-count": {
205               "description": "Number of O-RAN-RUs managed by an O-RAN-DU.",
206               "type": "integer",
207               "enum": [
208                 1,
209                 7,
210                 19,
211                 37
212               ]
213             }
214           }
215         },
216         "o-ran-ru": {
217           "description": "Definition of the relation to O-RAN-RU children.",
218           "title": "o-ran-ru",
219           "type": "object",
220           "required": [
221             "nr-cell-du-count"
222           ],
223           "properties": {
224             "nr-cell-du-count": {
225               "description": "Number of 3GPP:NRCellDUs managed by an O-RAN-RU.",
226               "type": "integer",
227               "enum": [
228                 1,
229                 3
230               ]
231             }
232           }
233         },
234         "nr-cell-du": {
235           "description": "Definition of the relation to 3GPP:NRCellDU children.",
236           "title": "nr-cell-du",
237           "type": "object",
238           "required": [
239             "sector-count",
240             "cell-angle",
241             "cellScaleFactorForHandoverArea",
242             "maxReach"
243           ],
244           "properties": {
245             "sector-count": {
246               "description": "Number of sectors managed by an 3GPP:NRCellDUs.",
247               "type": "integer",
248               "enum": [
249                 1,
250                 3
251               ]
252             },
253             "cell-angle": {
254               "description": "The area covered by an NRCellDU around the tower in grad.",
255               "type": "integer",
256               "minimum": 0,
257               "maximum": 360,
258               "exclusiveMinimum": 0
259             },
260             "cellScaleFactorForHandoverArea": {
261               "description": "A factor to increase the cell polygon for handover areas in procent [%]",
262               "type": "integer",
263               "minimum": 0,
264               "maximum": 50
265             },
266             "maxReach": {
267               "description": "The maximal distance a UE can reach the cell in meters. The value also defines the radius around a tower where UEs may select a NRCellDU of an O-RAN-RU mounted at this tower.",
268               "type": "integer",
269               "minimum": 15,
270               "maximum": 600
271             }
272           }
273         }
274       }
275     },
276     "generation-tasks": {
277       "title": "generation-tasks",
278       "type": "object",
279       "required": [
280         "topology",
281         "svg",
282         "kml"
283       ],
284       "additionalProperties": false,
285       "properties": {
286         "topology": {
287           "description": "If true, an ietf-network-topology file will be generated.",
288           "type": "boolean"
289         },
290         "svg": {
291           "description": "If true, a kml file will be generated.",
292           "type": "boolean"
293         },
294         "kml": {
295           "description": "If true, a svg file will be generated.",
296           "type": "boolean"
297         }
298       }
299     }
300   }
301 }