Add models_exist function to libjuju.py
This function checks if a gives list of model names exist in the controller.
Additionally, it returns the list of unexisting models from the given list.
Change-Id: I2a9290ef1a4ee1308626f3a31dba0a83127fdd8c
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/n2vc/libjuju.py b/n2vc/libjuju.py
index cb24a3e..2f18837 100644
--- a/n2vc/libjuju.py
+++ b/n2vc/libjuju.py
@@ -232,6 +232,28 @@
if need_to_disconnect:
await self.disconnect_controller(controller)
+ async def models_exist(self, model_names: [str]) -> (bool, list):
+ """
+ Check if models exists
+
+ :param: model_names: List of strings with model names
+
+ :return (bool, list[str]): (True if all models exists, List of model names that don't exist)
+ """
+ if not model_names:
+ raise Exception(
+ "model_names must be a non-empty array. Given value: {}".format(model_names)
+ )
+ non_existing_models = []
+ models = await self.list_models()
+ existing_models = list(set(models).intersection(model_names))
+ non_existing_models = list(set(model_names) - set(existing_models))
+
+ return (
+ len(non_existing_models) == 0,
+ non_existing_models,
+ )
+
async def get_model_status(self, model_name: str) -> FullStatus:
"""
Get model status