diff options
Diffstat (limited to 'tests/clients.py')
| -rw-r--r-- | tests/clients.py | 68 |
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) |
