Skip to content

1. KPM Subscription Delete Response

1.1 KpmXappSubscriptionDeleteResponsePublisherPubData

The KpmXappSubscriptionDeleteResponsePublisherPubData represents the response message in reply to a KPM subscription delete request.

This response indicates whether the deletion of the subscription was successful or if any issues were encountered during the process.

1.2 Examples

Info

To receive a KPM Subscription response, the following NATS subject must be used:

e2-t.E2SM-KPIMON-SUBSCRIPTION-DELETE-RESP
This subject is responsible for receiving the KPM subscription response message.

The following Python example demonstrates how to receive a KPM subscription delete response.

Example

Receive Kpm Subscription Delete response:

# Add Accelleran xapp library
from xapp_lib import xapp_lib
# Add protobuf definitions
from xapp_lib.proto_pb2.accelleran.e2 import genXappKpm_pb2
# Add function to serialize json dict in protobuf
from google.protobuf.json_format import ParseDict

def e2sm_kpimon_subscription_delete_resp(encoded_data):
    data = genKpmXapp_pb2.KpmXappSubscriptionDeleteResponsePublisherPubData()
    data.ParseFromString(encoded_data)
    return data.BaseSubscriptionDeleteResponseData

msgList = [
    ("E2SM-KPIMON-SUBSCRIPTION-DELETE-RESP", e2sm_kpimon_subscription_delete_resp),
]

def get_subject_list(req_id, ins_id):
    subjects = []
    for msg in msgList:
        subjects.append(
            "e2-t."
            + msg[0]
            + ".RIC_REQUESTOR="
            + str(req_id)
            + ".RIC_INSTANCE="
            + str(ins_id)
        )
    return subjects

def decoder(subject, encoded_data):
    item = [item for item in msgList if item[0] == subject and item[1] != None]
    if not item:
        logging.error(f"Subject not supported: {subject}. Cannot decode the message.")
        return None
    return dict(item)[subject](encoded_data)

def extract_subject(input_string):
    components = input_string.split(".")
    for component in components:
        for subject, _ in msgList:
            if subject in component:
                return subject
    return None

def main():

    ### Use xApp Builder to create the xApp
    builder = xapp_lib.XAppBuilder("../..", absolute=False)
    builder.metadata("core/xapp_metadata.json")
    builder.endpoints("config/xapp_endpoints.json")
    builder.config("config/xapp_config.json")
    builder.readme("README.md")
    xapp = builder.build()

    # Get xApp request id
    req_id = xapp.id
    # Get xApp instance id
    node_a_ins_id = xapp.transaction_id_gen.get()

    # Listen for E2 Subscription Delete responses
    e2_node_a_subjects = get_subject_list(req_id, node_a_ins_id)
    xapp.nats(endpoint="NATS_URL_5G").subscribe(e2_node_a_subjects)

    # Reception of E2 subscription delete response
    for _ in range(10):
        data = xapp.nats().recv_data()
        subject = extract_subject(data[0])
        decoded_resp = decoder(subject, data[1])
        logging.info("Received message: {data}".format(data=decoded_resp))

1.3 Schema

This section provides the json schema for the E2 KPM Subscription Delete Response, which outlines the expected structure and data types.

E2 KPM Subscription Delete Response schema
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "$ref": "#/definitions/KpmXappSubscriptionDeleteResponsePublisherPubData",
    "definitions": {
        "KpmXappSubscriptionDeleteResponsePublisherPubData": {
            "properties": {
                "BaseSubscriptionDeleteResponseData": {
                    "$ref": "#/definitions/PBE2apMsgData.BaseSubscriptionDeleteResponseData",
                    "additionalProperties": true,
                    "description": "See BaseSubscriptionDeleteResponseData for detailed description of this field"
                },
                "tlpublishTime": {
                    "type": "string",
                    "description": "Contains the time of publishing in EPOCH milliseconds"
                },
                "spanContext": {
                    "type": "string",
                    "description": "Contains an opentracing spancontext",
                    "format": "binary",
                    "binaryEncoding": "base64"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Kpm Xapp Subscription Delete Response Publisher Pub Data",
            "description": "* Publisher : KpmXappSubscriptionDeleteResponsePublisher Topic : E2SM-KPIMON-SUBSCRIPTION-DELETE-RESP.RIC_REQUESTOR=*.RIC_INSTANCE=* Description : This publisher will publish the E2 subscription delete response received from the               E2 Termination node to the xAPP"
        },
        "PBE2apMsgData.BaseSubscriptionDeleteResponseData": {
            "properties": {
                "RequestId": {
                    "$ref": "#/definitions/PBE2apMsgData.RicRequestId",
                    "additionalProperties": true
                },
                "RanFunctionName": {
                    "type": "string"
                },
                "RanFunctionId": {
                    "type": "integer"
                },
                "NodeId": {
                    "$ref": "#/definitions/PBE2apMsgData.GlobalE2NodeId",
                    "additionalProperties": true
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Base Subscription Delete Response Data"
        },
        "PBE2apMsgData.GlobalE2NodeId": {
            "properties": {
                "GlobalGnbId": {
                    "$ref": "#/definitions/PBE2apMsgData.GlobalGnbId",
                    "additionalProperties": true
                },
                "OptionalGnbCuUpId": {
                    "type": "string"
                },
                "OptionalGnbDuId": {
                    "type": "string"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Global E 2 Node Id",
            "description": "*O-RAN.WG3.E2AP-v02.00 9.2.6 Global E2 Node ID"
        },
        "PBE2apMsgData.GlobalGnbId": {
            "properties": {
                "PlmnIdentity": {
                    "$ref": "#/definitions/PBE2apMsgData.PlmnIdentity",
                    "additionalProperties": true
                },
                "GnbId": {
                    "$ref": "#/definitions/PBE2apMsgData.GnbId",
                    "additionalProperties": true
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Global Gnb Id"
        },
        "PBE2apMsgData.GnbId": {
            "properties": {
                "Value": {
                    "type": "integer"
                },
                "Length": {
                    "type": "integer",
                    "description": "Number of bits used in the gnbId. This may vary from 22 to 32"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Gnb Id"
        },
        "PBE2apMsgData.PlmnIdentity": {
            "properties": {
                "Data": {
                    "items": {
                        "type": "integer"
                    },
                    "type": "array"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Plmn Identity",
            "description": "*O-RAN.WG3.E2SM-R003-v03.00 6.2.3.1 PLMN Identity"
        },
        "PBE2apMsgData.RicRequestId": {
            "properties": {
                "RicRequestorId": {
                    "type": "integer"
                },
                "RicInstanceId": {
                    "type": "integer"
                }
            },
            "additionalProperties": true,
            "type": "object",
            "title": "Ric Request Id"
        }
    }
}