Merge "change get_service_tenant_id function"
This commit is contained in:
commit
3c710fc182
|
@ -134,3 +134,51 @@ def test_copy_vips(mock_subprocess):
|
|||
mock_subprocess.assert_called_once_with(
|
||||
['fuel2', 'env', 'copy', 'vips', str(env_id)]
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("data, exception", [
|
||||
(
|
||||
'[{"ID": "2aed71d8816f4e5f8d4ad06836521d49", "Name": "admin"}, '
|
||||
'{"ID": "09f1c11740ba4bc399387f3995d5160e", "Name": "services"}]',
|
||||
False
|
||||
),
|
||||
(
|
||||
'[{"id": "2aed71d8816f4e5f8d4ad06836521d49", "name": "admin"}, '
|
||||
'{"id": "09f1c11740ba4bc399387f3995d5160e", "name": "services"}]',
|
||||
False,
|
||||
),
|
||||
(
|
||||
'[{"ID": "2aed71d8816f4e5f8d4ad06836521d49", "NAME": "admin"}, '
|
||||
'{"ID": "09f1c11740ba4bc399387f3995d5160e", "NAME": "services"}]',
|
||||
False
|
||||
),
|
||||
(
|
||||
'[{"ID": "2aed71d8816f4e5f8d4ad06836521d49", "NAME": "admin"}]',
|
||||
True
|
||||
),
|
||||
])
|
||||
@pytest.mark.parametrize("key,value", [
|
||||
("services", "09f1c11740ba4bc399387f3995d5160e"),
|
||||
("Services", "09f1c11740ba4bc399387f3995d5160e"),
|
||||
("SERVICES", "09f1c11740ba4bc399387f3995d5160e"),
|
||||
])
|
||||
def test_openstack_project_value(mocker, data, key, value, exception):
|
||||
env = mock.Mock()
|
||||
node = mock.Mock()
|
||||
mocker.patch("octane.util.env.get_admin_password", return_value="pswd")
|
||||
mocker.patch("octane.util.ssh.call_output", return_value=data)
|
||||
if exception:
|
||||
with pytest.raises(Exception) as exc_info:
|
||||
env_util.get_openstack_project_value(env, node, key)
|
||||
assert "Field {0} not found in openstack project list".format(key) == \
|
||||
exc_info.value.message
|
||||
else:
|
||||
assert value == env_util.get_openstack_project_value(env, node, key)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("node", [mock.Mock(), None])
|
||||
def test_get_service_tenant_id(mocker, node):
|
||||
mock_obj = mocker.patch("octane.util.env.get_openstack_project_value")
|
||||
env = mock.Mock()
|
||||
env_util.get_service_tenant_id(env, node)
|
||||
mock_obj.assert_called_once_with(env, node, "services")
|
||||
|
|
|
@ -126,7 +126,7 @@ def parse_tenant_get(output, field):
|
|||
"Field {0} not found in output:\n{1}".format(field, output))
|
||||
|
||||
|
||||
def get_service_tenant_id(env, node=None):
|
||||
def get_openstack_project_dict(env, node=None):
|
||||
if node is None:
|
||||
node = get_one_controller(env)
|
||||
|
||||
|
@ -134,13 +134,27 @@ def get_service_tenant_id(env, node=None):
|
|||
tenant_out = ssh.call_output(
|
||||
[
|
||||
'sh', '-c',
|
||||
'. /root/openrc; keystone --os-password={0} tenant-get services'
|
||||
'. /root/openrc; openstack --os-password {0} project list -f json'
|
||||
.format(password),
|
||||
],
|
||||
node=node,
|
||||
)
|
||||
tenant_id = parse_tenant_get(tenant_out, 'id')
|
||||
return tenant_id
|
||||
data = [{k.lower(): v for k, v in d.items()}
|
||||
for d in json.loads(tenant_out)]
|
||||
return {i["name"]: i["id"] for i in data}
|
||||
|
||||
|
||||
def get_openstack_project_value(env, node, key):
|
||||
data = get_openstack_project_dict(env, node)
|
||||
try:
|
||||
return data[key.lower()]
|
||||
except KeyError:
|
||||
raise Exception(
|
||||
"Field {0} not found in openstack project list".format(key))
|
||||
|
||||
|
||||
def get_service_tenant_id(env, node=None):
|
||||
return get_openstack_project_value(env, node, "services")
|
||||
|
||||
|
||||
def cache_service_tenant_id(env, node=None):
|
||||
|
|
Loading…
Reference in New Issue