Added controller to ssh fix. (#100)
[osm/N2VC.git] / juju / controller.py
index 113325e..135027a 100644 (file)
@@ -5,7 +5,6 @@ from . import tag
 from . import utils
 from .client import client
 from .client import connection
-from .client import watcher
 from .model import Model
 
 log = logging.getLogger(__name__)
@@ -23,6 +22,7 @@ class Controller(object):
         """
         self.loop = loop or asyncio.get_event_loop()
         self.connection = None
+        self.controller_name = None
 
     async def connect(
             self, endpoint, username, password, cacert=None, macaroons=None):
@@ -45,6 +45,7 @@ class Controller(object):
         """
         self.connection = (
             await connection.Connection.connect_controller(controller_name))
+        self.controller_name = controller_name
 
     async def disconnect(self):
         """Shut down the watcher task and close websockets.
@@ -103,9 +104,14 @@ class Controller(object):
         # 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)
-        except Exception as e:
+
+            if self.controller_name:
+                model_name = "{}:{}".format(self.controller_name, model_name)
+
+            cmd = ['juju', 'add-ssh-key', '-m', model_name, ssh_key]
+
+            await utils.execute_process(*cmd, 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. "
@@ -120,6 +126,7 @@ class Controller(object):
             self.connection.password,
             self.connection.cacert,
             self.connection.macaroons,
+            loop=self.loop,
         )
 
         return model
@@ -154,7 +161,7 @@ class Controller(object):
         :param list models: Models to which the user is granted access
 
         """
-        pass
+        raise NotImplementedError()
 
     def change_user_password(self, username, password):
         """Change the password for a user in this controller.
@@ -163,7 +170,7 @@ class Controller(object):
         :param str password: New password
 
         """
-        pass
+        raise NotImplementedError()
 
     def destroy(self, destroy_all_models=False):
         """Destroy this controller.
@@ -172,7 +179,7 @@ class Controller(object):
             controller.
 
         """
-        pass
+        raise NotImplementedError()
 
     def disable_user(self, username):
         """Disable a user.
@@ -180,20 +187,20 @@ class Controller(object):
         :param str username: Username
 
         """
-        pass
+        raise NotImplementedError()
 
     def enable_user(self):
         """Re-enable a previously disabled user.
 
         """
-        pass
+        raise NotImplementedError()
 
     def kill(self):
         """Forcibly terminate all machines and other associated resources for
         this controller.
 
         """
-        pass
+        raise NotImplementedError()
 
     async def get_cloud(self):
         """
@@ -214,7 +221,7 @@ class Controller(object):
         :param str username: User for which to list models (admin use only)
 
         """
-        pass
+        raise NotImplementedError()
 
     def get_payloads(self, *patterns):
         """Return list of known payloads.
@@ -232,7 +239,7 @@ class Controller(object):
             - payload status
 
         """
-        pass
+        raise NotImplementedError()
 
     def get_users(self, all_=False):
         """Return list of users that can connect to this controller.
@@ -240,13 +247,13 @@ class Controller(object):
         :param bool all_: Include disabled users
 
         """
-        pass
+        raise NotImplementedError()
 
     def login(self):
         """Log in to this controller.
 
         """
-        pass
+        raise NotImplementedError()
 
     def logout(self, force=False):
         """Log out of this controller.
@@ -255,7 +262,7 @@ class Controller(object):
             with a password
 
         """
-        pass
+        raise NotImplementedError()
 
     def get_model(self, name):
         """Get a model by name.
@@ -263,7 +270,7 @@ class Controller(object):
         :param str name: Model name
 
         """
-        pass
+        raise NotImplementedError()
 
     def get_user(self, username):
         """Get a user by name.
@@ -271,4 +278,4 @@ class Controller(object):
         :param str username: Username
 
         """
-        pass
+        raise NotImplementedError()