]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
openstack: implement OpenStack.set_provider 669/head
authorLoic Dachary <ldachary@redhat.com>
Thu, 22 Oct 2015 13:57:11 +0000 (15:57 +0200)
committerLoic Dachary <ldachary@redhat.com>
Fri, 23 Oct 2015 23:11:30 +0000 (01:11 +0200)
Setting the provider name depending on the OS_AUTH_URL content is
generally useful and moved to the OpenStack base class. There is a need
to cope with public OpenStack providers special cases, even if
temporarily (i.e. no volumes on OVH, no security group on RackSpace
etc.).

Signed-off-by: Loic Dachary <ldachary@redhat.com>
teuthology/openstack/__init__.py
teuthology/openstack/test/test_openstack.py

index 0fe8d7125bbec0e82ab718ec6a809875a32ebc70..703df24d31004f4232734ecb6fd4bb34787167bb 100644 (file)
@@ -68,6 +68,19 @@ class OpenStack(object):
         self.up_string = "UNKNOWN"
         self.teuthology_suite = 'teuthology-suite'
 
+    def set_provider(self):
+        if 'OS_AUTH_URL' not in os.environ:
+            raise Exception('no OS_AUTH_URL environment variable')
+        providers = (('cloud.ovh.net', 'ovh'),
+                     ('entercloudsuite.com', 'entercloudsuite'),
+                     ('rackspacecloud.com', 'rackspace'))
+        self.provider = None
+        for (pattern, provider) in providers:
+            if pattern in os.environ['OS_AUTH_URL']:
+                self.provider = provider
+                break
+        return self.provider
+
     @staticmethod
     def get_value(result, field):
         """
@@ -412,16 +425,7 @@ ssh access   : ssh {identity}{username}@{ip} # logs in /usr/share/nginx/html
         except subprocess.CalledProcessError:
             log.exception("openstack server list")
             raise Exception("verify openrc.sh has been sourced")
-        if 'OS_AUTH_URL' not in os.environ:
-            raise Exception('no OS_AUTH_URL environment variable')
-        providers = (('cloud.ovh.net', 'ovh'),
-                     ('entercloudsuite.com', 'entercloudsuite'),
-                     ('rackspacecloud.com', 'rackspace'))
-        self.provider = None
-        for (pattern, provider) in providers:
-            if pattern in os.environ['OS_AUTH_URL']:
-                self.provider = provider
-                break
+        self.set_provider()
 
     def flavor(self):
         """
index 33d1679a0a5317cc1b2710e18e3f17aa0d874077..c0577ff49301c13bebdeb8ca1108832bfffe27cd 100644 (file)
@@ -86,6 +86,14 @@ class TestOpenStack(object):
         }
         assert defaults == OpenStack().interpret_hints(defaults, None)
 
+    def test_set_provider(self):
+        auth = os.environ.get('OS_AUTH_URL', None)
+        os.environ['OS_AUTH_URL'] = 'cloud.ovh.net'
+        assert OpenStack().set_provider() == 'ovh'
+        if auth != None:
+            os.environ['OS_AUTH_URL'] = auth
+        else:
+            del os.environ['OS_AUTH_URL']
 
 class TestTeuthologyOpenStack(object):