This python project generates a network topology according TAPI-Topology yang - v2.1.3.
Please note: The generator does not need to implement streaming or notification functions. The dependencies to tapi-notification and tapi-streaming were removed.
Each network-function is represented as TAPI-Node which exposes interfaces to other network-functions or to management systems.
Therefore the Network Topology can cover
Interface end-points of network-functions are represented as TAPI-Owned-Node-Edge-Points. TAPI-Links create a logical connection between TAPI-Owned-Node-Edge-Points of the same layer (or even more strict of the same layer-protocol-name).
All commands are executed form the directory of this README file.
sudo pip install jsonschema
Steps to import TAPI yang data models and O-RAN-SC extensions:
# TAPI v2.1.3 cd model mkdir yang cd yang git clone https://github.com/OpenNetworkingFoundation/TAPI.git cd TAPI git checkout v2.1.3 # O-RAN-SC extensions cd .. git clone "https://gerrit.o-ran-sc.org/r/scp/oam/modeling"
The generator consumes a json as input. The json defines the hierarchy of network-function types and its number of elements per parent.
Example:
{ "network": { "name": "Test network", "pattern": { "o-du":2, "o-ru":3 } } }
The resulting network will include 2 network-functions of type "o-du". Each "o-du" is connected to 3 network-function instances of type "o-ru".
network +-- o-du-1 | +-- o-ru-11 | +-- o-ru-12 | +-- o-ru-13 +-- o-du-2 +-- o-ru-21 +-- o-ru-22 +-- o-ru-23
python tapi_topology_generator.py config.json
The generated json file can be validated against the yang models using 'yanglint'.
yanglint -f json \ -p model/yang/modeling/data-model/yang/published/ietf \ -p model/yang/TAPI/YANG \ model/yang/modeling/data-model/yang/working/o-ran-sc/o-ran-sc-topology/o-ran-sc-topology*.yang \ model/yang/TAPI/YANG/*.yang \ output/tapi-common-operational.json