X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Flibjuju.py;h=ceb5e027c8ce82684a9242503efa3652dbf80b5b;hp=2f1883796e56178ebf68cabb45e951a306b64bf5;hb=refs%2Fchanges%2F39%2F9639%2F4;hpb=42f328a34a3ec7c066350de81e1331632a3fee92 diff --git a/n2vc/libjuju.py b/n2vc/libjuju.py index 2f18837..ceb5e02 100644 --- a/n2vc/libjuju.py +++ b/n2vc/libjuju.py @@ -22,7 +22,7 @@ from juju.errors import JujuAPIError from juju.model import Model from juju.machine import Machine from juju.application import Application -from juju.client._definitions import FullStatus +from juju.client._definitions import FullStatus, QueryApplicationOffersResults from n2vc.juju_watcher import JujuModelWatcher from n2vc.provisioner import AsyncSSHProvisioner from n2vc.n2vc_conn import N2VCConnector @@ -705,21 +705,18 @@ class Libjuju: async def add_relation( self, model_name: str, - application_name_1: str, - application_name_2: str, - relation_1: str, - relation_2: str, + endpoint_1: str, + endpoint_2: str, ): """Add relation - :param: model_name: Model name - :param: application_name_1 First application name - :param: application_name_2: Second application name - :param: relation_1: First relation name - :param: relation_2: Second relation name + :param: model_name: Model name + :param: endpoint_1 First endpoint name + ("app:endpoint" format or directly the saas name) + :param: endpoint_2: Second endpoint name (^ same format) """ - self.log.debug("Adding relation: {} -> {}".format(relation_1, relation_2)) + self.log.debug("Adding relation: {} -> {}".format(endpoint_1, endpoint_2)) # Get controller controller = await self.get_controller() @@ -727,13 +724,9 @@ class Libjuju: # Get model model = await self.get_model(controller, model_name) - # Build relation strings - r1 = "{}:{}".format(application_name_1, relation_1) - r2 = "{}:{}".format(application_name_2, relation_2) - # Add relation try: - await model.add_relation(relation1=r1, relation2=r2) + await model.add_relation(endpoint_1, endpoint_2) except JujuAPIError as e: if "not found" in e.message: self.log.warning("Relation not found: {}".format(e.message)) @@ -966,3 +959,17 @@ class Libjuju: return models finally: await self.disconnect_controller(controller) + + async def list_offers(self, model_name: str) -> QueryApplicationOffersResults: + """List models with certain names + + :param: model_name: Model name + + :return: Returns list of offers + """ + + controller = await self.get_controller() + try: + return await controller.list_offers(model_name) + finally: + await self.disconnect_controller(controller)