Change add_relation function in libjuju.py to accept saas
Before, app_1, endpoint1, app_2, endpoint2 parameters were needed.
Now we directly pass the endpoint names of the relation with the right format.
If "app:endpoint", it is understood that the endpoint it of a charm in the current model.
If "name", it is understood that the endpoint is a consumed endpoint from another model.
This function allows to cross-model-relate charms to external models
Change-Id: I84ab45ba735a1960ab742d9ec731c357ec1042c6
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/n2vc/tests/unit/test_libjuju.py b/n2vc/tests/unit/test_libjuju.py
index 27f0454..a789bc8 100644
--- a/n2vc/tests/unit/test_libjuju.py
+++ b/n2vc/tests/unit/test_libjuju.py
@@ -670,9 +670,7 @@
mock_add_relation.side_effect = JujuAPIError(result)
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_warning.assert_called_with("Relation not found: not found")
@@ -696,9 +694,7 @@
mock_add_relation.side_effect = JujuAPIError(result)
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_warning.assert_called_with("Relation already exists: already exists")
@@ -719,9 +715,7 @@
with self.assertRaises(JujuAPIError):
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_disconnect_controller.assert_called_once()
@@ -738,13 +732,31 @@
mock_get_model.return_value = juju.model.Model()
self.loop.run_until_complete(
- self.libjuju.add_relation(
- "model", "app1", "app2", "relation1", "relation2",
- )
+ self.libjuju.add_relation("model", "app1:relation1", "app2:relation2",)
)
mock_add_relation.assert_called_with(
- relation1="app1:relation1", relation2="app2:relation2"
+ "app1:relation1", "app2:relation2"
+ )
+ mock_disconnect_controller.assert_called_once()
+ mock_disconnect_model.assert_called_once()
+
+ def test_saas(
+ self,
+ mock_add_relation,
+ mock_disconnect_controller,
+ mock_disconnect_model,
+ mock_get_model,
+ mock_get_controller,
+ ):
+ mock_get_model.return_value = juju.model.Model()
+
+ self.loop.run_until_complete(
+ self.libjuju.add_relation("model", "app1:relation1", "saas_name",)
+ )
+
+ mock_add_relation.assert_called_with(
+ "app1:relation1", "saas_name"
)
mock_disconnect_controller.assert_called_once()
mock_disconnect_model.assert_called_once()