+ # Add our ssh key to the model, to work around
+ # https://bugs.launchpad.net/juju/+bug/1643076
+ try:
+ ssh_key = await utils.read_ssh_key(loop=self.loop)
+ await utils.execute_process(
+ 'juju', 'add-ssh-key', '-m', model_name, ssh_key, log=log,
+ loop=self.loop)
+ except Exception:
+ log.exception(
+ "Could not add ssh key to model. You will not be able "
+ "to ssh into machines in this model. "
+ "Manually running `juju add-ssh-key <key>` in the cli "
+ "may fix this problem.")
+
+ model = Model()
+ await model.connect(
+ self.connection.endpoint,
+ model_info.uuid,
+ self.connection.username,
+ self.connection.password,
+ self.connection.cacert,
+ self.connection.macaroons,
+ loop=self.loop,
+ )
+
+ return model
+
+ async def destroy_models(self, *uuids):
+ """Destroy one or more models.
+
+ :param str \*uuids: UUIDs of models to destroy
+
+ """
+ model_facade = client.ModelManagerFacade()
+ model_facade.connect(self.connection)
+
+ log.debug(
+ 'Destroying model%s %s',
+ '' if len(uuids) == 1 else 's',
+ ', '.join(uuids)
+ )
+
+ await model_facade.DestroyModels([
+ client.Entity(tag.model(uuid))
+ for uuid in uuids
+ ])
+ destroy_model = destroy_models
+
+ def add_user(self, username, display_name=None, acl=None, models=None):