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
mock_disconnect_controller.assert_called_once()
self.assertEquals(models, ["existingmodel", "model"])
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.list_models")
+class ModelsExistTest(LibjujuTestCase):
+ def setUp(self):
+ super(ModelsExistTest, self).setUp()
+
+ def test_model_names_none(self, mock_list_models):
+ mock_list_models.return_value = []
+ with self.assertRaises(Exception):
+ self.loop.run_until_complete(self.libjuju.models_exist(None))
+
+ def test_model_names_empty(self, mock_list_models):
+ mock_list_models.return_value = []
+ with self.assertRaises(Exception):
+ (exist, non_existing_models) = self.loop.run_until_complete(
+ self.libjuju.models_exist([])
+ )
+
+ def test_model_names_not_existing(self, mock_list_models):
+ mock_list_models.return_value = ["prometheus", "grafana"]
+ (exist, non_existing_models) = self.loop.run_until_complete(
+ self.libjuju.models_exist(["prometheus2", "grafana"])
+ )
+ self.assertFalse(exist)
+ self.assertEqual(non_existing_models, ["prometheus2"])
+
+ def test_model_names_exist(self, mock_list_models):
+ mock_list_models.return_value = ["prometheus", "grafana"]
+ (exist, non_existing_models) = self.loop.run_until_complete(
+ self.libjuju.models_exist(["prometheus", "grafana"])
+ )
+ self.assertTrue(exist)
+ self.assertEqual(non_existing_models, [])