Add the support of activate/deactivate events to RAN NSSMF simulator 69/127469/4
authorYogendra Pal <yogendra@aarnanetworks.com>
Wed, 2 Mar 2022 18:45:48 +0000 (00:15 +0530)
committeryogendrapal <yogendra@aarnanetworks.com>
Fri, 4 Mar 2022 17:02:37 +0000 (22:32 +0530)
Issue-ID: INT-2080

Signed-off-by: yogendrapal <yogendra@aarnanetworks.com>
Change-Id: If4e7bd29c4350e41ef2a1c2bf7ce40cea0bd2a66

test/mocks/ran-nssmf-simulator/RanNssmfSimulator/MainApp.py
test/mocks/ran-nssmf-simulator/RanNssmfSimulator/NssManager.py
test/mocks/ran-nssmf-simulator/RanNssmfSimulator/SliceDataType.py

index 6074e76..05edfa8 100644 (file)
@@ -2,6 +2,7 @@
 
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+#  Contribution (C) 2022 Aarna Networks, Inc. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,7 +22,7 @@ from flask import Flask, request, Response
 from schematics.exceptions import DataError
 
 from .utils import REST_PORT, LOGGING_LEVEL
-from .SliceDataType import AllocateNssi, DeAllocateNssi
+from .SliceDataType import AllocateNssi, DeAllocateNssi, ActivateNssi, DeActivateNssi
 from . import AuthManager
 from . import NssManager
 
@@ -97,6 +98,48 @@ def handleDeallocateNssi(sliceProfileId):
 
     return NssManager.deallocateNssi(sliceProfileId, request.json), 200
 
+@app.route("/api/rest/provMns/v1/an/NSS/<string:snssai>/activations", methods=['PUT'])
+def handleActivateNssi(snssai):
+    """
+        Method: handleActivateNssi
+            This method handles slice activation event generated by SO NSSMF adapter.
+            As part of this event, SO NSSMF adapter will send the associated 'snssai'.
+            'snssai' is string type value and example is: "01-2557D9". Wherein,
+            sst: "01" and sd: "2557D9".
+        Argument: snssai
+            'sst': Identifies the service (e.g eMBB, URLLC,...)
+            'sd' : service differentiator within sst.
+        Return value: http status 200
+    """
+    AuthManager.checkAuthToken(request.headers)
+
+    app.logger.info("Receive ActivateNssi request for snssai:%s\n%s"
+                    % (snssai, json.dumps(request.json, indent=2)))
+
+    ActivateNssi(request.json).validate()
+
+    return NssManager.activateNssi(snssai, request.json), 200
+
+@app.route("/api/rest/provMns/v1/an/NSS/<string:snssai>/deactivation", methods=['PUT'])
+def handleDeActivateNssi(snssai):
+    """
+        Method: handleDeActivateNssi
+            This method handles slice deactivation event generated by SO NSSMF adapter.
+            As part of this event, SO NSSMF adapter will send the associated 'snssai'.
+            Example 'snssai' : "01-2557D9".
+        Argument: snssai
+            'sst': Identifies the service (e.g eMBB, URLLC,...)
+            'sd' : service differentiator within sst.
+        Return value: http status 200
+    """
+    AuthManager.checkAuthToken(request.headers)
+
+    app.logger.info("Receive DeActivateNssi request for snssai:%s\n%s"
+                    % (snssai, json.dumps(request.json, indent=2)))
+
+    DeActivateNssi(request.json).validate()
+
+    return NssManager.deactivateNssi(snssai, request.json), 200
 
 def main():
     AuthManager.startAuthManagerJob()
index f515968..817f5d9 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+#  Contribution (C) 2022 Aarna Networks, Inc. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -46,3 +47,41 @@ def deallocateNssi(sliceProfileId, requestBody):
 
     logger.info("Deallocate NSSI for sliceProfileId %s success, nSSId: %s" % (sliceProfileId, nSSId))
     return ""
+
+def activateNssi(snssai, requestBody):
+    """
+        Method: activateNssi
+            This method is internal and invoked from handleActivateNssi()
+            callflow. As part of this, it logs the activate snssai, nssiId
+            values from incoming request.
+        Arguments: snssai, requestBody
+            snssai represents below:
+                'sst': Identifies the service (e.g eMBB, URLLC,...)
+                'sd' : service differentiator within sst.
+            requestBody: Incoming http request payload.
+        Return value: ''
+    """
+    nssiId = requestBody["nssiId"]
+    #nsiId  = requestBody["nsiId"]
+
+    logger.info("Activate NSSI for snssai %s successful, nssiId: %s" % (snssai, nssiId))
+    return ""
+
+def deactivateNssi(snssai, requestBody):
+    """
+        Method: deactivateNssi
+            This method is internal and invoked from handleDeActivateNssi()
+            callflow. As part of this, it logs the deactivate snssai, nssiId
+            values from incoming request.
+        Argument: snssai, requestBody
+            snssai represents below:
+                'sst': Identifies the service (e.g eMBB, URLLC,...)
+                'sd' : service differentiator within sst.
+            requestBody: Incoming http request payload.
+        Return value: ''
+    """
+    nssiId = requestBody["nssiId"]
+    #nsiId  = requestBody["nsiId"]
+
+    logger.info("DeActivate NSSI for snssai %s successful, nssiId: %s" % (snssai, nssiId))
+    return ""
index 7309701..37ec0a3 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+#  Contribution (C) 2022 Aarna Networks, Inc. All rights reserved.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -62,3 +63,13 @@ class AllocateNssi(Model):
 class DeAllocateNssi(Model):
     """Reference 3GPP TS 28.531 V16.6.0."""
     nSSId = StringType(required=True)
+
+class ActivateNssi(Model):
+    """Reference 3GPP TS 28.531 V16.6.0."""
+    nsiId = StringType(required=True)
+    nssiId = StringType(required=True)
+
+class DeActivateNssi(Model):
+    """Reference 3GPP TS 28.531 V16.6.0."""
+    nsiId = StringType(required=True)
+    nssiId = StringType(required=True)