class VnfLcmOp2NsLcmOp:
-
def __init__(self, db, fs, msg, auth):
"""
Constructor of Vnf lcm op to Ns lcm op
class NewVnfLcmOp(BaseMethod):
-
def __init__(self, db, fs, msg, auth):
"""
Constructor of new Vnf Lcm Op
:return: id of nsd id
"""
nsr = self.nsrtopic.show(session, vnf_instance_id)
- return nsr['nsd']['_id']
+ return nsr["nsd"]["_id"]
def __get_formatted_indata(self, session, indata):
"""
"vimAccountId": indata["vimAccountId"],
"nsr_id": indata["vnfInstanceId"],
"lcmOperationType": indata["lcmOperationType"],
- "nsInstanceId": indata["vnfInstanceId"]
+ "nsInstanceId": indata["vnfInstanceId"],
}
elif indata["lcmOperationType"] == "terminate":
formatted_indata = {
"lcmOperationType": indata["lcmOperationType"],
- "nsInstanceId": indata["vnfInstanceId"]
+ "nsInstanceId": indata["vnfInstanceId"],
}
elif indata["lcmOperationType"] == "scale":
formatted_indata = {
"scaleVnfType": indata["type"],
"scaleByStepData": {
"scaling-group-descriptor": indata["aspectId"],
- "member-vnf-index": indata["additionalParams"]["member-vnf-index"]
- }
- }
+ "member-vnf-index": indata["additionalParams"][
+ "member-vnf-index"
+ ],
+ },
+ },
}
elif indata["lcmOperationType"] == "action":
formatted_indata = {
"nsInstanceId": indata["vnfInstanceId"],
"member_vnf_index": indata["member_vnf_index"],
"primitive": indata["primitive"],
- "primitive_params": indata["primitive_params"]
+ "primitive_params": indata["primitive_params"],
}
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.
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, _
class ListVnfLcmOp(BaseMethod):
-
def __init__(self, db, fs, msg, auth):
"""
Constructor call for listing vnf lcm operations
for record in records:
ns_id = record.get("nsInstanceId")
nsr = self.nsrtopic.show(session, ns_id)
- vnfInstance_id = nsr['constituent-vnfr-ref'][0]
+ vnfInstance_id = nsr["constituent-vnfr-ref"][0]
outdata = sol003_projection(record, vnfInstance_id)
list.append(outdata)
return list
class ShowVnfLcmOp(BaseMethod):
-
def __init__(self, db, fs, msg, auth):
"""
Constructor call for showing vnf lcm operation
record = self.nslcmoptopic.show(session, _id, api_req)
ns_id = record.get("nsInstanceId")
nsr = self.nsrtopic.show(session, ns_id)
- vnfinstance_id = nsr['constituent-vnfr-ref'][0]
+ vnfinstance_id = nsr["constituent-vnfr-ref"][0]
outdata = sol003_projection(record, vnfinstance_id)
return outdata