X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fn2vc_juju_conn.py;h=9230e6d8b1e0dc01842a3066258d1f5bf03e7d7b;hp=4f0ee37d368a44aa66e385b172485d4df2889b1f;hb=refs%2Fchanges%2F61%2F8861%2F1;hpb=bc269eb13d444b0e382a38a710e13abb87f5c342 diff --git a/n2vc/n2vc_juju_conn.py b/n2vc/n2vc_juju_conn.py index 4f0ee37..9230e6d 100644 --- a/n2vc/n2vc_juju_conn.py +++ b/n2vc/n2vc_juju_conn.py @@ -168,6 +168,7 @@ class N2VCJujuConnector(N2VCConnector): else: self.apt_mirror = None + self.cloud = vca_config.get('cloud') self.log.debug('Arguments have been checked') # juju data @@ -585,15 +586,15 @@ class N2VCJujuConnector(N2VCConnector): .format(ee_id, application_name, e)) # destroy the machine - try: - await self._juju_destroy_machine( - model_name=model_name, - machine_id=machine_id, - total_timeout=total_timeout - ) - except Exception as e: - raise N2VCException(message='Error deleting execution environment {} (machine {}) : {}' - .format(ee_id, machine_id, e)) + # try: + # await self._juju_destroy_machine( + # model_name=model_name, + # machine_id=machine_id, + # total_timeout=total_timeout + # ) + # except Exception as e: + # raise N2VCException(message='Error deleting execution environment {} (machine {}) : {}' + # .format(ee_id, machine_id, e)) self.log.info('Execution environment {} deleted'.format(ee_id)) @@ -1024,7 +1025,10 @@ class N2VCJujuConnector(N2VCConnector): application = await self._juju_get_application(model_name=model_name, application_name=application_name) - unit = application.units[0] + unit = None + for u in application.units: + if await u.is_leader_from_status(): + unit = u if unit is not None: actions = await application.get_actions() if action_name in actions: @@ -1166,7 +1170,8 @@ class N2VCJujuConnector(N2VCConnector): model = await self.controller.add_model( model_name=model_name, - config=config_dict + config=config_dict, + cloud_name=self.cloud, ) self.log.info('New model created, name={}'.format(model_name)) else: @@ -1223,9 +1228,11 @@ class N2VCJujuConnector(N2VCConnector): # get juju model and observer model = await self._juju_get_model(model_name=model_name) + observer = self.juju_observers[model_name] application = model.applications.get(application_name) if application: + observer.unregister_application(application_name) await application.destroy() else: self.log.debug('Application not found: {}'.format(application_name)) @@ -1244,10 +1251,12 @@ class N2VCJujuConnector(N2VCConnector): # get juju model and observer model = await self._juju_get_model(model_name=model_name) + observer = self.juju_observers[model_name] machines = await model.get_machines() if machine_id in machines: machine = model.machines[machine_id] + observer.unregister_machine(machine_id) await machine.destroy(force=True) # max timeout end = time.time() + total_timeout