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"]
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,
# 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(
application_name=application_name,
machine_id="k8s",
)
+
+ self._write_ee_id_db(db_dict=db_dict, ee_id=ee_id)
+
return ee_id
async def get_ee_ssh_public__key(
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)
connection=connection,
nonce=params.nonce,
machine_id=machine_id,
- api=self.api_proxy,
+ proxy=self.api_proxy,
)
)