Merge "Restricted dependency of the novaclient."
[snaps.git] / snaps / openstack / tests / os_source_file_test.py
index 20a8d80..af75381 100644 (file)
 # 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 unittest
+import logging
 import uuid
+import unittest
 
 from snaps import file_utils
-import openstack_tests
-import logging
-
 from snaps.openstack.create_project import ProjectSettings
 from snaps.openstack.create_user import UserSettings
+from snaps.openstack.tests import openstack_tests
 from snaps.openstack.utils import deploy_utils, keystone_utils
 
 dev_os_env_file = 'openstack/tests/conf/os_env.yaml'
@@ -32,17 +31,23 @@ dev_os_env_file = 'openstack/tests/conf/os_env.yaml'
 
 class OSComponentTestCase(unittest.TestCase):
 
-    """
-    Super for test classes requiring a connection to OpenStack
-    """
-    def __init__(self, method_name='runTest', os_env_file=None, ext_net_name=None, http_proxy_str=None,
-                 ssh_proxy_cmd=None, log_level=logging.DEBUG):
+    def __init__(self, method_name='runTest', os_creds=None, ext_net_name=None, log_level=logging.DEBUG):
+        """
+        Super for test classes requiring a connection to OpenStack
+        :param method_name: default 'runTest'
+        :param os_creds: the OSCreds object, when null it searches for the file {cwd}/openstack/tests/conf/os_env.yaml
+        :param ext_net_name: the name of the external network that is used for creating routers for floating IPs
+        :param log_level: the logging level of your test run (default DEBUG)
+        """
         super(OSComponentTestCase, self).__init__(method_name)
 
         logging.basicConfig(level=log_level)
 
-        self.os_creds = openstack_tests.get_credentials(os_env_file=os_env_file, proxy_settings_str=http_proxy_str,
-                                                        ssh_proxy_cmd=ssh_proxy_cmd, dev_os_env_file=dev_os_env_file)
+        if os_creds:
+            self.os_creds = os_creds
+        else:
+            self.os_creds = openstack_tests.get_credentials(dev_os_env_file=dev_os_env_file)
+
         self.ext_net_name = ext_net_name
 
         if not self.ext_net_name and file_utils.file_exists(dev_os_env_file):
@@ -50,8 +55,7 @@ class OSComponentTestCase(unittest.TestCase):
             self.ext_net_name = test_conf.get('ext_net')
 
     @staticmethod
-    def parameterize(testcase_klass, os_env_file, ext_net_name, http_proxy_str=None, ssh_proxy_cmd=None,
-                     log_level=logging.DEBUG):
+    def parameterize(testcase_klass, os_creds, ext_net_name, log_level=logging.DEBUG):
         """ Create a suite containing all tests taken from the given
             subclass, passing them the parameter 'param'.
         """
@@ -59,36 +63,48 @@ class OSComponentTestCase(unittest.TestCase):
         test_names = test_loader.getTestCaseNames(testcase_klass)
         suite = unittest.TestSuite()
         for name in test_names:
-            suite.addTest(testcase_klass(name, os_env_file, ext_net_name, http_proxy_str, ssh_proxy_cmd, log_level))
+            suite.addTest(testcase_klass(name, os_creds, ext_net_name, log_level))
         return suite
 
 
 class OSIntegrationTestCase(OSComponentTestCase):
 
-    """
-    Super for test classes requiring a connection to OpenStack
-    """
-    def __init__(self, method_name='runTest', os_env_file=None, ext_net_name=None, http_proxy_str=None,
-                 ssh_proxy_cmd=None, use_keystone=False, flavor_metadata=None, log_level=logging.DEBUG):
-        super(OSIntegrationTestCase, self).__init__(method_name=method_name, os_env_file=os_env_file,
-                                                    ext_net_name=ext_net_name, http_proxy_str=http_proxy_str,
-                                                    ssh_proxy_cmd=ssh_proxy_cmd, log_level=log_level)
+    def __init__(self, method_name='runTest', os_creds=None, ext_net_name=None, use_keystone=False,
+                 flavor_metadata=None, image_metadata=None, log_level=logging.DEBUG):
+        """
+        Super for integration tests requiring a connection to OpenStack
+        :param method_name: default 'runTest'
+        :param os_creds: the OSCreds object, when null it searches for the file {cwd}/openstack/tests/conf/os_env.yaml
+        :param ext_net_name: the name of the external network that is used for creating routers for floating IPs
+        :param use_keystone: when true, these tests will create a new user/project under which to run the test
+        :param image_metadata: dict() containing the URLs for the disk, kernel, and ramdisk images when multi-part
+                               images are required.
+            image_metadata={'disk_url': 'http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img',
+                            'kernel_url': 'http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-kernel',
+                            'ramdisk_url': 'http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-initramfs'})
+        :param flavor_metadata: dict() to be sent directly into the Nova client generally used for page sizes
+        :param log_level: the logging level of your test run (default DEBUG)
+        """
+        super(OSIntegrationTestCase, self).__init__(method_name=method_name, os_creds=os_creds,
+                                                    ext_net_name=ext_net_name, log_level=log_level)
         self.use_keystone = use_keystone
         self.keystone = None
         self.flavor_metadata = flavor_metadata
+        self.image_metadata = image_metadata
 
     @staticmethod
-    def parameterize(testcase_klass, os_env_file, ext_net_name, http_proxy_str=None, ssh_proxy_cmd=None,
-                     use_keystone=False, flavor_metadata=None, log_level=logging.DEBUG):
-        """ Create a suite containing all tests taken from the given
-            subclass, passing them the parameter 'param'.
+    def parameterize(testcase_klass, os_creds, ext_net_name, use_keystone=False, flavor_metadata=None,
+                     image_metadata=None, log_level=logging.DEBUG):
+        """
+        Create a suite containing all tests taken from the given
+        subclass, passing them the parameter 'param'.
         """
         test_loader = unittest.TestLoader()
         test_names = test_loader.getTestCaseNames(testcase_klass)
         suite = unittest.TestSuite()
         for name in test_names:
-            suite.addTest(testcase_klass(name, os_env_file, ext_net_name, http_proxy_str, ssh_proxy_cmd, use_keystone,
-                                         flavor_metadata, log_level))
+            suite.addTest(testcase_klass(name, os_creds, ext_net_name, use_keystone, flavor_metadata, image_metadata,
+                                         log_level))
         return suite
 
     """