Fix domain in tenant creation 09/39109/4
authorJuha Kosonen <juha.kosonen@nokia.com>
Fri, 11 Aug 2017 06:31:25 +0000 (09:31 +0300)
committerJuha Kosonen <juha.kosonen@nokia.com>
Tue, 15 Aug 2017 10:54:18 +0000 (13:54 +0300)
Use the ID of the domain when creating a tenant on keystone v3.

Change-Id: Ic415237e2bb2d537f07ab2245816a575f977aaa0
Signed-off-by: Juha Kosonen <juha.kosonen@nokia.com>
functest/tests/unit/utils/test_openstack_utils.py
functest/utils/openstack_utils.py

index cabd18e..3bd7e3d 100644 (file)
@@ -13,6 +13,7 @@ import unittest
 import mock
 
 from functest.utils import openstack_utils
+from functest.utils.constants import CONST
 
 
 class OSUtilsTesting(unittest.TestCase):
@@ -187,11 +188,18 @@ class OSUtilsTesting(unittest.TestCase):
         mock_obj.configure_mock(**attrs)
         self.role = mock_obj
 
+        mock_obj = mock.Mock()
+        attrs = {'id': 'domain_id',
+                 'name': 'test_domain'}
+        mock_obj.configure_mock(**attrs)
+        self.domain = mock_obj
+
         self.keystone_client = mock.Mock()
         attrs = {'projects.list.return_value': [self.tenant],
                  'tenants.list.return_value': [self.tenant],
                  'users.list.return_value': [self.user],
                  'roles.list.return_value': [self.role],
+                 'domains.list.return_value': [self.domain],
                  'projects.create.return_value': self.tenant,
                  'tenants.create.return_value': self.tenant,
                  'users.create.return_value': self.user,
@@ -1650,9 +1658,16 @@ class OSUtilsTesting(unittest.TestCase):
                                      'test_role'),
                          'role_id')
 
+    def test_get_domain_id_default(self):
+        self.assertEqual(openstack_utils.
+                         get_domain_id(self.keystone_client,
+                                       'test_domain'),
+                         'domain_id')
+
     def test_create_tenant_default(self):
         with mock.patch('functest.utils.openstack_utils.'
                         'is_keystone_v3', return_value=True):
+            CONST.__setattr__('OS_PROJECT_DOMAIN_NAME', 'Default')
             self.assertEqual(openstack_utils.
                              create_tenant(self.keystone_client,
                                            'test_tenant',
index 1bdfa25..335f14c 100644 (file)
@@ -22,6 +22,7 @@ from heatclient import client as heatclient
 from novaclient import client as novaclient
 from keystoneclient import client as keystoneclient
 from neutronclient.neutron import client as neutronclient
+from functest.utils.constants import CONST
 
 import functest.utils.functest_utils as ft_utils
 
@@ -1376,13 +1377,25 @@ def get_role_id(keystone_client, role_name):
     return id
 
 
+def get_domain_id(keystone_client, domain_name):
+    domains = keystone_client.domains.list()
+    id = ''
+    for d in domains:
+        if d.name == domain_name:
+            id = d.id
+            break
+    return id
+
+
 def create_tenant(keystone_client, tenant_name, tenant_description):
     try:
         if is_keystone_v3():
+            domain_name = CONST.__getattribute__('OS_PROJECT_DOMAIN_NAME')
+            domain_id = get_domain_id(keystone_client, domain_name)
             tenant = keystone_client.projects.create(
                 name=tenant_name,
                 description=tenant_description,
-                domain="default",
+                domain=domain_id,
                 enabled=True)
         else:
             tenant = keystone_client.tenants.create(tenant_name,