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'
|
||||
] = CONF.keystone_authtoken.user_domain_id
|
||||
else:
|
||||
auth_cred['tenant_id'] = vim_project.pop('id', None)
|
||||
auth_cred['tenant_name'] = vim_project.pop('name', None)
|
||||
auth_cred['tenant_id'] = vim_project.get('id', None)
|
||||
auth_cred['tenant_name'] = vim_project.get('name', None)
|
||||
# user_id is not supported in keystone v2
|
||||
auth_cred.pop('user_id', None)
|
||||
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):
|
||||
if ks_client.version == 'v2.0':
|
||||
service_list = ks_client.services.list()
|
||||
heat_service_id = (service.id for service in
|
||||
service_list if service.type == 'orchestration')
|
||||
heat_service_id = None
|
||||
for service in service_list:
|
||||
if service.type == 'orchestration':
|
||||
heat_service_id = service.id
|
||||
endpoints_list = ks_client.endpoints.list()
|
||||
region_list = [endpoint.region for endpoint in endpoints_list if
|
||||
endpoint.service_id == heat_service_id]
|
||||
|
|
|
@ -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.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):
|
||||
if len(vim_list.values()) == 0:
|
||||
assert False, "vim_list is Empty: Default VIM is missing"
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
from tacker.tests.functional import base
|
||||
from tacker.tests.utils import read_file
|
||||
|
||||
|
@ -19,15 +20,15 @@ import yaml
|
|||
|
||||
|
||||
class VimTestCreate(base.BaseTackerTest):
|
||||
def _test_create_delete_vim(self, vim_file, name,
|
||||
description, vim_type):
|
||||
data = dict()
|
||||
def _test_create_delete_vim(self, vim_file, name, description, vim_type,
|
||||
version=None):
|
||||
data = yaml.load(read_file(vim_file))
|
||||
|
||||
password = data['password']
|
||||
username = data['username']
|
||||
project_name = data['project_name']
|
||||
auth_url = data['auth_url']
|
||||
|
||||
vim_arg = {'vim': {'name': name, 'description': description,
|
||||
'type': vim_type,
|
||||
'auth_url': auth_url,
|
||||
|
@ -36,24 +37,57 @@ class VimTestCreate(base.BaseTackerTest):
|
|||
'vim_project': {'name': project_name}}}
|
||||
|
||||
# Register vim
|
||||
vim_instance = self.client.create_vim(vim_arg)
|
||||
vim_id = vim_instance['vim']['id']
|
||||
self.verify_vim(vim_instance, data, name, description)
|
||||
vim_res = self.client.create_vim(vim_arg)
|
||||
vim_obj = vim_res['vim']
|
||||
vim_id = vim_obj['id']
|
||||
self.verify_vim(vim_obj, data, name, description, version)
|
||||
|
||||
# Read vim
|
||||
vim_instance_show = self.client.show_vim(vim_id)
|
||||
self.verify_vim(vim_instance_show, data, name, description)
|
||||
vim_show_res = self.client.show_vim(vim_id)
|
||||
self.verify_vim(vim_show_res['vim'], data, name, description, version)
|
||||
|
||||
# Delete vim
|
||||
try:
|
||||
self.client.delete_vim(vim_id)
|
||||
except Exception:
|
||||
assert False, ("Failed to delete vim %s" %
|
||||
vim_id)
|
||||
self.assertFalse(True, "Failed to delete vim %s" % 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):
|
||||
name = 'Default vim'
|
||||
description = 'Local vim description'
|
||||
vim_type = 'openstack'
|
||||
self._test_create_delete_vim(
|
||||
'local-vim.yaml', name, description, vim_type)
|
||||
ks_version = 'v3'
|
||||
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