X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fvnf.py;h=7c39fa11f37eb8063f7bd1efac5ef5b9a15f9f11;hp=e39b04e8c3bb6708832c0340d91cf59d961fdc9d;hb=refs%2Fchanges%2F94%2F6394%2F1;hpb=c9df96f0699cb656166a696219749646f12052d1 diff --git a/n2vc/vnf.py b/n2vc/vnf.py index e39b04e..7c39fa1 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 @@ -295,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 # @@ -373,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} ), } @@ -391,11 +397,34 @@ class N2VC: **primitives[primitive]['parameters'], ) except N2VCPrimitiveExecutionFailed as e: - self.debug.log( + self.log.debug( "[N2VC] Exception executing primitive: {}".format(e) ) raise + async def GetPrimitiveStatus(self, model_name, uuid): + results = None + try: + if not self.authenticated: + await self.login() + + # FIXME: This is hard-coded until model-per-ns is added + model_name = 'default' + + model = await self.controller.get_model(model_name) + + results = await model.get_action_output(uuid) + + await model.disconnect() + except Exception as e: + self.log.debug( + "Caught exception while getting primitive status: {}".format(e) + ) + raise N2VCPrimitiveExecutionFailed(e) + + return results + + async def ExecutePrimitive(self, model_name, application_name, primitive, callback, *callback_args, **params): """Execute a primitive of a charm for Day 1 or Day 2 configuration. @@ -426,22 +455,28 @@ class N2VC: if primitive == 'config': # config is special, and expecting params to be a dictionary - self.log.debug("Setting charm configuration for {}".format(application_name)) - self.log.debug(params['params']) - await self.set_config(model, application_name, params['params']) + await self.set_config( + model, + application_name, + params['params'], + ) else: app = await self.get_application(model, application_name) if app: # Run against the first (and probably only) unit in the app unit = app.units[0] if unit: - self.log.debug("Executing primitive {}".format(primitive)) + self.log.debug( + "Executing primitive {}".format(primitive) + ) action = await unit.run_action(primitive, **params) uuid = action.id await model.disconnect() except Exception as e: - self.log.debug("Caught exception while executing primitive: {}".format(e)) - raise e + self.log.debug( + "Caught exception while executing primitive: {}".format(e) + ) + raise N2VCPrimitiveExecutionFailed(e) return uuid async def RemoveCharms(self, model_name, application_name, callback=None, *callback_args):