Fix keystone v2 support for multisite
Placement attr regions returned empty along with vim_project when user provides keystone v2 in auth url This fixes the vim-register for VIM with keystone v2 version Closes-Bug: #1563661 Closes-Bug: #1563189 Change-Id: I439a21da6909ca6587dbb3d9de3dc478d02f7158
This commit is contained in:
parent
d96033b8af
commit
75c4c518d2
@ -79,8 +79,8 @@ class OpenStack_Driver(abstract_vim_driver.VimAbstractDriver):
|
|||||||
'user_domain_id'
|
'user_domain_id'
|
||||||
] = CONF.keystone_authtoken.user_domain_id
|
] = CONF.keystone_authtoken.user_domain_id
|
||||||
else:
|
else:
|
||||||
auth_cred['tenant_id'] = vim_project.pop('id', None)
|
auth_cred['tenant_id'] = vim_project.get('id', None)
|
||||||
auth_cred['tenant_name'] = vim_project.pop('name', None)
|
auth_cred['tenant_name'] = vim_project.get('name', None)
|
||||||
# user_id is not supported in keystone v2
|
# user_id is not supported in keystone v2
|
||||||
auth_cred.pop('user_id', None)
|
auth_cred.pop('user_id', None)
|
||||||
auth_cred['auth_url'] = vim_obj['auth_url']
|
auth_cred['auth_url'] = vim_obj['auth_url']
|
||||||
@ -106,8 +106,10 @@ class OpenStack_Driver(abstract_vim_driver.VimAbstractDriver):
|
|||||||
def _find_regions(self, ks_client):
|
def _find_regions(self, ks_client):
|
||||||
if ks_client.version == 'v2.0':
|
if ks_client.version == 'v2.0':
|
||||||
service_list = ks_client.services.list()
|
service_list = ks_client.services.list()
|
||||||
heat_service_id = (service.id for service in
|
heat_service_id = None
|
||||||
service_list if service.type == 'orchestration')
|
for service in service_list:
|
||||||
|
if service.type == 'orchestration':
|
||||||
|
heat_service_id = service.id
|
||||||
endpoints_list = ks_client.endpoints.list()
|
endpoints_list = ks_client.endpoints.list()
|
||||||
region_list = [endpoint.region for endpoint in endpoints_list if
|
region_list = [endpoint.region for endpoint in endpoints_list if
|
||||||
endpoint.service_id == heat_service_id]
|
endpoint.service_id == heat_service_id]
|
||||||
|
4
tacker/tests/etc/samples/vim-config-ks-v2.yaml
Normal file
4
tacker/tests/etc/samples/vim-config-ks-v2.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
auth_url: http://127.0.0.1:5000/v2.0
|
||||||
|
username: nfv_user
|
||||||
|
password: devstack
|
||||||
|
project_name: nfv
|
@ -119,17 +119,6 @@ class BaseTackerTest(base.TestCase):
|
|||||||
self.assertEqual(vnf_current_status, 'ACTIVE')
|
self.assertEqual(vnf_current_status, 'ACTIVE')
|
||||||
self.validate_vnf_instance(vnfd_instance, vnf_instance)
|
self.validate_vnf_instance(vnfd_instance, vnf_instance)
|
||||||
|
|
||||||
def verify_vim(self, vim_instance, config_data, name, description):
|
|
||||||
self.assertIsNotNone(vim_instance)
|
|
||||||
self.assertEqual(vim_instance['vim']['description'], description)
|
|
||||||
self.assertEqual(vim_instance['vim']['name'], name)
|
|
||||||
self.assertIsNotNone(vim_instance['vim']['tenant_id'])
|
|
||||||
self.assertIsNotNone(vim_instance['vim']['id'])
|
|
||||||
self.assertEqual(vim_instance['vim']['auth_cred']['username'],
|
|
||||||
config_data['username'])
|
|
||||||
self.assertEqual(vim_instance['vim']['auth_cred']['project_name'],
|
|
||||||
config_data['project_name'])
|
|
||||||
|
|
||||||
def get_vim(self, vim_list, vim_name):
|
def get_vim(self, vim_list, vim_name):
|
||||||
if len(vim_list.values()) == 0:
|
if len(vim_list.values()) == 0:
|
||||||
assert False, "vim_list is Empty: Default VIM is missing"
|
assert False, "vim_list is Empty: Default VIM is missing"
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from tacker.tests.functional import base
|
from tacker.tests.functional import base
|
||||||
from tacker.tests.utils import read_file
|
from tacker.tests.utils import read_file
|
||||||
|
|
||||||
@ -19,15 +20,15 @@ import yaml
|
|||||||
|
|
||||||
|
|
||||||
class VimTestCreate(base.BaseTackerTest):
|
class VimTestCreate(base.BaseTackerTest):
|
||||||
def _test_create_delete_vim(self, vim_file, name,
|
def _test_create_delete_vim(self, vim_file, name, description, vim_type,
|
||||||
description, vim_type):
|
version=None):
|
||||||
data = dict()
|
|
||||||
data = yaml.load(read_file(vim_file))
|
data = yaml.load(read_file(vim_file))
|
||||||
|
|
||||||
password = data['password']
|
password = data['password']
|
||||||
username = data['username']
|
username = data['username']
|
||||||
project_name = data['project_name']
|
project_name = data['project_name']
|
||||||
auth_url = data['auth_url']
|
auth_url = data['auth_url']
|
||||||
|
|
||||||
vim_arg = {'vim': {'name': name, 'description': description,
|
vim_arg = {'vim': {'name': name, 'description': description,
|
||||||
'type': vim_type,
|
'type': vim_type,
|
||||||
'auth_url': auth_url,
|
'auth_url': auth_url,
|
||||||
@ -36,24 +37,57 @@ class VimTestCreate(base.BaseTackerTest):
|
|||||||
'vim_project': {'name': project_name}}}
|
'vim_project': {'name': project_name}}}
|
||||||
|
|
||||||
# Register vim
|
# Register vim
|
||||||
vim_instance = self.client.create_vim(vim_arg)
|
vim_res = self.client.create_vim(vim_arg)
|
||||||
vim_id = vim_instance['vim']['id']
|
vim_obj = vim_res['vim']
|
||||||
self.verify_vim(vim_instance, data, name, description)
|
vim_id = vim_obj['id']
|
||||||
|
self.verify_vim(vim_obj, data, name, description, version)
|
||||||
|
|
||||||
# Read vim
|
# Read vim
|
||||||
vim_instance_show = self.client.show_vim(vim_id)
|
vim_show_res = self.client.show_vim(vim_id)
|
||||||
self.verify_vim(vim_instance_show, data, name, description)
|
self.verify_vim(vim_show_res['vim'], data, name, description, version)
|
||||||
|
|
||||||
# Delete vim
|
# Delete vim
|
||||||
try:
|
try:
|
||||||
self.client.delete_vim(vim_id)
|
self.client.delete_vim(vim_id)
|
||||||
except Exception:
|
except Exception:
|
||||||
assert False, ("Failed to delete vim %s" %
|
self.assertFalse(True, "Failed to delete vim %s" % vim_id)
|
||||||
vim_id)
|
|
||||||
|
def verify_vim(self, vim_instance, config_data, name, description,
|
||||||
|
version):
|
||||||
|
expected_regions = ['RegionOne']
|
||||||
|
self.assertIsNotNone(vim_instance)
|
||||||
|
self.assertEqual(vim_instance['description'], description)
|
||||||
|
self.assertEqual(vim_instance['name'], name)
|
||||||
|
self.assertIsNotNone(vim_instance['tenant_id'])
|
||||||
|
self.assertIsNotNone(vim_instance['id'])
|
||||||
|
self.assertEqual(vim_instance['auth_cred']['username'],
|
||||||
|
config_data['username'])
|
||||||
|
self.assertEqual(vim_instance['placement_attr']['regions'],
|
||||||
|
expected_regions)
|
||||||
|
if version:
|
||||||
|
method_name = 'verify_vim_' + version
|
||||||
|
getattr(self, method_name)(vim_instance, config_data)
|
||||||
|
|
||||||
|
def verify_vim_v2(self, vim_instance, config_data):
|
||||||
|
self.assertEqual(vim_instance['auth_cred']['tenant_name'],
|
||||||
|
config_data['project_name'])
|
||||||
|
|
||||||
|
def verify_vim_v3(self, vim_instance, config_data):
|
||||||
|
self.assertEqual(vim_instance['auth_cred']['project_name'],
|
||||||
|
config_data['project_name'])
|
||||||
|
|
||||||
def test_create_delete_local_vim(self):
|
def test_create_delete_local_vim(self):
|
||||||
name = 'Default vim'
|
name = 'Default vim'
|
||||||
description = 'Local vim description'
|
description = 'Local vim description'
|
||||||
vim_type = 'openstack'
|
vim_type = 'openstack'
|
||||||
self._test_create_delete_vim(
|
ks_version = 'v3'
|
||||||
'local-vim.yaml', name, description, vim_type)
|
self._test_create_delete_vim('local-vim.yaml', name, description,
|
||||||
|
vim_type, ks_version)
|
||||||
|
|
||||||
|
def test_create_delete_local_vim_keystone_v2(self):
|
||||||
|
name = 'Openstack'
|
||||||
|
description = 'OpenStack VIM with keystone v2'
|
||||||
|
vim_type = 'openstack'
|
||||||
|
ks_version = 'v2'
|
||||||
|
self._test_create_delete_vim('vim-config-ks-v2.yaml', name,
|
||||||
|
description, vim_type, ks_version)
|
||||||
|
Loading…
Reference in New Issue
Block a user