X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fn2vc_juju_conn.py;h=00b1bc156fa026e4d8d2ea1d791a6650208e07df;hp=ad001f2fdc180a1f50648d55424c8144013d3d88;hb=refs%2Fchanges%2F15%2F8515%2F1;hpb=4074f8aba930b6ca80eb119ea7b11bfb32b7878d diff --git a/n2vc/n2vc_juju_conn.py b/n2vc/n2vc_juju_conn.py index ad001f2..00b1bc1 100644 --- a/n2vc/n2vc_juju_conn.py +++ b/n2vc/n2vc_juju_conn.py @@ -157,6 +157,16 @@ class N2VCJujuConnector(N2VCConnector): else: self.warning('api_proxy is not configured. Support for native charms is disabled') + if 'enable_os_upgrade' in vca_config: + self.enable_os_upgrade = vca_config['enable_os_upgrade'] + else: + self.enable_os_upgrade = True + + if 'apt_mirror' in vca_config: + self.apt_mirror = vca_config['apt_mirror'] + else: + self.apt_mirror = None + self.debug('Arguments have been checked') # juju data @@ -1093,6 +1103,7 @@ class N2VCJujuConnector(N2VCConnector): async def _juju_get_model(self, model_name: str) -> Model: """ Get a model object from juju controller + If the model does not exits, it creates it. :param str model_name: name of the model :returns Model: model obtained from juju controller or Exception @@ -1121,9 +1132,16 @@ class N2VCJujuConnector(N2VCConnector): if model_name not in model_list: self.info('Model {} does not exist. Creating new model...'.format(model_name)) + config_dict = {'authorized-keys': self.public_key} + if self.apt_mirror: + config_dict['apt-mirror'] = self.apt_mirror + if not self.enable_os_upgrade: + config_dict['enable-os-refresh-update'] = False + config_dict['enable-os-upgrade'] = False + model = await self.controller.add_model( model_name=model_name, - config={'authorized-keys': self.public_key} + config=config_dict ) self.info('New model created, name={}'.format(model_name)) else: @@ -1222,6 +1240,15 @@ class N2VCJujuConnector(N2VCConnector): model = await self._juju_get_model(model_name=model_name) uuid = model.info.uuid + # destroy machines + machines = await model.get_machines() + for machine_id in machines: + try: + await self._juju_destroy_machine(model_name=model_name, machine_id=machine_id) + except Exception as e: + # ignore exceptions destroying machine + pass + await self._juju_disconnect_model(model_name=model_name) self.juju_models[model_name] = None self.juju_observers[model_name] = None