diff options
| author | Jeff Peeler <jpeeler@redhat.com> | 2015-03-28 10:08:33 -0700 |
|---|---|---|
| committer | Jeff Peeler <jpeeler@redhat.com> | 2015-05-13 15:38:07 -0400 |
| commit | 21cd478cbd0bf14f9522e088c99399886a8fcf28 (patch) | |
| tree | d36311fc82581e22db62b8993a1e1a8243ea0c28 /tests/clients.py | |
| parent | abe4a9ccb25b171122f424e548215fe20eff459e (diff) | |
| download | kolla-21cd478cbd0bf14f9522e088c99399886a8fcf28.tar.gz kolla-21cd478cbd0bf14f9522e088c99399886a8fcf28.zip | |
Add functional tests to tox
This adds functional tests to tox, along with a number of prerequisite
steps. Since this is primarily a bash project, pbr usage has been avoided.
Tests are to be written in python and put in the tests directory.
Running tox -e setupenv will execute a setup script
(tests/setup_docker.sh) to ensure the running instance of docker meets
the minimum version requirement.
Running tox -e images will execute the image building script
(tools/build-all-docker-images) and will parse the resulting output to report
failures.
Running tox -e startenv will generate the environment file, run
"tools/kolla start", and run first time initialization (eventually).
Running tox -e functional is for actually testing the deployed OpenStack
environment via a series of tests utilizing the client APIs.
Change-Id: Iff6dfdca43f0c44d471e7540a7836e56a0de4507
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) |
