+ @classmethod
+ async def connect_current(cls):
+ """Connect to the currently active model.
+
+ """
+ jujudata = JujuData()
+ controller_name = jujudata.current_controller()
+ controller = jujudata.controllers()[controller_name]
+ endpoint = controller['api-endpoints'][0]
+ cacert = controller.get('ca-cert')
+ accounts = jujudata.accounts()[controller_name]
+ username = accounts['current-account']
+ password = accounts['accounts'][username]['password']
+ models = jujudata.models()[controller_name]['accounts'][username]
+ model_name = models['current-model']
+ model_uuid = models['models'][model_name]['uuid']
+
+ return await cls.connect(
+ endpoint, model_uuid, username, password, cacert)
+
+ @classmethod
+ async def connect_model(cls, model):
+ """Connect to a model by name.
+
+ :param str model: <controller>:<model>
+
+ """
+ controller_name, model_name = model.split(':')
+
+ jujudata = JujuData()
+ controller = jujudata.controllers()[controller_name]
+ endpoint = controller['api-endpoints'][0]
+ cacert = controller.get('ca-cert')
+ accounts = jujudata.accounts()[controller_name]
+ username = accounts['current-account']
+ password = accounts['accounts'][username]['password']
+ models = jujudata.models()[controller_name]['accounts'][username]
+ model_uuid = models['models'][model_name]['uuid']
+
+ return await cls.connect(
+ endpoint, model_uuid, username, password, cacert)
+