X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fvnf.py;h=1b9efa8447316b094717084eb6e3612fb2d20cf7;hp=9641e73d22fac006ba9c7c694a83af3d22dad945;hb=refs%2Fheads%2Fv4.0;hpb=839299d635bb7b739aace1a242e28918577b13e2 diff --git a/n2vc/vnf.py b/n2vc/vnf.py index 9641e73..1b9efa8 100644 --- a/n2vc/vnf.py +++ b/n2vc/vnf.py @@ -98,6 +98,7 @@ class VCAMonitor(ModelObserver): self.ns_name, delta.data['application'], new_status, + new.workload_status_message, *callback_args) if old and not new: @@ -107,6 +108,7 @@ class VCAMonitor(ModelObserver): self.ns_name, delta.data['application'], "removed", + "", *callback_args) except Exception as e: self.log.debug("[1] notify_callback exception {}".format(e)) @@ -212,10 +214,10 @@ class N2VC: """Close any open connections.""" yield self.logout() - def notify_callback(self, model_name, application_name, status, callback=None, *callback_args): + def notify_callback(self, model_name, application_name, status, message, callback=None, *callback_args): try: if callback: - callback(model_name, application_name, status, *callback_args) + callback(model_name, application_name, status, message, *callback_args) except Exception as e: self.log.error("[0] notify_callback exception {}".format(e)) raise e @@ -246,10 +248,7 @@ class N2VC: Deploy the charm(s) referenced in a VNF Descriptor. - You can pass either the nsd record or the id of the network - service, but this method will fail without one of them. - - :param str ns_name: The name of the network service + :param str model_name: The name of the network service. :param str application_name: The name of the application :param dict vnfd: The name of the application :param str charm_path: The path to the Juju charm @@ -298,7 +297,7 @@ class N2VC: ######################################## app = await self.get_application(model, application_name) if app: - raise JujuApplicationExists("Can't deploy application \"{}\" to model \"{}\" because it already exists.".format(application_name, model)) + raise JujuApplicationExists("Can't deploy application \"{}\" to model \"{}\" because it already exists.".format(application_name, model_name)) ################################################################ # Register this application with the model-level event monitor # @@ -376,10 +375,14 @@ class N2VC: else: seq = primitive['seq'] + params = {} + if 'parameter' in primitive: + params = primitive['parameter'] + primitives[seq] = { 'name': primitive['name'], 'parameters': self._map_primitive_parameters( - primitive['parameter'], + params, {'': rw_mgmt_ip} ), } @@ -394,16 +397,28 @@ class N2VC: **primitives[primitive]['parameters'], ) except N2VCPrimitiveExecutionFailed as e: - self.debug.log( + self.log.debug( "[N2VC] Exception executing primitive: {}".format(e) ) raise async def ExecutePrimitive(self, model_name, application_name, primitive, callback, *callback_args, **params): - """ - Queue the execution of a primitive + """Execute a primitive of a charm for Day 1 or Day 2 configuration. - returns the UUID of the executed primitive + Execute a primitive defined in the VNF descriptor. + + :param str model_name: The name of the network service. + :param str application_name: The name of the application + :param str primitive: The name of the primitive to execute. + :param obj callback: A callback function to receive status changes. + :param tuple callback_args: A list of arguments to be passed to the callback function. + :param dict params: A dictionary of key=value pairs representing the primitive's parameters + Examples:: + { + 'rw_mgmt_ip': '1.2.3.4', + # Pass the initial-config-primitives section of the vnf or vdu + 'initial-config-primitives': {...} + } """ uuid = None try: @@ -432,10 +447,19 @@ class N2VC: await model.disconnect() except Exception as e: self.log.debug("Caught exception while executing primitive: {}".format(e)) - raise e + raise N2VCPrimitiveExecutionFailed(e) return uuid async def RemoveCharms(self, model_name, application_name, callback=None, *callback_args): + """Remove a charm from the VCA. + + Remove a charm referenced in a VNF Descriptor. + + :param str model_name: The name of the network service. + :param str application_name: The name of the application + :param obj callback: A callback function to receive status changes. + :param tuple callback_args: A list of arguments to be passed to the callback function. + """ try: if not self.authenticated: await self.login()