X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=n2vc%2Fn2vc_juju_conn.py;h=1a7a46f53931771e757e3a6e1c0236e2c72529be;hb=05ddb45012985d97d321499867b40eeee4b6b43d;hp=ed53da4819086fdaf0a557682d7c4be0c58e4721;hpb=8a4742be7822a8e6cfb1028c1f8b9486bdd99c37;p=osm%2FN2VC.git diff --git a/n2vc/n2vc_juju_conn.py b/n2vc/n2vc_juju_conn.py index ed53da4..1a7a46f 100644 --- a/n2vc/n2vc_juju_conn.py +++ b/n2vc/n2vc_juju_conn.py @@ -166,14 +166,14 @@ 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 @@ -243,12 +243,32 @@ class N2VCJujuConnector(N2VCConnector): for m in models: 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, @@ -377,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( @@ -926,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) @@ -1188,7 +1204,7 @@ class N2VCJujuConnector(N2VCConnector): connection=connection, nonce=params.nonce, machine_id=machine_id, - api=self.api_proxy, + proxy=self.api_proxy, ) )