Merge "Refactor network retrieval API calls."
authorSteven Pisarski <s.pisarski@cablelabs.com>
Thu, 3 Aug 2017 14:23:55 +0000 (14:23 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 3 Aug 2017 14:23:55 +0000 (14:23 +0000)
13 files changed:
docs/how-to-use/UnitTests.rst
snaps/domain/project.py
snaps/domain/test/project_tests.py
snaps/openstack/create_project.py
snaps/openstack/create_user.py
snaps/openstack/os_credentials.py
snaps/openstack/tests/conf/os_credentials_tests.py
snaps/openstack/tests/create_project_tests.py
snaps/openstack/tests/create_user_tests.py
snaps/openstack/tests/openstack_tests.py
snaps/openstack/utils/keystone_utils.py
snaps/openstack/utils/tests/keystone_utils_tests.py
snaps/test_suite_builder.py

index 9da89be..ac42892 100644 (file)
@@ -120,6 +120,12 @@ ProjectDomainObjectTests
 Ensures that all required members are included when constructing a
 Project domain object
 
+DomainDomainObjectTests
+-----------------------
+
+Ensures that all required members are included when constructing a
+Domain domain object
+
 RoleDomainObjectTests
 ---------------------
 
index 73357c7..54407cf 100644 (file)
@@ -32,3 +32,20 @@ class Project:
 
     def __eq__(self, other):
         return self.name == other.name and self.id == other.id
+
+
+class Domain:
+    """
+    SNAPS domain object for OpenStack Keystone v3+ domains.
+    """
+    def __init__(self, name, domain_id=None):
+        """
+        Constructor
+        :param name: the project's name
+        :param domain_id: the project's domain id
+        """
+        self.name = name
+        self.id = domain_id
+
+    def __eq__(self, other):
+        return self.name == other.name and self.id == other.id
index 73939f0..3f4fca6 100644 (file)
 # limitations under the License.
 
 import unittest
-from snaps.domain.project import Project
+from snaps.domain.project import Project, Domain
 
 
 class ProjectDomainObjectTests(unittest.TestCase):
     """
-    Tests the construction of the snaps.domain.test.Project class
+    Tests the construction of the snaps.domain.project.Project class
     """
 
     def test_construction_positional_minimal(self):
@@ -45,3 +45,19 @@ class ProjectDomainObjectTests(unittest.TestCase):
         self.assertEqual('foo', project.name)
         self.assertEqual('123-456', project.id)
         self.assertEqual('hello', project.domain_id)
+
+
+class DomainDomainObjectTests(unittest.TestCase):
+    """
+    Tests the construction of the snaps.domain.project.Domain class
+    """
+
+    def test_construction_positional(self):
+        domain = Domain('foo', '123-456')
+        self.assertEqual('foo', domain.name)
+        self.assertEqual('123-456', domain.id)
+
+    def test_construction_named_minimal(self):
+        domain = Domain(domain_id='123-456', name='foo')
+        self.assertEqual('foo', domain.name)
+        self.assertEqual('123-456', domain.id)
index 1fbaef6..bc80789 100644 (file)
@@ -111,18 +111,17 @@ class ProjectSettings:
         """
         Constructor
         :param name: the project's name (required)
-        :param domain: the project's domain name (default 'default'). Field is
-                       used for v3 clients
+        :param domain or domain_name: the project's domain name
+                                      (default = 'Default').
+                                      Field is used for v3 clients
         :param description: the description (optional)
         :param enabled: denotes whether or not the user is enabled
                         (default True)
         """
 
         self.name = kwargs.get('name')
-        if kwargs.get('domain'):
-            self.domain = kwargs['domain']
-        else:
-            self.domain = 'default'
+        self.domain_name = kwargs.get(
+            'domain', kwargs.get('domain', 'Default'))
 
         self.description = kwargs.get('description')
         if kwargs.get('enabled') is not None:
index 18de215..b16cea4 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
 #                    and others.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -87,7 +87,9 @@ class OpenStackUser:
             auth_url=self.__os_creds.auth_url,
             project_name=project_name,
             identity_api_version=self.__os_creds.identity_api_version,
+            user_domain_name=self.__os_creds.user_domain_name,
             user_domain_id=self.__os_creds.user_domain_id,
+            project_domain_name=self.__os_creds.project_domain_name,
             project_domain_id=self.__os_creds.project_domain_id,
             interface=self.__os_creds.interface,
             proxy_settings=self.__os_creds.proxy_settings,
@@ -115,7 +117,7 @@ class UserSettings:
         self.password = kwargs.get('password')
         self.project_name = kwargs.get('project_name')
         self.email = kwargs.get('email')
-        self.domain_name = kwargs.get('domain_name', 'default')
+        self.domain_name = kwargs.get('domain_name', 'Default')
         self.enabled = kwargs.get('enabled', True)
         self.roles = kwargs.get('roles', dict())
 
index fbecbfe..d612e05 100644 (file)
@@ -42,10 +42,10 @@ class OSCreds:
                                     clients
         :param heat_api_version: The OpenStack's API version to use for Heat
                                     clients
-        :param user_domain_id: Used for v3 APIs (default=None)
-        :param user_domain_name: Used for v3 APIs (default='default')
-        :param project_domain_id: Used for v3 APIs (default=None)
-        :param project_domain_name: Used for v3 APIs (default='default')
+        :param user_domain_id: Used for v3 APIs (default='default')
+        :param user_domain_name: Used for v3 APIs (default='Default')
+        :param project_domain_id: Used for v3 APIs (default='default')
+        :param project_domain_name: Used for v3 APIs (default='Default')
         :param interface: Used to specify the endpoint type for keystone as
                           public, admin, internal
         :param proxy_settings: instance of os_credentials.ProxySettings class
@@ -85,17 +85,17 @@ class OSCreds:
         else:
             self.heat_api_version = float(kwargs['heat_api_version'])
 
-        self.user_domain_id = kwargs.get('user_domain_id')
+        self.user_domain_id = kwargs.get('user_domain_id', 'default')
 
         if kwargs.get('user_domain_name') is None:
-            self.user_domain_name = 'default'
+            self.user_domain_name = 'Default'
         else:
             self.user_domain_name = kwargs['user_domain_name']
 
-        self.project_domain_id = kwargs.get('project_domain_id')
+        self.project_domain_id = kwargs.get('project_domain_id', 'default')
 
         if kwargs.get('project_domain_name') is None:
-            self.project_domain_name = 'default'
+            self.project_domain_name = 'Default'
         else:
             self.project_domain_name = kwargs['project_domain_name']
 
index 9c6fcdc..333de59 100644 (file)
@@ -157,10 +157,10 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual(2, os_creds.image_api_version)
         self.assertEqual(2, os_creds.compute_api_version)
         self.assertEqual(1, os_creds.heat_api_version)
-        self.assertIsNone(os_creds.user_domain_id)
-        self.assertEqual('default', os_creds.user_domain_name)
-        self.assertIsNone(os_creds.project_domain_id)
-        self.assertEqual('default', os_creds.project_domain_name)
+        self.assertEqual('default', os_creds.user_domain_id)
+        self.assertEqual('Default', os_creds.user_domain_name)
+        self.assertEqual('default', os_creds.project_domain_id)
+        self.assertEqual('Default', os_creds.project_domain_name)
         self.assertEqual('admin', os_creds.interface)
         self.assertFalse(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
@@ -178,10 +178,10 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual(2, os_creds.image_api_version)
         self.assertEqual(2, os_creds.compute_api_version)
         self.assertEqual(1, os_creds.heat_api_version)
-        self.assertIsNone(os_creds.user_domain_id)
-        self.assertEqual('default', os_creds.user_domain_name)
-        self.assertIsNone(os_creds.project_domain_id)
-        self.assertEqual('default', os_creds.project_domain_name)
+        self.assertEqual('default', os_creds.user_domain_id)
+        self.assertEqual('Default', os_creds.user_domain_name)
+        self.assertEqual('default', os_creds.project_domain_id)
+        self.assertEqual('Default', os_creds.project_domain_name)
         self.assertEqual('admin', os_creds.interface)
         self.assertFalse(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
@@ -202,10 +202,10 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual(6, os_creds.image_api_version)
         self.assertEqual(7, os_creds.compute_api_version)
         self.assertEqual(8.0, os_creds.heat_api_version)
-        self.assertIsNone(os_creds.user_domain_id)
-        self.assertEqual('default', os_creds.user_domain_name)
-        self.assertIsNone(os_creds.project_domain_id)
-        self.assertEqual('default', os_creds.project_domain_name)
+        self.assertEqual('default', os_creds.user_domain_id)
+        self.assertEqual('Default', os_creds.user_domain_name)
+        self.assertEqual('default', os_creds.project_domain_id)
+        self.assertEqual('Default', os_creds.project_domain_name)
         self.assertEqual('admin', os_creds.interface)
         self.assertTrue(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
@@ -226,10 +226,10 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual(6, os_creds.image_api_version)
         self.assertEqual(7, os_creds.compute_api_version)
         self.assertEqual(8.0, os_creds.heat_api_version)
-        self.assertIsNone(os_creds.user_domain_id)
-        self.assertEqual('default', os_creds.user_domain_name)
-        self.assertIsNone(os_creds.project_domain_id)
-        self.assertEqual('default', os_creds.project_domain_name)
+        self.assertEqual('default', os_creds.user_domain_id)
+        self.assertEqual('Default', os_creds.user_domain_name)
+        self.assertEqual('default', os_creds.project_domain_id)
+        self.assertEqual('Default', os_creds.project_domain_name)
         self.assertEqual('admin', os_creds.interface)
         self.assertTrue(os_creds.cacert)
         self.assertIsNone(os_creds.proxy_settings)
@@ -248,10 +248,10 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual(2, os_creds.image_api_version)
         self.assertEqual(2, os_creds.compute_api_version)
         self.assertEqual(1, os_creds.heat_api_version)
-        self.assertIsNone(os_creds.user_domain_id)
-        self.assertEqual('default', os_creds.user_domain_name)
-        self.assertIsNone(os_creds.project_domain_id)
-        self.assertEqual('default', os_creds.project_domain_name)
+        self.assertEqual('default', os_creds.user_domain_id)
+        self.assertEqual('Default', os_creds.user_domain_name)
+        self.assertEqual('default', os_creds.project_domain_id)
+        self.assertEqual('Default', os_creds.project_domain_name)
         self.assertEqual('admin', os_creds.interface)
         self.assertFalse(os_creds.cacert)
         self.assertEqual('foo', os_creds.proxy_settings.host)
@@ -325,10 +325,10 @@ class OSCredsUnitTests(unittest.TestCase):
         self.assertEqual(2, os_creds.image_api_version)
         self.assertEqual(2, os_creds.compute_api_version)
         self.assertEqual(1, os_creds.heat_api_version)
-        self.assertIsNone(os_creds.user_domain_id)
-        self.assertEqual('default', os_creds.user_domain_name)
-        self.assertIsNone(os_creds.project_domain_id)
-        self.assertEqual('default', os_creds.project_domain_name)
+        self.assertEqual('default', os_creds.user_domain_id)
+        self.assertEqual('Default', os_creds.user_domain_name)
+        self.assertEqual('default', os_creds.project_domain_id)
+        self.assertEqual('Default', os_creds.project_domain_name)
         self.assertEqual('admin', os_creds.interface)
         self.assertFalse(os_creds.cacert)
         self.assertEqual('foo', os_creds.proxy_settings.host)
index 96d71f2..b225e3d 100644 (file)
@@ -45,14 +45,14 @@ class ProjectSettingsUnitTests(unittest.TestCase):
     def test_name_only(self):
         settings = ProjectSettings(name='foo')
         self.assertEqual('foo', settings.name)
-        self.assertEqual('default', settings.domain)
+        self.assertEqual('Default', settings.domain_name)
         self.assertIsNone(settings.description)
         self.assertTrue(settings.enabled)
 
     def test_config_with_name_only(self):
         settings = ProjectSettings(**{'name': 'foo'})
         self.assertEqual('foo', settings.name)
-        self.assertEqual('default', settings.domain)
+        self.assertEqual('Default', settings.domain_name)
         self.assertIsNone(settings.description)
         self.assertTrue(settings.enabled)
 
@@ -60,7 +60,7 @@ class ProjectSettingsUnitTests(unittest.TestCase):
         settings = ProjectSettings(name='foo', domain='bar',
                                    description='foobar', enabled=False)
         self.assertEqual('foo', settings.name)
-        self.assertEqual('bar', settings.domain)
+        self.assertEqual('bar', settings.domain_name)
         self.assertEqual('foobar', settings.description)
         self.assertFalse(settings.enabled)
 
@@ -69,7 +69,7 @@ class ProjectSettingsUnitTests(unittest.TestCase):
             **{'name': 'foo', 'domain': 'bar', 'description': 'foobar',
                'enabled': False})
         self.assertEqual('foo', settings.name)
-        self.assertEqual('bar', settings.domain)
+        self.assertEqual('bar', settings.domain_name)
         self.assertEqual('foobar', settings.description)
         self.assertFalse(settings.enabled)
 
@@ -86,7 +86,9 @@ class CreateProjectSuccessTests(OSComponentTestCase):
         """
         guid = str(uuid.uuid4())[:-19]
         guid = self.__class__.__name__ + '-' + guid
-        self.project_settings = ProjectSettings(name=guid + '-name')
+        self.project_settings = ProjectSettings(
+            name=guid + '-name',
+            domain=self.os_creds.project_domain_name)
 
         self.keystone = keystone_utils.keystone_client(self.os_creds)
 
@@ -106,7 +108,7 @@ class CreateProjectSuccessTests(OSComponentTestCase):
         value. This test will not do anything with a keystone v2.0 client.
         """
         if self.keystone.version != keystone_utils.V2_VERSION_STR:
-            self.project_settings.domain = 'foo'
+            self.project_settings.domain_name = 'foo'
             self.project_creator = OpenStackProject(self.os_creds,
                                                     self.project_settings)
 
@@ -182,7 +184,9 @@ class CreateProjectUserTests(OSComponentTestCase):
         """
         guid = str(uuid.uuid4())[:-19]
         self.guid = self.__class__.__name__ + '-' + guid
-        self.project_settings = ProjectSettings(name=self.guid + '-name')
+        self.project_settings = ProjectSettings(
+            name=self.guid + '-name',
+            domain=self.os_creds.project_domain_name)
 
         self.keystone = keystone_utils.keystone_client(self.os_creds)
 
@@ -218,7 +222,8 @@ class CreateProjectUserTests(OSComponentTestCase):
         user_creator = OpenStackUser(
             self.os_creds, UserSettings(
                 name=self.guid + '-user',
-                password=self.guid, roles={'admin': 'admin'}))
+                password=self.guid, roles={'admin': 'admin'},
+                domain_name=self.os_creds.user_domain_name))
         self.project_creator.assoc_user(user_creator.create())
         self.user_creators.append(user_creator)
 
@@ -247,14 +252,16 @@ class CreateProjectUserTests(OSComponentTestCase):
         user_creator_1 = OpenStackUser(
             self.os_creds, UserSettings(
                 name=self.guid + '-user1', password=self.guid,
-                roles={'admin': 'admin'}))
+                roles={'admin': 'admin'},
+                domain_name=self.os_creds.user_domain_name))
         self.project_creator.assoc_user(user_creator_1.create())
         self.user_creators.append(user_creator_1)
 
         user_creator_2 = OpenStackUser(
             self.os_creds, UserSettings(
                 name=self.guid + '-user2', password=self.guid,
-                roles={'admin': 'admin'}))
+                roles={'admin': 'admin'},
+                domain_name=self.os_creds.user_domain_name))
         self.project_creator.assoc_user(user_creator_2.create())
         self.user_creators.append(user_creator_2)
 
@@ -288,5 +295,6 @@ def validate_project(keystone, project_settings, project):
     if keystone.version == keystone_utils.V2_VERSION_STR:
         return project_settings.name == project.name
     else:
+        domain = keystone_utils.get_domain_by_id(keystone, project.domain_id)
         return (project_settings.name == project.name and
-                project_settings.domain == project.domain_id)
+                project_settings.domain_name == domain.name)
index 7519700..9f08a32 100644 (file)
@@ -102,9 +102,11 @@ class CreateUserSuccessTests(OSComponentTestCase):
         """
         guid = str(uuid.uuid4())[:-19]
         guid = self.__class__.__name__ + '-' + guid
-        self.user_settings = UserSettings(name=guid + '-name',
-                                          password=guid + '-password',
-                                          roles={'admin': 'admin'})
+        self.user_settings = UserSettings(
+            name=guid + '-name',
+            password=guid + '-password',
+            roles={'admin': 'admin'},
+            domain_name=self.os_creds.user_domain_name)
 
         self.keystone = keystone_utils.keystone_client(self.os_creds)
 
index 71d2dc2..9c53bbd 100644 (file)
@@ -126,7 +126,9 @@ def get_credentials(os_env_file=None, proxy_settings_str=None,
             'compute_api_version': config.get('compute_api_version'),
             'heat_api_version': config.get('heat_api_version'),
             'user_domain_id': config.get('user_domain_id'),
+            'user_domain_name': config.get('user_domain_name'),
             'project_domain_id': config.get('project_domain_id'),
+            'project_domain_name': config.get('project_domain_name'),
             'interface': config.get('interface'),
             'proxy_settings': proxy_settings,
             'cacert': config.get('cacert'),
index 99779ee..10ad68a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
 #                    and others.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,7 @@ from keystoneauth1.identity import v3, v2
 from keystoneauth1 import session
 import requests
 
-from snaps.domain.project import Project
+from snaps.domain.project import Project, Domain
 from snaps.domain.role import Role
 from snaps.domain.user import User
 
@@ -129,7 +129,7 @@ def get_project(keystone=None, os_creds=None, project_settings=None,
     elif project_settings:
         proj_filter['name'] = project_settings.name
         proj_filter['description'] = project_settings.description
-        proj_filter['domain'] = project_settings.domain
+        proj_filter['domain_name'] = project_settings.domain_name
         proj_filter['enabled'] = project_settings.enabled
 
     if keystone.version == V2_VERSION_STR:
@@ -161,8 +161,12 @@ def create_project(keystone, project_settings):
             project_settings.name, project_settings.description,
             project_settings.enabled)
     else:
+        os_domain = __get_os_domain_by_name(
+            keystone, project_settings.domain_name)
+        if not os_domain:
+            os_domain = project_settings.domain_name
         os_project = keystone.projects.create(
-            project_settings.name, project_settings.domain,
+            project_settings.name, os_domain,
             description=project_settings.description,
             enabled=project_settings.enabled)
         domain_id = os_project.domain_id
@@ -238,18 +242,21 @@ def create_user(keystone, user_settings):
             email=user_settings.email, tenant_id=project_id,
             enabled=user_settings.enabled)
     else:
+        os_domain = __get_os_domain_by_name(
+            keystone, user_settings.domain_name)
+        if not os_domain:
+            os_domain = user_settings.domain_name
         os_user = keystone.users.create(
             name=user_settings.name, password=user_settings.password,
             email=user_settings.email, project=project,
-            domain=user_settings.domain_name, enabled=user_settings.enabled)
+            domain=os_domain, enabled=user_settings.enabled)
 
     for role_name, role_project in user_settings.roles.items():
         os_role = get_role_by_name(keystone, role_name)
         os_project = get_project(keystone=keystone, project_name=role_project)
 
         if os_role and os_project:
-            existing_roles = get_roles_by_user(keystone, os_user,
-                                               os_project)
+            existing_roles = get_roles_by_user(keystone, os_user, os_project)
             found = False
             for role in existing_roles:
                 if role.id == os_role.id:
@@ -355,6 +362,31 @@ def grant_user_role_to_project(keystone, role, user, project):
         keystone.roles.grant(os_role, user=user, project=project)
 
 
+def get_domain_by_id(keystone, domain_id):
+    """
+    Returns the first OpenStack domain with the given name else None
+    :param keystone: the Keystone client
+    :param domain_id: the domain ID to retrieve
+    :return: the SNAPS-OO Domain domain object
+    """
+    domain = keystone.domains.get(domain_id)
+    if domain:
+        return Domain(name=domain.name, domain_id=domain.id)
+
+
+def __get_os_domain_by_name(keystone, domain_name):
+    """
+    Returns the first OpenStack domain with the given name else None
+    :param keystone: the Keystone client
+    :param domain_name: the domain name to lookup
+    :return: the OpenStack domain object
+    """
+    domains = keystone.domains.list(name=domain_name)
+    for domain in domains:
+        if domain.name == domain_name:
+            return domain
+
+
 class KeystoneException(Exception):
     """
     Exception when calls to the Keystone client cannot be served properly
index 3aa275d..a46cbd1 100644 (file)
@@ -85,8 +85,10 @@ class KeystoneUtilsTests(OSComponentTestCase):
         """
         Tests the keystone_utils.create_user() function
         """
-        user_settings = UserSettings(name=self.username,
-                                     password=str(uuid.uuid4()))
+        user_settings = UserSettings(
+            name=self.username,
+            password=str(uuid.uuid4()),
+            domain_name=self.os_creds.user_domain_name)
         self.user = keystone_utils.create_user(self.keystone, user_settings)
         self.assertEqual(self.username, self.user.name)
 
@@ -98,7 +100,8 @@ class KeystoneUtilsTests(OSComponentTestCase):
         """
         Tests the keyston_utils.create_project() funtion
         """
-        project_settings = ProjectSettings(name=self.project_name)
+        project_settings = ProjectSettings(
+            name=self.project_name, domain=self.os_creds.project_domain_name)
         self.project = keystone_utils.create_project(self.keystone,
                                                      project_settings)
         self.assertEqual(self.project_name, self.project.name)
@@ -108,6 +111,11 @@ class KeystoneUtilsTests(OSComponentTestCase):
         self.assertIsNotNone(project)
         self.assertEqual(self.project_name, self.project.name)
 
+        domain = keystone_utils.get_domain_by_id(
+            self.keystone, project.domain_id)
+        self.assertIsNotNone(domain)
+        self.assertEqual(domain.id, project.domain_id)
+
     def test_get_endpoint_success(self):
         """
         Tests to ensure that proper credentials and proper service type can
@@ -161,12 +169,14 @@ class KeystoneUtilsTests(OSComponentTestCase):
         Tests the keystone_utils function grant_user_role_to_project()
         :return:
         """
-        user_settings = UserSettings(name=self.username,
-                                     password=str(uuid.uuid4()))
+        user_settings = UserSettings(
+            name=self.username, password=str(uuid.uuid4()),
+            domain_name=self.os_creds.user_domain_name)
         self.user = keystone_utils.create_user(self.keystone, user_settings)
         self.assertEqual(self.username, self.user.name)
 
-        project_settings = ProjectSettings(name=self.project_name)
+        project_settings = ProjectSettings(
+            name=self.project_name, domain=self.os_creds.project_domain_name)
         self.project = keystone_utils.create_project(self.keystone,
                                                      project_settings)
         self.assertEqual(self.project_name, self.project.name)
index 24c3e65..cf99a5f 100644 (file)
@@ -23,7 +23,8 @@ from snaps.domain.test.network_tests import (
     SecurityGroupDomainObjectTests, SecurityGroupRuleDomainObjectTests,
     PortDomainObjectTests, RouterDomainObjectTests,
     InterfaceRouterDomainObjectTests, NetworkObjectTests, SubnetObjectTests)
-from snaps.domain.test.project_tests import ProjectDomainObjectTests
+from snaps.domain.test.project_tests import (
+    ProjectDomainObjectTests, DomainDomainObjectTests)
 from snaps.domain.test.role_tests import RoleDomainObjectTests
 from snaps.domain.test.stack_tests import StackDomainObjectTests
 from snaps.domain.test.user_tests import UserDomainObjectTests
@@ -122,6 +123,8 @@ def add_unit_tests(suite):
         ProjectSettingsUnitTests))
     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
         ProjectDomainObjectTests))
+    suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
+        DomainDomainObjectTests))
     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
         RoleDomainObjectTests))
     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
@@ -324,7 +327,8 @@ def add_openstack_integration_tests(suite, os_creds, ext_net_name,
         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
         log_level=log_level))
     suite.addTest(OSIntegrationTestCase.parameterize(
-        CreateKeypairsCleanupTests, os_creds=os_creds, ext_net_name=ext_net_name,
+        CreateKeypairsCleanupTests, os_creds=os_creds,
+        ext_net_name=ext_net_name,
         use_keystone=use_keystone,
         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
         log_level=log_level))