Adds projects_read and projects_write params to scaling nslcmop 45/7845/2
authorBenjamin Diaz <bdiaz@whitestack.com>
Wed, 14 Aug 2019 13:27:25 +0000 (10:27 -0300)
committerBenjamin Diaz <bdiaz@whitestack.com>
Wed, 14 Aug 2019 13:34:32 +0000 (10:34 -0300)
Change-Id: Iebd318b9815e711a374ba6ee235577cb2e5234ff
Signed-off-by: Benjamin Diaz <bdiaz@whitestack.com>
osm_policy_module/autoscaling/service.py
osm_policy_module/common/lcm_client.py

index d14904d..8bb17e4 100644 (file)
@@ -51,6 +51,11 @@ class AutoscalingService:
         self.lcm_client = LcmClient(config, loop=self.loop)
 
     async def configure_scaling_groups(self, nsr_id: str):
+        """
+        Configures scaling groups for a network service. Creates records in DB. Creates alarms in MON.
+        :param nsr_id: Network service record id
+        :return:
+        """
         log.info("Configuring scaling groups for network service with nsr_id: %s",
                  nsr_id)
         alarms_created = []
index e8f79cf..089e541 100644 (file)
@@ -36,6 +36,10 @@ log = logging.getLogger(__name__)
 
 
 class LcmClient:
+    """
+    Client to communicate with LCM through the message bus.
+    """
+
     def __init__(self, config: Config, loop=None):
         self.db_client = CommonDbClient(config)
         self.msg_bus = MessageBusClient(config)
@@ -44,14 +48,34 @@ class LcmClient:
         self.loop = loop
 
     async def scale(self, nsr_id: str, scaling_group_name: str, vnf_member_index: str, action: str):
+        """
+        Sends scaling action to LCM through the message bus.
+
+        :param nsr_id: Network service record id
+        :param scaling_group_name: Scaling group name
+        :param vnf_member_index: VNF member index
+        :param action: Scaling action to be executed. Valid values: scale_in, scale_out
+        :return:
+        """
         log.debug("scale %s %s %s %s", nsr_id, scaling_group_name, vnf_member_index, action)
-        nslcmop = self._generate_nslcmop(nsr_id, scaling_group_name, vnf_member_index, action)
+        nsr = self.db_client.get_nsr(nsr_id)
+        nslcmop = self._generate_nslcmop(nsr_id, scaling_group_name, vnf_member_index, action, nsr['_admin'])
         self.db_client.create_nslcmop(nslcmop)
         log.debug("Sending scale action message: %s", json.dumps(nslcmop))
         await self.msg_bus.aiowrite("ns", "scale", nslcmop)
 
-    def _generate_nslcmop(self, nsr_id: str, scaling_group_name: str, vnf_member_index: str, action: str):
-        log.debug("_generate_nslcmop %s %s %s %s", nsr_id, scaling_group_name, vnf_member_index, action)
+    def _generate_nslcmop(self, nsr_id: str, scaling_group_name: str, vnf_member_index: str, action: str, admin: dict):
+        """
+        Builds scaling nslcmop.
+
+        :param nsr_id: Network service record id
+        :param scaling_group_name: Scaling group name
+        :param vnf_member_index: VNF member index
+        :param action: Scaling action to be executed. Valid values: scale_in, scale_out
+        :param admin: Dict corresponding to the _admin section of the nsr. Required keys: projects_read, projects_write.
+        :return:
+        """
+        log.debug("_generate_nslcmop %s %s %s %s %s", nsr_id, scaling_group_name, vnf_member_index, action, admin)
         _id = str(uuid.uuid4())
         now = time.time()
         params = {
@@ -80,6 +104,10 @@ class LcmClient:
             "links": {
                 "self": "/osm/nslcm/v1/ns_lcm_op_occs/" + _id,
                 "nsInstance": "/osm/nslcm/v1/ns_instances/" + nsr_id,
+            },
+            "_admin": {
+                "projects_read": admin['projects_read'],
+                "projects_write": admin['projects_write']
             }
         }
         return nslcmop