return indata.get("vim_type") and indata["vim_type"] == "paas"
def _check_paas_account(self, indata):
- if self._is_paas_vim_type(indata):
- self._check_paas_provider_is_valid(indata)
+ if not self._is_paas_vim_type(indata):
+ return
+ if not self._is_valid_paas_config(indata.get("config")):
+ raise EngineException(
+ "Invalid config for VIM account '{}'.".format(indata["name"]),
+ HTTPStatus.UNPROCESSABLE_ENTITY,
+ )
- def _check_paas_provider_is_valid(self, indata):
- try:
- paas_provider = indata["config"]["paas_provider"]
- if paas_provider in self.valid_paas_providers:
- return
- except Exception:
- pass
- raise EngineException(
- "Invalid paas_provider for VIM account '{}'.".format(indata["name"]),
- HTTPStatus.UNPROCESSABLE_ENTITY,
- )
+ def _is_valid_paas_config(self, config) -> bool:
+ if not config:
+ return False
+ paas_provider = config.get("paas_provider")
+ is_valid_paas_provider = paas_provider in self.valid_paas_providers
+ if paas_provider == "juju":
+ return self._is_valid_juju_paas_config(config)
+ return is_valid_paas_provider
+
+ def _is_valid_juju_paas_config(self, config) -> bool:
+ if not config:
+ return False
+ config_keys = [
+ "paas_provider",
+ "ca_cert_content",
+ "cloud",
+ "cloud_credentials",
+ "authorized_keys",
+ ]
+ return all(key in config for key in config_keys)
def check_conflict_on_del(self, session, _id, db_content):
"""