Merge "Don't manipulate config for admin creds"
diff --git a/common/clients.py b/common/clients.py
index 9f58678..96a34b7 100644
--- a/common/clients.py
+++ b/common/clients.py
@@ -67,8 +67,10 @@
     NOVA_API_VERSION = '2.1'
     CEILOMETER_VERSION = '2'
 
-    def __init__(self, conf):
+    def __init__(self, conf, admin_credentials=False):
         self.conf = conf
+        self.admin_credentials = admin_credentials
+
         if self.conf.auth_url.find('/v'):
             self.auth_version = self.conf.auth_url.split('/v')[1]
         else:
@@ -85,6 +87,21 @@
         self.object_client = self._get_object_client()
         self.metering_client = self._get_metering_client()
 
+    def _username(self):
+        if self.admin_credentials:
+            return self.conf.admin_username
+        return self.conf.username
+
+    def _password(self):
+        if self.admin_credentials:
+            return self.conf.admin_password
+        return self.conf.password
+
+    def _tenant_name(self):
+        if self.admin_credentials:
+            return self.conf.admin_tenant_name
+        return self.conf.tenant_name
+
     def _get_orchestration_client(self):
         endpoint = os.environ.get('HEAT_URL')
         if os.environ.get('OS_NO_CLIENT_AUTH') == 'True':
@@ -102,16 +119,16 @@
                 self.HEATCLIENT_VERSION,
                 endpoint,
                 token=token,
-                username=self.conf.username,
-                password=self.conf.password)
+                username=self._username(),
+                password=self._password())
 
     def _get_identity_client(self):
         user_domain_name = self.conf.user_domain_name
         project_domain_name = self.conf.project_domain_name
         kwargs = {
-            'username': self.conf.username,
-            'password': self.conf.password,
-            'tenant_name': self.conf.tenant_name,
+            'username': self._username(),
+            'password': self._password(),
+            'tenant_name': self._tenant_name(),
             'auth_url': self.conf.auth_url
         }
         # keystone v2 can't ignore domain details
@@ -166,8 +183,8 @@
         # swiftclient does not support keystone sessions yet
         args = {
             'auth_version': self.auth_version,
-            'tenant_name': self.conf.tenant_name,
-            'user': self.conf.username,
+            'tenant_name': self._tenant_name(),
+            'user': self._username(),
             'key': self.conf.password,
             'authurl': self.conf.auth_url,
             'os_options': {'endpoint_type': 'publicURL'},
diff --git a/common/test.py b/common/test.py
index 413e51f..2bf7771 100644
--- a/common/test.py
+++ b/common/test.py
@@ -89,8 +89,8 @@
         else:
             self.verify_cert = self.conf.ca_file or True
 
-    def setup_clients(self, conf):
-        self.manager = clients.ClientManager(conf)
+    def setup_clients(self, conf, admin_credentials=False):
+        self.manager = clients.ClientManager(conf, admin_credentials)
         self.identity_client = self.manager.identity_client
         self.orchestration_client = self.manager.orchestration_client
         self.compute_client = self.manager.compute_client
@@ -102,15 +102,7 @@
         self.client = self.orchestration_client
 
     def setup_clients_for_admin(self):
-        self.assertIsNotNone(self.conf.admin_username,
-                             'No admin username configured')
-        self.assertIsNotNone(self.conf.admin_password,
-                             'No admin password configured')
-        conf = config.init_conf().heat_plugin
-        conf.username = self.conf.admin_username
-        conf.password = self.conf.admin_password
-        conf.tenant_name = self.conf.admin_tenant_name
-        self.setup_clients(conf)
+        self.setup_clients(self.conf, True)
 
     def get_remote_client(self, server_or_ip, username, private_key=None):
         if isinstance(server_or_ip, six.string_types):