Add ability to get cloud for controller #43

Merged
merged 1 commit into from Jan 5, 2017
Jump to file or symbol
Failed to load files and symbols.
+17 −5
Split
View
@@ -76,10 +76,9 @@ def __init__(self, loop=None):
model_facade.connect(self.connection)
owner = owner or self.connection.info['user-info']['identity']
+ cloud_name = cloud_name or await self.get_cloud()
- # XXX: We should be able to accept a credential_name without
- # a cloud_name, and just get the cloud_name from the controller.
- if credential_name and cloud_name:
+ if credential_name:
credential = tag.credential(
cloud_name,
tag.untag('user-', owner),
@@ -88,7 +87,6 @@ def __init__(self, loop=None):
else:
credential = None
-
log.debug('Creating model %s', model_name)
model_info = await model_facade.CreateModel(
@@ -183,6 +181,17 @@ def kill(self):
"""
pass
+ async def get_cloud(self):
+ """
+ Get the name of the cloud that this controller lives on.
+ """
+ cloud_facade = client.CloudFacade()
+ cloud_facade.connect(self.connection)
+
+ result = await cloud_facade.Clouds()
+ cloud = list(result.clouds.keys())[0] # only lives on one cloud
+ return tag.untag('cloud-', cloud)
+
def get_models(self, all_=False, username=None):
"""Return list of available models on this controller.
View
@@ -931,7 +931,10 @@ def debug_log(
storage=storage,
)
- await app_facade.Deploy([app])
+ result = await app_facade.Deploy([app])
+ errors = [r.error.message for r in result.results if r.error]
+ if errors:
+ raise JujuError('\n'.join(errors))
return await self._wait_for_new('application', application_name)
def destroy(self):