.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 .. Copyright (C) 2024 Nordix Foundation. All rights Reserved .. Copyright (C) 2024 OpenInfra Foundation Europe. All Rights Reserved Discover and Reconciliation Interface ##################################### Discover and Reconciliation Interface to enrich topology with data. Operations ========== .. _Ingestion Create: PUB ``ingestionCreate`` Operation --------------------------------- *Topology & Inventory entities and relationships can be created.* - Operation ID: ``Ingestion`` Operation on Topology Inventory and Exposure input topic. Message Topology CREATE ``ingestionCreate`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *Creates components in topology.* - Message ID: ``create`` - Content type: application/json CREATE Headers ^^^^^^^^^^^^^^ +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | Name | Type | Description | Value | Constraints | Notes | +================+========+===========================================+==========================+=================+===================+ | (root) | object | - | - | - | | **additional** | | | | | | | | **properties** | | | | | | | | **are allowed** | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_id | string | Unique identifier for the event. | - | - | - | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_source | string | Source of the CloudEvent. | - | | format | - | | | | | | | (`uri`) | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_type | string | | Event type. It can be one of | - | - | - | | | | | topology-inventory-ingestion-merge, | | | | | | | | topology-inventory-ingestion-delete, or | | | | | | | | topology-inventory-ingestion-create. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | content-type | string | | Content-type of the data contained | | const | - | - | | | | | within the cloud event. It is | | (`"application/json"`) | | | | | | | application/json. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_dataschema | string | | URI representing the schema of the data | - | | format | - | | | | | This references the event-specific yang | | | (`uri`) | | | | | | schema. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_time | string | Event timestamp. | - | | format | - | | | | | | | (`date-time`) | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_specversion | string | | The version of the CloudEvents | const (`"1.0"`) | - | - | | | | | specification which the event uses. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ .. Examples of headers *(generated)* .. code:: json { "ce_specversion": "1.0", "ce_id": "a30e63c9-d29e-46ff-b99a-b63ed83fd233", "ce_source": "dmi-plugin:nm-1", "ce_type": "topology-inventory-ingestion-create", "ce_time": "2023-06-12T09:05:00Z", "content-type": "application/json", "ce_dataschema": "topology-inventory-ingestion:events:create:1.0.0" } CREATE Payload ^^^^^^^^^^^^^^ +------------------------------------------------------+---------------+----------------------------------------------------------------+ | Name | Type | Description | +======================================================+===============+================================================================+ | (root) | Object | - | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data | - | | The data part consists of the actual topology data. It | | | | | contains all the entities and their associated | | | | | relationships. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data.entities | Array | | Entities are topology objects comprising of an id, consumer | | | | | data, attributes and metadata for each. It contains the id | | | | | only in case of delete cloud event. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | | data.entities | Object | | Entities schema is adherent to the entity types and | | | . | | | attributes mentioned in the yang modules. For yang modules, | | | : | | | see [Data Models][Data Models]. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data.relationships | Array | | Relationships comprising of an A-side and a B-side for each. | | | | | The A-side is considered the originating side of the | | | | | relationship; the B-side is considered the terminating side | | | | | of the relationship. The order of A-side and B-side is of | | | | | importance and MUST NOT be changed once defined. It | | | | | contains the id only in case of delete event. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | | data.relationships | Object | | Relationship schema is adherent to the relationship types | | | . | | | mentioned in the yang modules. For yang modules, | | | : | | | see [Data Models][Data Models]. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ Examples of payload *(generated)* .. code:: json { "data": { "entities": [ { "o-ran-smo-teiv-equipment:AntennaModule": [ { "id": "urn:oran:smo:teiv:AntennaModule=1", "attributes": { "antennaModelNumber": "1", "mechanicalAntennaBearing": 50, "mechanicalAntennaTilt": 10, "positionWithinSector": "Unknown", "totalTilt": 14, "electricalAntennaTilt": 2, "antennaBeamWidth": [ 35, 23, 21 ], "geo-location": { "latitude": 41.73297, "longitude": -73.007696, "height": 3000 } }, "sourceIds": [ "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1" ], "metadata": { "trustLevel": "RELIABLE" } } ] }, { "o-ran-smo-teiv-equipment:AntennaModule": [ { "id": "urn:oran:smo:teiv:AntennaModule=2", "attributes": { "antennaModelNumber": "2", "mechanicalAntennaBearing": 61, "mechanicalAntennaTilt": 21, "positionWithinSector": "Unknown", "totalTilt": 25, "electricalAntennaTilt": 3, "antennaBeamWidth": [ 46, 34, 32 ], "geo-location": { "latitude": 52.84308, "longitude": -84.118707, "height": 41111 } }, "sourceIds": [ "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1" ], "metadata": { "trustLevel": "RELIABLE" } } ] } ], "relationships": [ { "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [ { "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVs=", "aSide": "urn:oran:smo:teiv:AntennaModule=1", "bSide": "urn:oran:smo:teiv:Site=1" } ] }, { "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [ { "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVsYW5kLE1lQ2=", "aSide": "urn:oran:smo:teiv:AntennaModule=2", "bSide": "urn:oran:smo:teiv:Site=2" } ] } ] } } .. _Ingestion Merge: PUB ``ingestionMerge`` Operation -------------------------------- *Topology & Inventory entities and relationships can be updated.* - Operation ID: ``Ingestion`` Operation on Topology Inventory and Exposure input topic. Message Topology MERGE ``ingestionMerge`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *Updates components in topology.* - Message ID: ``merge`` - Content type: application/json MERGE Headers ^^^^^^^^^^^^^ +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | Name | Type | Description | Value | Constraints | Notes | +================+========+===========================================+==========================+=================+===================+ | (root) | object | - | - | - | | **additional** | | | | | | | | **properties** | | | | | | | | **are allowed** | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_id | string | Unique identifier for the event. | - | - | - | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_source | string | Source of the CloudEvent. | - | | format | - | | | | | | | (`uri`) | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_type | string | | Event type. It can be one of | - | - | - | | | | | topology-inventory-ingestion-merge, | | | | | | | | topology-inventory-ingestion-delete, or | | | | | | | | topology-inventory-ingestion-create. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | content-type | string | | Content-type of the data contained | | const | - | - | | | | | within the cloud event. It is | | (`"application/json"`) | | | | | | | application/json. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_dataschema | string | | URI representing the schema of the data | - | | format | - | | | | | This references the event-specific yang | | | (`uri`) | | | | | | schema. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_time | string | Event timestamp. | - | | format | - | | | | | | | (`date-time`) | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_specversion | string | | The version of the CloudEvents | const (`"1.0"`) | - | - | | | | | specification which the event uses. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ .. Examples of headers *(generated)* .. code:: json { "ce_specversion": "1.0", "ce_id": "a30e63c9-d29e-46ff-b99a-b63ed83fd234", "ce_source": "dmi-plugin:nm-1", "ce_type": "topology-inventory-ingestion-merge", "ce_time": "2023-06-12T09:05:00Z", "content-type": "application/json", "ce_dataschema": "topology-inventory-ingestion:events:merge:1.0.0" } MERGE Payload ^^^^^^^^^^^^^ +------------------------------------------------------+---------------+----------------------------------------------------------------+ | Name | Type | Description | +======================================================+===============+================================================================+ | (root) | Object | - | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data | - | | The data part consists of the actual topology data. It | | | | | contains all the entities and their associated | | | | | relationships. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data.entities | Array | | Entities are topology objects comprising of an id, consumer | | | | | data, attributes and metadata for each. It contains the id | | | | | only in case of delete cloud event. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | | data.entities | Object | | Entities schema is adherent to the entity types and | | | . | | | attributes mentioned in the yang modules. For yang modules, | | | : | | | see [Data Models][Data Models]. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data.relationships | Array | | Relationships comprising of an A-side and a B-side for each. | | | | | The A-side is considered the originating side of the | | | | | relationship; the B-side is considered the terminating side | | | | | of the relationship. The order of A-side and B-side is of | | | | | importance and MUST NOT be changed once defined. It | | | | | contains the id only in case of delete event. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | | data.relationships | Object | | Relationship schema is adherent to the relationship types | | | . | | | mentioned in the yang modules. For yang modules, | | | : | | | see [Data Models][Data Models]. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ .. Examples of payload *(generated)* .. code:: json { "data": { "entities": [ { "o-ran-smo-teiv-equipment:AntennaModule": [ { "id": "urn:oran:smo:teiv:AntennaModule=1", "attributes": { "antennaModelNumber": "1", "mechanicalAntennaBearing": 50, "mechanicalAntennaTilt": 10, "positionWithinSector": "Unknown", "totalTilt": 14, "electricalAntennaTilt": 2, "antennaBeamWidth": [ 35, 23, 21 ], "geo-location": { "latitude": 41.73297, "longitude": -73.007696, "height": 3000 } }, "sourceIds": [ "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=1,AntennaSubunit=1", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=1,RetSubUnit=1" ], "metadata": { "trustLevel": "RELIABLE" } } ] }, { "o-ran-smo-teiv-equipment:AntennaModule": [ { "id": "urn:oran:smo:teiv:AntennaModule=2", "attributes": { "antennaModelNumber": "2", "mechanicalAntennaBearing": 61, "mechanicalAntennaTilt": 21, "positionWithinSector": "Unknown", "totalTilt": 25, "electricalAntennaTilt": 3, "antennaBeamWidth": [ 46, 34, 32 ], "geo-location": { "latitude": 52.84308, "longitude": -84.118707, "height": 41111 } }, "sourceIds": [ "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaUnit=2,AntennaSubunit=1", "urn:3gpp:dn:ManagedElement=NR01,Equipment=1,AntennaUnitGroup=1,AntennaNearUnit=2,RetSubUnit=1" ], "metadata": { "trustLevel": "RELIABLE" } } ] } ], "relationships": [ { "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [ { "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVs=", "aSide": "urn:oran:smo:teiv:AntennaModule=1", "bSide": "urn:oran:smo:teiv:Site=1" } ] }, { "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [ { "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVsYW5kLE1lQ2=", "aSide": "urn:oran:smo:teiv:AntennaModule=2", "bSide": "urn:oran:smo:teiv:Site=2" } ] } ] } } .. _Ingestion Delete: PUB ``ingestionDelete`` Operation --------------------------------- *Topology & Inventory entities and relationships can be deleted.* - Operation ID: ``Ingestion`` Operation on Topology Inventory and Exposure input topic. Message Topology DELETE ``ingestionDelete`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *Deletes components in topology.* - Message ID: ``delete`` - Content type: application/json DELETE Headers ^^^^^^^^^^^^^^ +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | Name | Type | Description | Value | Constraints | Notes | +================+========+===========================================+==========================+=================+===================+ | (root) | object | - | - | - | | **additional** | | | | | | | | **properties** | | | | | | | | **are allowed** | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_id | string | Unique identifier for the event. | - | - | - | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_source | string | Source of the CloudEvent. | - | | format | - | | | | | | | (`uri`) | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_type | string | | Event type. It can be one of | - | - | - | | | | | topology-inventory-ingestion-merge, | | | | | | | | topology-inventory-ingestion-delete, or | | | | | | | | topology-inventory-ingestion-create. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | content-type | string | | Content-type of the data contained | | const | - | - | | | | | within the cloud event. It is | | (`"application/json"`) | | | | | | | application/json. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_dataschema | string | | URI representing the schema of the data | - | | format | - | | | | | This references the event-specific yang | | | (`uri`) | | | | | | schema. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_time | string | Event timestamp. | - | | format | - | | | | | | | (`date-time`) | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ | ce_specversion | string | | The version of the CloudEvents | const (`"1.0"`) | - | - | | | | | specification which the event uses. | | | | +----------------+--------+-------------------------------------------+--------------------------+-----------------+-------------------+ .. Examples of headers *(generated)* .. code:: json { "ce_specversion": "1.0", "ce_id": "a30e63c9-d29e-46ff-b99a-b63ed83fd235", "ce_source": "dmi-plugin:nm-1", "ce_type": "topology-inventory-ingestion-delete", "ce_time": "2023-06-12T09:05:00Z", "content-type": "application/json", "ce_dataschema": "topology-inventory-ingestion:events:delete:1.0.0" } DELETE Payload ^^^^^^^^^^^^^^ +------------------------------------------------------+---------------+----------------------------------------------------------------+ | Name | Type | Description | +======================================================+===============+================================================================+ | (root) | Object | - | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data | - | | The data part consists of the actual topology data. It | | | | | contains all the entities and their associated | | | | | relationships. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data.entities | Array | | Entities are topology objects comprising of an id, consumer | | | | | data, attributes and metadata for each. It contains the id | | | | | only in case of delete cloud event. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | | data.entities | Object | | Entities schema is adherent to the entity types and | | | . | | | attributes mentioned in the yang modules. For yang modules, | | | : | | | see [Data Models][Data Models]. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | data.relationships | Array | | Relationships comprising of an A-side and a B-side for each. | | | | | The A-side is considered the originating side of the | | | | | relationship; the B-side is considered the terminating side | | | | | of the relationship. The order of A-side and B-side is of | | | | | importance and MUST NOT be changed once defined. It | | | | | contains the id only in case of delete event. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ | | data.relationships | Object | | Relationship schema is adherent to the relationship types | | | . | | | mentioned in the yang modules. For yang modules, | | | : | | | see [Data Models][Data Models]. | +------------------------------------------------------+---------------+----------------------------------------------------------------+ .. Examples of payload *(generated)* .. code:: json { "data": { "entities": [ { "o-ran-smo-teiv-equipment:AntennaModule": [ { "id": "urn:oran:smo:teiv:AntennaModule=1" } ] }, { "o-ran-smo-teiv-equipment:AntennaModule": [ { "id": "urn:oran:smo:teiv:AntennaModule=2" } ] } ], "relationships": [ { "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [ { "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVs=" } ] }, { "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [ { "id": "urn:sha512:TlJDZWxsRFU6U3ViTmV0d29yaz1FdXJvcGUsU3ViTmV0d29yaz1JcmVsYW5kLE1lQ2=" } ] } ] } }