X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=n2vc%2Fn2vc_juju_conn.py;h=1a7a46f53931771e757e3a6e1c0236e2c72529be;hb=b762056d905b3c0196a2a8f1c0c61bd9efe8f63c;hp=07c390384c15bd9aca90d8e79732e71ef98f7289;hpb=8be5a268734eac07e4aed75a7f6dc6bd9195eb49;p=osm%2FN2VC.git diff --git a/n2vc/n2vc_juju_conn.py b/n2vc/n2vc_juju_conn.py index 07c3903..1a7a46f 100644 --- a/n2vc/n2vc_juju_conn.py +++ b/n2vc/n2vc_juju_conn.py @@ -166,15 +166,16 @@ class N2VCJujuConnector(N2VCConnector): if self.ca_cert: self.ca_cert = base64_to_cacert(vca_config["ca_cert"]) - if "api_proxy" in vca_config: + if "api_proxy" in vca_config and vca_config["api_proxy"] != "": self.api_proxy = vca_config["api_proxy"] self.log.debug( "api_proxy for native charms configured: {}".format(self.api_proxy) ) else: self.warning( - "api_proxy is not configured. Support for native charms is disabled" + "api_proxy is not configured" ) + self.api_proxy = None if "enable_os_upgrade" in vca_config: self.enable_os_upgrade = vca_config["enable_os_upgrade"] @@ -241,13 +242,33 @@ class N2VCJujuConnector(N2VCConnector): models = await self.libjuju.list_models(contains=ns_id) for m in models: - status[m] = self.libjuju.get_model_status(m) - + status[m] = await self.libjuju.get_model_status(m) if yaml_format: return obj_to_yaml(status) else: return obj_to_dict(status) + async def update_vca_status(self, vcastatus: dict): + """ + Add all configs, actions, executed actions of all applications in a model to vcastatus dict. + :param vcastatus: dict containing vcaStatus + :return: None + """ + try: + for model_name in vcastatus: + # Adding executed actions + vcastatus[model_name]["executedActions"] = \ + await self.libjuju.get_executed_actions(model_name) + for application in vcastatus[model_name]["applications"]: + # Adding application actions + vcastatus[model_name]["applications"][application]["actions"] = \ + await self.libjuju.get_actions(application, model_name) + # Adding application configs + vcastatus[model_name]["applications"][application]["configs"] = \ + await self.libjuju.get_application_configs(model_name, application) + except Exception as e: + self.log.debug("Error in updating vca status: {}".format(str(e))) + async def create_execution_environment( self, namespace: str, @@ -376,10 +397,6 @@ class N2VCJujuConnector(N2VCConnector): # register machine on juju try: - if not self.api_proxy: - msg = "Cannot provision machine: api_proxy is not defined" - self.log.error(msg=msg) - raise N2VCException(message=msg) if not await self.libjuju.model_exists(model_name): await self.libjuju.add_model(model_name, cloud_name=self.cloud) machine_id = await self.libjuju.provision_machine( @@ -925,7 +942,7 @@ class N2VCJujuConnector(N2VCConnector): if status == "completed": return output else: - raise Exception("status is not completed: {}".format(status)) + raise Exception("status: {}, output: {}".format(status, output)) except Exception as e: self.log.error( "Error executing primitive {}: {}".format(primitive_name, e) @@ -1187,7 +1204,7 @@ class N2VCJujuConnector(N2VCConnector): connection=connection, nonce=params.nonce, machine_id=machine_id, - api=self.api_proxy, + proxy=self.api_proxy, ) )