summaryrefslogtreecommitdiff
path: root/tests/clients.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/clients.py')
-rw-r--r--tests/clients.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/clients.py b/tests/clients.py
new file mode 100644
index 000000000..9ac977479
--- /dev/null
+++ b/tests/clients.py
@@ -0,0 +1,68 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+import logging
+from keystoneclient.v2_0 import client as ksclient
+
+logging.basicConfig(level=logging.WARNING)
+LOG = logging.getLogger(__name__)
+
+class OpenStackClients(object):
+
+ def __init__(self):
+ self._connected_clients = {}
+ self._supported_clients = self.__class__.__subclasses__()
+ self.client = None
+
+ def get_client(self, name):
+ if name in self._connected_clients:
+ return self._connected_clients[name]
+ try:
+ aclass = next(s for s in self._supported_clients if name in
+ s.__name__)
+ sclient = aclass()
+ connected_client = sclient.create()
+ self._connected_clients[name] = connected_client
+ return connected_client
+
+ except StopIteration:
+ LOG.warn("Requested client %s not found", name)
+ raise
+
+ def create(self):
+ pass
+
+
+class KeystoneClient(OpenStackClients):
+
+ def __init__(self):
+ super(KeystoneClient, self).__init__()
+ # TODO: this shouldn't be hard coded
+ self.creds = {'auth_url': 'http://10.0.0.4:5000/v2.0',
+ 'username': 'admin',
+ 'password': 'steakfordinner',
+ 'tenant_name': 'admin'}
+
+ def create(self):
+ if self.client is None:
+ self.client = ksclient.Client(**self.creds)
+ return self.client
+
+
+if __name__ == '__main__':
+ # TODO: mox this
+ client_mgr = OpenStackClients()
+ ks = client_mgr.get_client('KeystoneClient')
+ LOG.info(ks)
+ ks2 = client_mgr.get_client('KeystoneClient')
+ LOG.info(ks2)