Feature 10926 - Subscription feature for SOL003 VNF-LCM
[osm/NBI.git] / osm_nbi / osm_vnfm / vnf_instance_actions.py
index 93c91c5..947f0b7 100644 (file)
@@ -133,6 +133,31 @@ class NewVnfLcmOp(BaseMethod):
             }
         return formatted_indata
 
+    def notify_operation(self, session, _id, lcm_operation, op_id):
+        """
+        Formats the operation message params and sends to kafka
+        :param session: contains "username", "admin", "force", "public", "project_id", "set_project"
+        :param _id: vnf instance id
+        :param lcm_operation: lcm operation type of a VNF (instantiate, scale, terminate)
+        :param op_id: lcm operation id of a VNF
+        :return: None
+        """
+        vnfInstanceId = _id
+        operation = lcm_operation
+        nslcmop_rec = self.nslcmoptopic.show(session, op_id)
+        operation_status = nslcmop_rec["operationState"]
+        vnfr = self.vnfrtopic.show(session, vnfInstanceId)
+        links = {"self": "/osm/vnflcm/v1/vnf_lcm_op_occs/" + op_id,
+                 "vnfInstance": "/osm/vnflcm/v1/vnf_instances/" + vnfInstanceId}
+        params = {"vnfdId": vnfr["vnfd-ref"],
+                  "vnfInstanceId": vnfInstanceId,
+                  "operationState": operation_status,
+                  "vnfLcmOpOccId": op_id,
+                  "_links": links
+                  }
+        self.msg.write("vnf", operation, params)
+        return None
+
     def action(self, rollback, session, indata=None, kwargs=None, headers=None):
         """
         Creates an new lcm operation.
@@ -149,6 +174,7 @@ class NewVnfLcmOp(BaseMethod):
         indata["vnfInstanceId"] = vnfr.get("nsr-id-ref")
         indata = self.__get_formatted_indata(session, indata)
         op_id, _ = self.nslcmoptopic.new(rollback, session, indata, kwargs, headers)
+        self.notify_operation(session, vnfInstanceId, lcm_operation, op_id)
         return op_id, _