Developer Guide

Developer Guide Overview

In this guide, we explore the use of Topology & Inventory to manage the topology and inventory data in your network.

Introducing topology and inventory data

Topology and inventory data is the information that represents entities in a telecommunications network and the relationships between them that provide insight into a particular aspect of the network of importance to specific use cases. Topology and inventory data can be derived from inventory, configuration, or other data. Topology & Inventory is being updated autonomously based on changes in the network.

Topology & Inventory supports several topology and inventory domains, see the Data Models for details on the topology and inventory model. The understanding of the model is important to enable a user making queries on topology and inventory data. The entities are modeled as managed objects (found under the schema in the data dictionary) and grouped together in modules based on functionality. See Supported domains for the list of the topology and inventory domains currently supported in Topology & Inventory capability.

Concepts

The building blocks of the Topology & Inventory are domains, entities, and the relationships between each other. From a graph perspective, entities are the vertices and relationships are the edges. These two components are part of a subgraph, or the so-called domain. A relationship can go beyond a single domain, since it can happen that the two entities come from two separate ones. In this particular case, they have a cross-domain relationship.

Domain

A domain is a grouping of topology and inventory entities that handles topology and inventory data. Topology and inventory data is the information that represents entities in a telecommunications network and the relationships between them that provides insight into a particular aspect of the network of import to specific use cases. Topology and inventory data can be derived from inventory, configuration, or other data. Therefore, the topology and inventory model must define what the telecoms network entities and relationships are. More information can be found in Supported domains. The Topology Exposure and Inventory Management (TEIV) domain is the parent domain used for entities and relationships. This domain can be used in reading and querying topology and inventory data when the domain name of an entity or relationship is not known.

Entity

Entities are enabling the modelling and storage of complex network infrastructure and relationships. The following are two examples of the entities and their attributes from Topology & Inventory Data Models.

_images/sample-entities.svg

Relationship

It is a bi-directional connection between two entities, one of which is the originating side (A-side) and the other is the terminating side (B-side). The order of the sides matters since it defines the relationship itself which must be unique. A relationship between two entities is based on the effect that one has on the other. An entity can have one or multiple relationships which can be defined by the user. A possible relationship between ManagedElement and GNBDUFunction can be MANAGEDELEMENT_MANAGES_GNBDUFUNCTION.

Topology & Inventory models

The Topology & Inventory objects are managed and standardized using YANG models. These YANG models describe managed network entities and their attributes, while also providing information on the relations between the network entities. YANG data models are structured into modules and submodules. Management instance data is a graph of objects which have attributes (see the schema in the data models).

The Topology & Inventory Data Models includes: - Modules for each supported domain that describe the structure of the managed objects within it as well as any relationships between them. - Modules that describe cross-domain relationships. - Modules that define proprietary extensions and types used to describe the structure of objects and attributes within the domains.

The following sample diagram shows some managed objects and their relationships in the RAN domain.

_images/sample-object-relationships.svg

A direct relationship is a connection between two entities without any in-between entity and an indirect relationship contains at least one. NRCellDU has direct relationships with GNBDUFunction and NRSectorCarrier, while it also has indirect relationships with ManagedElement, AntennaCapability, and AntennaModule.

Supported domains

Domain

Description

RAN

This model contains the topology entities and relations in the RAN domain, which represents the functional capability of the deployed RAN that are relevant to rApps use cases.

EQUIPMENT

This model contains the topology entities and relations in the Equipment domain, which is modelled to understand the physical location of equipment such as antennas associated with a cell/carrier and their relevant properties, for example, tilt, max power, and so on.

OAM

This model contains the topology entities and relations in the O&M domain, which are intended to represent management systems and management interfaces.

REL_EQUIPMENT_RAN

This model contains the topology relations between Equipment and RAN.

REL_OAM_RAN

This model contains the topology relations between O&M and RAN.

Retrieving and using topology modules

Topology & Inventory provides APIs to enable users query module data that can be used to understand the existing topology and inventory model, parse the modules, and understand what objects are supported over the R1 interface, so adequate queries can be made on topology and inventory data.

The API endpoints returning lists support pagination. The default value for number of items returned is 500, which is also the upper limit.

Sample request to fetch a list of all modules:

GET https://<host>/topology-inventory/<API_VERSION>/schemas

To get a list of all modules for a specific domain, use a domain query parameter. For example, /schemas?domain=<domain>

Sample request to fetch a list of all modules related to the RAN domain:

GET https://<host>/topology-inventory/<API_VERSION>/schemas?domain=ran

Note: - Partial matches are also supported in the query parameter using the ’*’ symbol as a wild card. - If the specified domain does not exist, an empty list is returned.

To get a specific module, supply a module name in the path parameter. For example, /schemas/<name>/content

Sample request to fetch the module data for the o-ran-smo-teiv-ran module:

GET https://<host>/topology-inventory/<API_VERSION>/schemas/o-ran-smo-teiv-ran/content

Note: If the specified module does not exist, an INVALID_MODULE_NAME error is returned.

Reading and querying topology and inventory

Reading entities and relationships

To get a list of all entities with all properties in a specified domain name, use: > /domains/{domainName}/entities

Example: Get all entities in the RAN domain:

GET https://<host>/topology-inventory/<API_VERSION>/domains/RAN/entities

To get a list of all available entity types in a specified domain name, use: > /domains/{domainName}/entity-types

Example: Get all entity types in the RAN domain:

GET https://<host>/topology-inventory/<API_VERSION>/domains/RAN/entity-types

To get a list of all available relationship types in a specified domain name, use: > /domains/{domainName}/relationship-types

Example: Get all relationship types in the RAN domain:

GET https://<host>/topology-inventory/<API_VERSION>/domains/RAN/relationship-types

Querying entities and relationships

Use the targetFilter parameter to narrow down the fields to return. To filter the results which match a given criteria, use the scopeFilter. Think of it as an SQL statement, where the targetFilter is the SELECT, and the scopeFilter is the WHERE tag.

A detailed explanation about the targetFilter and scopeFilter parameters can be found in Supported filter options.

Example:

In this example, the user is only interested in NRCellDU entities. Moreover, the user only wants those records that have sourceIds containing “SubNetwork=Ireland”. These fields and filters can be defined in the request as follows:

Parameters: - targetFilter: /NRCellDU - scopeFilter: /sourceIds[contains(@item,’SubNetwork=Ireland’)]

GET https://<host>/topology-inventory/<API_VERSION>/domains/RAN?targetFilter=/NRCellDU&scopeFilter=/sourceIds[contains(@item,'SubNetwork=Ireland')]

Note: If the targetFilter is not used here, the result contains all entities and relationships that matches the condition in the RAN domain.