Merge "Return complete response from servers_client"
This commit is contained in:
commit
ab7d1e3641
@ -223,5 +223,5 @@ class AggregatesAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
server = self.create_test_server(name=server_name,
|
||||
availability_zone=az_name,
|
||||
wait_until='ACTIVE')
|
||||
body = admin_servers_client.show_server(server['id'])
|
||||
body = admin_servers_client.show_server(server['id'])['server']
|
||||
self.assertEqual(self.host, body[self._host_key])
|
||||
|
@ -38,7 +38,7 @@ class FixedIPsTestJson(base.BaseV2ComputeAdminTest):
|
||||
def resource_setup(cls):
|
||||
super(FixedIPsTestJson, cls).resource_setup()
|
||||
server = cls.create_test_server(wait_until='ACTIVE')
|
||||
server = cls.servers_client.show_server(server['id'])
|
||||
server = cls.servers_client.show_server(server['id'])['server']
|
||||
for ip_set in server['addresses']:
|
||||
for ip in server['addresses'][ip_set]:
|
||||
if ip['OS-EXT-IPS:type'] == 'fixed':
|
||||
|
@ -40,7 +40,7 @@ class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest):
|
||||
def resource_setup(cls):
|
||||
super(FixedIPsNegativeTestJson, cls).resource_setup()
|
||||
server = cls.create_test_server(wait_until='ACTIVE')
|
||||
server = cls.servers_client.show_server(server['id'])
|
||||
server = cls.servers_client.show_server(server['id'])['server']
|
||||
for ip_set in server['addresses']:
|
||||
for ip in server['addresses'][ip_set]:
|
||||
if ip['OS-EXT-IPS:type'] == 'fixed':
|
||||
|
@ -49,7 +49,7 @@ class LiveBlockMigrationTestJSON(base.BaseV2ComputeAdminTest):
|
||||
]
|
||||
|
||||
def _get_server_details(self, server_id):
|
||||
body = self.admin_servers_client.show_server(server_id)
|
||||
body = self.admin_servers_client.show_server(server_id)['server']
|
||||
return body
|
||||
|
||||
def _get_host_for_server(self, server_id):
|
||||
|
@ -66,7 +66,7 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
# Reset server's state to 'active'
|
||||
self.client.reset_state(self.s1_id, state='active')
|
||||
# Verify server's state
|
||||
server = self.client.show_server(self.s1_id)
|
||||
server = self.client.show_server(self.s1_id)['server']
|
||||
self.assertEqual(server['status'], 'ACTIVE')
|
||||
servers = body['servers']
|
||||
# Verify error server in list result
|
||||
@ -112,11 +112,11 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
network = self.get_tenant_network()
|
||||
network_kwargs = fixed_network.set_networks_kwarg(network)
|
||||
test_server = self.client.create_server(name, image_id, flavor,
|
||||
**network_kwargs)
|
||||
**network_kwargs)['server']
|
||||
self.addCleanup(self.client.delete_server, test_server['id'])
|
||||
waiters.wait_for_server_status(self.client,
|
||||
test_server['id'], 'ACTIVE')
|
||||
server = self.client.show_server(test_server['id'])
|
||||
server = self.client.show_server(test_server['id'])['server']
|
||||
self.assertEqual(server['status'], 'ACTIVE')
|
||||
hostname = server[self._host_key]
|
||||
params = {'host': hostname}
|
||||
@ -135,14 +135,14 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
self.client.reset_state(self.s1_id)
|
||||
|
||||
# Verify server's state
|
||||
server = self.client.show_server(self.s1_id)
|
||||
server = self.client.show_server(self.s1_id)['server']
|
||||
self.assertEqual(server['status'], 'ERROR')
|
||||
|
||||
# Reset server's state to 'active'
|
||||
self.client.reset_state(self.s1_id, state='active')
|
||||
|
||||
# Verify server's state
|
||||
server = self.client.show_server(self.s1_id)
|
||||
server = self.client.show_server(self.s1_id)['server']
|
||||
self.assertEqual(server['status'], 'ACTIVE')
|
||||
|
||||
@decorators.skip_because(bug="1240043")
|
||||
@ -164,7 +164,7 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
# resetting vm state require admin privilege
|
||||
self.client.reset_state(self.s1_id, state='error')
|
||||
rebuilt_server = self.non_admin_client.rebuild_server(
|
||||
self.s1_id, self.image_ref_alt)
|
||||
self.s1_id, self.image_ref_alt)['server']
|
||||
self.addCleanup(waiters.wait_for_server_status, self.non_admin_client,
|
||||
self.s1_id, 'ACTIVE')
|
||||
self.addCleanup(self.non_admin_client.rebuild_server, self.s1_id,
|
||||
@ -179,7 +179,8 @@ class ServersAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
rebuilt_server['id'], 'ACTIVE',
|
||||
raise_on_error=False)
|
||||
# Verify the server properties after rebuilding
|
||||
server = self.non_admin_client.show_server(rebuilt_server['id'])
|
||||
server = (self.non_admin_client.show_server(rebuilt_server['id'])
|
||||
['server'])
|
||||
rebuilt_image_id = server['image']['id']
|
||||
self.assertEqual(self.image_ref_alt, rebuilt_image_id)
|
||||
|
||||
|
@ -189,7 +189,7 @@ class AttachInterfacesTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.add_fixed_ip(server['id'], networkId=network_id)
|
||||
# Remove the fixed IP from server.
|
||||
server_detail = self.os.servers_client.show_server(
|
||||
server['id'])
|
||||
server['id'])['server']
|
||||
# Get the Fixed IP from server.
|
||||
fixed_ip = None
|
||||
for ip_set in server_detail['addresses']:
|
||||
|
@ -64,7 +64,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
personality=personality,
|
||||
disk_config=disk_config)
|
||||
cls.password = cls.server_initial['adminPass']
|
||||
cls.server = cls.client.show_server(cls.server_initial['id'])
|
||||
cls.server = (cls.client.show_server(cls.server_initial['id'])
|
||||
['server'])
|
||||
|
||||
def _create_net_subnet_ret_net_from_cidr(self, cidr):
|
||||
name_net = data_utils.rand_name(self.__class__.__name__)
|
||||
@ -185,7 +186,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
self.addCleanup(cleanup_server)
|
||||
|
||||
addresses = self.client.list_addresses(server_multi_nics['id'])
|
||||
addresses = (self.client.list_addresses(server_multi_nics['id'])
|
||||
['addresses'])
|
||||
|
||||
# We can't predict the ip addresses assigned to the server on networks.
|
||||
# Sometimes the assigned addresses are ['19.80.0.2', '19.86.0.2'], at
|
||||
@ -226,7 +228,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
self.addCleanup(cleanup_server)
|
||||
|
||||
addresses = self.client.list_addresses(server_multi_nics['id'])
|
||||
addresses = (self.client.list_addresses(server_multi_nics['id'])
|
||||
['addresses'])
|
||||
|
||||
addr = [addresses[net1['network']['name']][0]['addr'],
|
||||
addresses[net2['network']['name']][0]['addr'],
|
||||
@ -315,7 +318,7 @@ class ServersWithSpecificFlavorTestJSON(base.BaseV2ComputeAdminTest):
|
||||
|
||||
# Get partition number of server without extra specs.
|
||||
server_no_eph_disk = self.client.show_server(
|
||||
server_no_eph_disk['id'])
|
||||
server_no_eph_disk['id'])['server']
|
||||
linux_client = remote_client.RemoteClient(
|
||||
self.get_server_ip(server_no_eph_disk),
|
||||
self.ssh_user,
|
||||
@ -333,7 +336,7 @@ class ServersWithSpecificFlavorTestJSON(base.BaseV2ComputeAdminTest):
|
||||
flavor=flavor_with_eph_disk_id)
|
||||
|
||||
server_with_eph_disk = self.client.show_server(
|
||||
server_with_eph_disk['id'])
|
||||
server_with_eph_disk['id'])['server']
|
||||
linux_client = remote_client.RemoteClient(
|
||||
self.get_server_ip(server_with_eph_disk),
|
||||
self.ssh_user,
|
||||
|
@ -150,7 +150,7 @@ class DeleteServersAdminTestJSON(base.BaseV2ComputeAdminTest):
|
||||
server = self.create_test_server(wait_until='ACTIVE')
|
||||
self.admin_client.reset_state(server['id'], state='error')
|
||||
# Verify server's state
|
||||
server = self.non_admin_client.show_server(server['id'])
|
||||
server = self.non_admin_client.show_server(server['id'])['server']
|
||||
self.assertEqual(server['status'], 'ERROR')
|
||||
self.non_admin_client.delete_server(server['id'])
|
||||
waiters.wait_for_server_termination(self.servers_client,
|
||||
|
@ -44,12 +44,12 @@ class ServerDiskConfigTestJSON(base.BaseV2ComputeTest):
|
||||
cls.server_id = server['id']
|
||||
|
||||
def _update_server_with_disk_config(self, disk_config):
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
if disk_config != server['OS-DCF:diskConfig']:
|
||||
server = self.client.update_server(self.server_id,
|
||||
disk_config=disk_config)
|
||||
server = self.client.update_server(
|
||||
self.server_id, disk_config=disk_config)['server']
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual(disk_config, server['OS-DCF:diskConfig'])
|
||||
|
||||
@test.idempotent_id('bef56b09-2e8c-4883-a370-4950812f430e')
|
||||
@ -59,13 +59,13 @@ class ServerDiskConfigTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
server = self.client.rebuild_server(self.server_id,
|
||||
self.image_ref_alt,
|
||||
disk_config='MANUAL')
|
||||
disk_config='MANUAL')['server']
|
||||
|
||||
# Wait for the server to become active
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
|
||||
# Verify the specified attributes are set correctly
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
|
||||
|
||||
@test.idempotent_id('9c9fae77-4feb-402f-8450-bf1c8b609713')
|
||||
@ -75,17 +75,17 @@ class ServerDiskConfigTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
server = self.client.rebuild_server(self.server_id,
|
||||
self.image_ref_alt,
|
||||
disk_config='AUTO')
|
||||
disk_config='AUTO')['server']
|
||||
|
||||
# Wait for the server to become active
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
|
||||
# Verify the specified attributes are set correctly
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
|
||||
|
||||
def _get_alternative_flavor(self):
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
|
||||
if server['flavor']['id'] == self.flavor_ref:
|
||||
return self.flavor_ref_alt
|
||||
@ -108,7 +108,7 @@ class ServerDiskConfigTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.confirm_resize_server(self.server_id)
|
||||
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
|
||||
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
|
||||
|
||||
@test.idempotent_id('693d16f3-556c-489a-8bac-3d0ca2490bad')
|
||||
@ -127,7 +127,7 @@ class ServerDiskConfigTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.confirm_resize_server(self.server_id)
|
||||
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
|
||||
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
|
||||
|
||||
@test.idempotent_id('5ef18867-358d-4de9-b3c9-94d4ba35742f')
|
||||
@ -137,9 +137,9 @@ class ServerDiskConfigTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
# Update the disk_config attribute to manual
|
||||
server = self.client.update_server(self.server_id,
|
||||
disk_config='MANUAL')
|
||||
disk_config='MANUAL')['server']
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
|
||||
# Verify the disk_config attribute is set correctly
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
|
||||
|
@ -38,7 +38,8 @@ class InstanceActionsTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.reboot_server(self.server_id, 'HARD')
|
||||
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
|
||||
|
||||
body = self.client.list_instance_actions(self.server_id)
|
||||
body = (self.client.list_instance_actions(self.server_id)
|
||||
['instanceActions'])
|
||||
self.assertTrue(len(body) == 2, str(body))
|
||||
self.assertTrue(any([i for i in body if i['action'] == 'create']))
|
||||
self.assertTrue(any([i for i in body if i['action'] == 'reboot']))
|
||||
@ -46,7 +47,7 @@ class InstanceActionsTestJSON(base.BaseV2ComputeTest):
|
||||
@test.idempotent_id('aacc71ca-1d70-4aa5-bbf6-0ff71470e43c')
|
||||
def test_get_instance_action(self):
|
||||
# Get the action details of the provided server
|
||||
body = self.client.get_instance_action(self.server_id,
|
||||
self.request_id)
|
||||
body = self.client.get_instance_action(
|
||||
self.server_id, self.request_id)['instanceAction']
|
||||
self.assertEqual(self.server_id, body['instance_uuid'])
|
||||
self.assertEqual('create', body['action'])
|
||||
|
@ -274,7 +274,7 @@ class ListServerFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
if not self.fixed_network_name:
|
||||
msg = 'fixed_network_name needs to be configured to run this test'
|
||||
raise self.skipException(msg)
|
||||
self.s1 = self.client.show_server(self.s1['id'])
|
||||
self.s1 = self.client.show_server(self.s1['id'])['server']
|
||||
for addr_spec in self.s1['addresses'][self.fixed_network_name]:
|
||||
ip = addr_spec['addr']
|
||||
if addr_spec['version'] == 4:
|
||||
@ -298,7 +298,7 @@ class ListServerFiltersTestJSON(base.BaseV2ComputeTest):
|
||||
if not self.fixed_network_name:
|
||||
msg = 'fixed_network_name needs to be configured to run this test'
|
||||
raise self.skipException(msg)
|
||||
self.s1 = self.client.show_server(self.s1['id'])
|
||||
self.s1 = self.client.show_server(self.s1['id'])['server']
|
||||
addr_spec = self.s1['addresses'][self.fixed_network_name][0]
|
||||
ip = addr_spec['addr'][0:-3]
|
||||
if addr_spec['version'] == 4:
|
||||
|
@ -52,8 +52,8 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
self.__class__.server_id = server['id']
|
||||
except Exception:
|
||||
# Rebuild server if something happened to it during a test
|
||||
self.__class__.server_id = self.rebuild_server(self.server_id,
|
||||
validatable=True)
|
||||
self.__class__.server_id = self.rebuild_server(
|
||||
self.server_id, validatable=True)['server']
|
||||
|
||||
def tearDown(self):
|
||||
self.server_check_teardown()
|
||||
@ -87,7 +87,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
if CONF.validation.run_validation:
|
||||
# Verify that the user can authenticate with the new password
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
linux_client = remote_client.RemoteClient(
|
||||
self.get_server_ip(server),
|
||||
self.ssh_user,
|
||||
@ -97,7 +97,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
def _test_reboot_server(self, reboot_type):
|
||||
if CONF.validation.run_validation:
|
||||
# Get the time the server was last rebooted,
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
linux_client = remote_client.RemoteClient(
|
||||
self.get_server_ip(server),
|
||||
self.ssh_user,
|
||||
@ -132,7 +132,8 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
self._test_reboot_server('SOFT')
|
||||
|
||||
def _rebuild_server_and_check(self, image_ref):
|
||||
rebuilt_server = self.client.rebuild_server(self.server_id, image_ref)
|
||||
rebuilt_server = (self.client.rebuild_server(self.server_id, image_ref)
|
||||
['server'])
|
||||
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
|
||||
msg = ('Server was not rebuilt to the original image. '
|
||||
'The original image: {0}. The current image: {1}'
|
||||
@ -148,12 +149,13 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
personality = [{'path': 'rebuild.txt',
|
||||
'contents': base64.b64encode(file_contents)}]
|
||||
password = 'rebuildPassw0rd'
|
||||
rebuilt_server = self.client.rebuild_server(self.server_id,
|
||||
self.image_ref_alt,
|
||||
name=new_name,
|
||||
metadata=meta,
|
||||
personality=personality,
|
||||
adminPass=password)
|
||||
rebuilt_server = self.client.rebuild_server(
|
||||
self.server_id,
|
||||
self.image_ref_alt,
|
||||
name=new_name,
|
||||
metadata=meta,
|
||||
personality=personality,
|
||||
adminPass=password)['server']
|
||||
|
||||
# If the server was rebuilt on a different image, restore it to the
|
||||
# original image once the test ends
|
||||
@ -169,7 +171,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
# Verify the server properties after the rebuild completes
|
||||
waiters.wait_for_server_status(self.client,
|
||||
rebuilt_server['id'], 'ACTIVE')
|
||||
server = self.client.show_server(rebuilt_server['id'])
|
||||
server = self.client.show_server(rebuilt_server['id'])['server']
|
||||
rebuilt_image_id = server['image']['id']
|
||||
self.assertTrue(self.image_ref_alt.endswith(rebuilt_image_id))
|
||||
self.assertEqual(new_name, server['name'])
|
||||
@ -187,13 +189,14 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
def test_rebuild_server_in_stop_state(self):
|
||||
# The server in stop state should be rebuilt using the provided
|
||||
# image and remain in SHUTOFF state
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
old_image = server['image']['id']
|
||||
new_image = (self.image_ref_alt
|
||||
if old_image == self.image_ref else self.image_ref)
|
||||
self.client.stop_server(self.server_id)
|
||||
waiters.wait_for_server_status(self.client, self.server_id, 'SHUTOFF')
|
||||
rebuilt_server = self.client.rebuild_server(self.server_id, new_image)
|
||||
rebuilt_server = (self.client.rebuild_server(self.server_id, new_image)
|
||||
['server'])
|
||||
# If the server was rebuilt on a different image, restore it to the
|
||||
# original image once the test ends
|
||||
if self.image_ref_alt != self.image_ref:
|
||||
@ -208,7 +211,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
# Verify the server properties after the rebuild completes
|
||||
waiters.wait_for_server_status(self.client,
|
||||
rebuilt_server['id'], 'SHUTOFF')
|
||||
server = self.client.show_server(rebuilt_server['id'])
|
||||
server = self.client.show_server(rebuilt_server['id'])['server']
|
||||
rebuilt_image_id = server['image']['id']
|
||||
self.assertEqual(new_image, rebuilt_image_id)
|
||||
|
||||
@ -232,7 +235,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
waiters.wait_for_server_status(self.client, self.server_id,
|
||||
expected_status)
|
||||
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
self.assertEqual(self.flavor_ref_alt, server['flavor']['id'])
|
||||
|
||||
if stop:
|
||||
@ -269,7 +272,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.revert_resize_server(self.server_id)
|
||||
waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
|
||||
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
self.assertEqual(self.flavor_ref, server['flavor']['id'])
|
||||
|
||||
@test.idempotent_id('b963d4f1-94b3-4c40-9e97-7b583f46e470')
|
||||
@ -358,7 +361,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
def _get_output(self):
|
||||
output = self.client.get_console_output(
|
||||
self.server_id, 10).data
|
||||
self.server_id, 10)['output']
|
||||
self.assertTrue(output, "Console output was empty.")
|
||||
lines = len(output.split('\n'))
|
||||
self.assertEqual(lines, 10)
|
||||
@ -387,7 +390,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
|
||||
def _check_full_length_console_log():
|
||||
output = self.client.get_console_output(server['id'],
|
||||
None).data
|
||||
None)['output']
|
||||
self.assertTrue(output, "Console output was empty.")
|
||||
lines = len(output.split('\n'))
|
||||
|
||||
@ -453,7 +456,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
waiters.wait_for_server_status(self.client, self.server_id,
|
||||
'SHELVED_OFFLOADED')
|
||||
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
image_name = server['name'] + '-shelved'
|
||||
params = {'name': image_name}
|
||||
images = self.images_client.list_images(**params)['images']
|
||||
@ -475,7 +478,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
# Lock the server,try server stop(exceptions throw),unlock it and retry
|
||||
self.client.lock_server(self.server_id)
|
||||
self.addCleanup(self.client.unlock_server, self.server_id)
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
self.assertEqual(server['status'], 'ACTIVE')
|
||||
# Locked server is not allowed to be stopped by non-admin user
|
||||
self.assertRaises(lib_exc.Conflict,
|
||||
@ -501,7 +504,7 @@ class ServerActionsTestJSON(base.BaseV2ComputeTest):
|
||||
console_types = ['novnc', 'xvpvnc']
|
||||
for console_type in console_types:
|
||||
body = self.client.get_vnc_console(self.server_id,
|
||||
console_type)
|
||||
console_type)['console']
|
||||
self.assertEqual(console_type, body['type'])
|
||||
self.assertNotEqual('', body['url'])
|
||||
self._validate_url(body['url'])
|
||||
|
@ -45,7 +45,7 @@ class ServerAddressesTestJSON(base.BaseV2ComputeTest):
|
||||
# All public and private addresses for
|
||||
# a server should be returned
|
||||
|
||||
addresses = self.client.list_addresses(self.server['id'])
|
||||
addresses = self.client.list_addresses(self.server['id'])['addresses']
|
||||
|
||||
# We do not know the exact network configuration, but an instance
|
||||
# should at least have a single public or private address
|
||||
@ -63,7 +63,7 @@ class ServerAddressesTestJSON(base.BaseV2ComputeTest):
|
||||
# Providing a network type should filter
|
||||
# the addresses return by that type
|
||||
|
||||
addresses = self.client.list_addresses(self.server['id'])
|
||||
addresses = self.client.list_addresses(self.server['id'])['addresses']
|
||||
|
||||
# Once again we don't know the environment's exact network config,
|
||||
# but the response for each individual network should be the same
|
||||
|
@ -34,12 +34,13 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
def setUp(self):
|
||||
super(ServerMetadataTestJSON, self).setUp()
|
||||
meta = {'key1': 'value1', 'key2': 'value2'}
|
||||
self.client.set_server_metadata(self.server_id, meta)
|
||||
self.client.set_server_metadata(self.server_id, meta)['metadata']
|
||||
|
||||
@test.idempotent_id('479da087-92b3-4dcf-aeb3-fd293b2d14ce')
|
||||
def test_list_server_metadata(self):
|
||||
# All metadata key/value pairs for a server should be returned
|
||||
resp_metadata = self.client.list_server_metadata(self.server_id)
|
||||
resp_metadata = (self.client.list_server_metadata(self.server_id)
|
||||
['metadata'])
|
||||
|
||||
# Verify the expected metadata items are in the list
|
||||
expected = {'key1': 'value1', 'key2': 'value2'}
|
||||
@ -50,11 +51,13 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
# The server's metadata should be replaced with the provided values
|
||||
# Create a new set of metadata for the server
|
||||
req_metadata = {'meta2': 'data2', 'meta3': 'data3'}
|
||||
self.client.set_server_metadata(self.server_id, req_metadata)
|
||||
self.client.set_server_metadata(self.server_id,
|
||||
req_metadata)['metadata']
|
||||
|
||||
# Verify the expected values are correct, and that the
|
||||
# previous values have been removed
|
||||
resp_metadata = self.client.list_server_metadata(self.server_id)
|
||||
resp_metadata = (self.client.list_server_metadata(self.server_id)
|
||||
['metadata'])
|
||||
self.assertEqual(resp_metadata, req_metadata)
|
||||
|
||||
@test.idempotent_id('344d981e-0c33-4997-8a5d-6c1d803e4134')
|
||||
@ -65,7 +68,8 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.update_server_metadata(self.server_id, meta)
|
||||
|
||||
# Verify the values have been updated to the proper values
|
||||
resp_metadata = self.client.list_server_metadata(self.server_id)
|
||||
resp_metadata = (self.client.list_server_metadata(self.server_id)
|
||||
['metadata'])
|
||||
expected = {'key1': 'alt1', 'key2': 'value2', 'key3': 'value3'}
|
||||
self.assertEqual(expected, resp_metadata)
|
||||
|
||||
@ -75,14 +79,16 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
# passed
|
||||
meta = {}
|
||||
self.client.update_server_metadata(self.server_id, meta)
|
||||
resp_metadata = self.client.list_server_metadata(self.server_id)
|
||||
resp_metadata = (self.client.list_server_metadata(self.server_id)
|
||||
['metadata'])
|
||||
expected = {'key1': 'value1', 'key2': 'value2'}
|
||||
self.assertEqual(expected, resp_metadata)
|
||||
|
||||
@test.idempotent_id('3043c57d-7e0e-49a6-9a96-ad569c265e6a')
|
||||
def test_get_server_metadata_item(self):
|
||||
# The value for a specific metadata key should be returned
|
||||
meta = self.client.get_server_metadata_item(self.server_id, 'key2')
|
||||
meta = self.client.get_server_metadata_item(self.server_id,
|
||||
'key2')['meta']
|
||||
self.assertEqual('value2', meta['key2'])
|
||||
|
||||
@test.idempotent_id('58c02d4f-5c67-40be-8744-d3fa5982eb1c')
|
||||
@ -93,7 +99,8 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.set_server_metadata_item(self.server_id, 'nova', meta)
|
||||
|
||||
# Verify the meta item's value has been updated
|
||||
resp_metadata = self.client.list_server_metadata(self.server_id)
|
||||
resp_metadata = (self.client.list_server_metadata(self.server_id)
|
||||
['metadata'])
|
||||
expected = {'key1': 'value1', 'key2': 'value2', 'nova': 'alt'}
|
||||
self.assertEqual(expected, resp_metadata)
|
||||
|
||||
@ -103,6 +110,7 @@ class ServerMetadataTestJSON(base.BaseV2ComputeTest):
|
||||
self.client.delete_server_metadata_item(self.server_id, 'key1')
|
||||
|
||||
# Verify the metadata item has been removed
|
||||
resp_metadata = self.client.list_server_metadata(self.server_id)
|
||||
resp_metadata = (self.client.list_server_metadata(self.server_id)
|
||||
['metadata'])
|
||||
expected = {'key2': 'value2'}
|
||||
self.assertEqual(expected, resp_metadata)
|
||||
|
@ -52,9 +52,9 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
wait_until='ACTIVE')
|
||||
id2 = server['id']
|
||||
self.assertNotEqual(id1, id2, "Did not create a new server")
|
||||
server = self.client.show_server(id1)
|
||||
server = self.client.show_server(id1)['server']
|
||||
name1 = server['name']
|
||||
server = self.client.show_server(id2)
|
||||
server = self.client.show_server(id2)['server']
|
||||
name2 = server['name']
|
||||
self.assertEqual(name1, name2)
|
||||
|
||||
@ -68,7 +68,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
self.keypairs_client.list_keypairs()
|
||||
server = self.create_test_server(key_name=key_name)
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual(key_name, server['key_name'])
|
||||
|
||||
def _update_server_name(self, server_id, status):
|
||||
@ -80,7 +80,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
waiters.wait_for_server_status(self.client, server_id, status)
|
||||
|
||||
# Verify the name of the server has changed
|
||||
server = self.client.show_server(server_id)
|
||||
server = self.client.show_server(server_id)['server']
|
||||
self.assertEqual(new_name, server['name'])
|
||||
return server
|
||||
|
||||
@ -112,7 +112,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
|
||||
# Verify the access addresses have been updated
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual('1.1.1.1', server['accessIPv4'])
|
||||
self.assertEqual('::babe:202:202', server['accessIPv6'])
|
||||
|
||||
@ -121,5 +121,5 @@ class ServersTestJSON(base.BaseV2ComputeTest):
|
||||
# Create a server without an IPv4 address(only IPv6 address).
|
||||
server = self.create_test_server(accessIPv6='2001:2001::3')
|
||||
waiters.wait_for_server_status(self.client, server['id'], 'ACTIVE')
|
||||
server = self.client.show_server(server['id'])
|
||||
server = self.client.show_server(server['id'])['server']
|
||||
self.assertEqual('2001:2001::3', server['accessIPv6'])
|
||||
|
@ -476,7 +476,7 @@ class ServersNegativeTestJSON(base.BaseV2ComputeTest):
|
||||
self.server_id,
|
||||
'SHELVED')
|
||||
|
||||
server = self.client.show_server(self.server_id)
|
||||
server = self.client.show_server(self.server_id)['server']
|
||||
image_name = server['name'] + '-shelved'
|
||||
params = {'name': image_name}
|
||||
images = self.images_client.list_images(**params)['images']
|
||||
|
@ -64,7 +64,7 @@ class AuthorizationTestJSON(base.BaseV2ComputeTest):
|
||||
def resource_setup(cls):
|
||||
super(AuthorizationTestJSON, cls).resource_setup()
|
||||
server = cls.create_test_server(wait_until='ACTIVE')
|
||||
cls.server = cls.client.show_server(server['id'])
|
||||
cls.server = cls.client.show_server(server['id'])['server']
|
||||
|
||||
name = data_utils.rand_name('image')
|
||||
body = cls.glance_client.create_image(name=name,
|
||||
|
@ -70,8 +70,8 @@ class AttachVolumeTestJSON(base.BaseV2ComputeTest):
|
||||
adminPass=admin_pass)
|
||||
|
||||
# Record addresses so that we can ssh later
|
||||
self.server['addresses'] = (
|
||||
self.servers_client.list_addresses(self.server['id']))
|
||||
self.server['addresses'] = self.servers_client.list_addresses(
|
||||
self.server['id'])['addresses']
|
||||
|
||||
# Create a volume and wait for it to become ready
|
||||
self.volume = self.volumes_client.create_volume(
|
||||
@ -84,7 +84,7 @@ class AttachVolumeTestJSON(base.BaseV2ComputeTest):
|
||||
self.attachment = self.servers_client.attach_volume(
|
||||
self.server['id'],
|
||||
volumeId=self.volume['id'],
|
||||
device='/dev/%s' % self.device)
|
||||
device='/dev/%s' % self.device)['volumeAttachment']
|
||||
self.volumes_client.wait_for_volume_status(self.volume['id'], 'in-use')
|
||||
|
||||
self.addCleanup(self._detach, self.server['id'], self.volume['id'])
|
||||
@ -139,14 +139,14 @@ class AttachVolumeTestJSON(base.BaseV2ComputeTest):
|
||||
self._create_and_attach()
|
||||
# List Volume attachment of the server
|
||||
body = self.servers_client.list_volume_attachments(
|
||||
self.server['id'])
|
||||
self.server['id'])['volumeAttachments']
|
||||
self.assertEqual(1, len(body))
|
||||
self.assertIn(self.attachment, body)
|
||||
|
||||
# Get Volume attachment of the server
|
||||
body = self.servers_client.get_volume_attachment(
|
||||
self.server['id'],
|
||||
self.attachment['id'])
|
||||
self.attachment['id'])['volumeAttachment']
|
||||
self.assertEqual(self.server['id'], body['serverId'])
|
||||
self.assertEqual(self.volume['id'], body['volumeId'])
|
||||
self.assertEqual(self.attachment['id'], body['id'])
|
||||
|
@ -87,7 +87,7 @@ class NeutronResourcesTestJSON(base.BaseOrchestrationTest):
|
||||
server_id = body['physical_resource_id']
|
||||
LOG.debug('Console output for %s', server_id)
|
||||
output = cls.servers_client.get_console_output(
|
||||
server_id, None).data
|
||||
server_id, None)['output']
|
||||
LOG.debug(output)
|
||||
raise e
|
||||
|
||||
@ -184,7 +184,7 @@ class NeutronResourcesTestJSON(base.BaseOrchestrationTest):
|
||||
def test_created_server(self):
|
||||
"""Verifies created sever."""
|
||||
server_id = self.test_resources.get('Server')['physical_resource_id']
|
||||
server = self.servers_client.show_server(server_id)
|
||||
server = self.servers_client.show_server(server_id)['server']
|
||||
self.assertEqual(self.keypair_name, server['key_name'])
|
||||
self.assertEqual('ACTIVE', server['status'])
|
||||
network = server['addresses'][self.neutron_basic_template['resources'][
|
||||
|
@ -457,7 +457,7 @@ class JavelinCheck(unittest.TestCase):
|
||||
found,
|
||||
"Couldn't find expected server %s" % server['name'])
|
||||
|
||||
found = client.servers.show_server(found['id'])
|
||||
found = client.servers.show_server(found['id'])['server']
|
||||
# validate neutron is enabled and ironic disabled:
|
||||
if (CONF.service_available.neutron and
|
||||
not CONF.baremetal.driver_enabled):
|
||||
@ -869,7 +869,7 @@ def create_servers(servers):
|
||||
kwargs['networks'] = [{'uuid': get_net_id(network)}
|
||||
for network in server['networks']]
|
||||
body = client.servers.create_server(
|
||||
server['name'], image_id, flavor_id, **kwargs)
|
||||
server['name'], image_id, flavor_id, **kwargs)['server']
|
||||
server_id = body['id']
|
||||
client.servers.wait_for_server_status(server_id, 'ACTIVE')
|
||||
# create security group(s) after server spawning
|
||||
|
@ -18,6 +18,7 @@ from oslo_utils import excutils
|
||||
from tempest_lib.common.utils import data_utils
|
||||
|
||||
from tempest.common import fixed_network
|
||||
from tempest.common import service_client
|
||||
from tempest.common import waiters
|
||||
from tempest import config
|
||||
|
||||
@ -88,12 +89,15 @@ def create_test_server(clients, validatable=False, validation_resources=None,
|
||||
**kwargs)
|
||||
|
||||
# handle the case of multiple servers
|
||||
servers = [body]
|
||||
servers = []
|
||||
if 'min_count' in kwargs or 'max_count' in kwargs:
|
||||
# Get servers created which name match with name param.
|
||||
body_servers = clients.servers_client.list_servers()
|
||||
servers = \
|
||||
[s for s in body_servers['servers'] if s['name'].startswith(name)]
|
||||
else:
|
||||
body = service_client.ResponseBody(body.response, body['server'])
|
||||
servers = [body]
|
||||
|
||||
# The name of the method to associate a floating IP to as server is too
|
||||
# long for PEP8 compliance so:
|
||||
|
@ -34,7 +34,7 @@ def wait_for_server_status(client, server_id, status, ready_wait=True,
|
||||
|
||||
# NOTE(afazekas): UNKNOWN status possible on ERROR
|
||||
# or in a very early stage.
|
||||
body = client.show_server(server_id)
|
||||
body = client.show_server(server_id)['server']
|
||||
old_status = server_status = body['status']
|
||||
old_task_state = task_state = _get_task_state(body)
|
||||
start_time = int(time.time())
|
||||
@ -61,7 +61,7 @@ def wait_for_server_status(client, server_id, status, ready_wait=True,
|
||||
return
|
||||
|
||||
time.sleep(client.build_interval)
|
||||
body = client.show_server(server_id)
|
||||
body = client.show_server(server_id)['server']
|
||||
server_status = body['status']
|
||||
task_state = _get_task_state(body)
|
||||
if (server_status != old_status) or (task_state != old_task_state):
|
||||
@ -102,7 +102,7 @@ def wait_for_server_termination(client, server_id, ignore_error=False):
|
||||
start_time = int(time.time())
|
||||
while True:
|
||||
try:
|
||||
body = client.show_server(server_id)
|
||||
body = client.show_server(server_id)['server']
|
||||
except lib_exc.NotFound:
|
||||
return
|
||||
|
||||
|
@ -179,7 +179,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
||||
LOG.debug("Creating a server (name: %s, image: %s, flavor: %s)",
|
||||
name, image, flavor)
|
||||
server = self.servers_client.create_server(name, image, flavor,
|
||||
**create_kwargs)
|
||||
**create_kwargs)['server']
|
||||
if wait_on_delete:
|
||||
self.addCleanup(waiters.wait_for_server_termination,
|
||||
self.servers_client,
|
||||
@ -197,7 +197,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
||||
# The instance retrieved on creation is missing network
|
||||
# details, necessitating retrieval after it becomes active to
|
||||
# ensure correct details.
|
||||
server = self.servers_client.show_server(server['id'])
|
||||
server = self.servers_client.show_server(server['id'])['server']
|
||||
self.assertEqual(server['name'], name)
|
||||
return server
|
||||
|
||||
@ -400,7 +400,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
||||
servers = servers['servers']
|
||||
for server in servers:
|
||||
console_output = self.servers_client.get_console_output(
|
||||
server['id'], length=None).data
|
||||
server['id'], length=None)['output']
|
||||
LOG.debug('Console output for %s\nbody=\n%s',
|
||||
server['id'], console_output)
|
||||
|
||||
@ -450,7 +450,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
||||
def nova_volume_attach(self):
|
||||
volume = self.servers_client.attach_volume(
|
||||
self.server['id'], volumeId=self.volume['id'], device='/dev/%s'
|
||||
% CONF.compute.volume_device_name)
|
||||
% CONF.compute.volume_device_name)['volumeAttachment']
|
||||
self.assertEqual(self.volume['id'], volume['id'])
|
||||
self.volumes_client.wait_for_volume_status(volume['id'], 'in-use')
|
||||
# Refresh the volume after the attachment
|
||||
@ -1278,7 +1278,8 @@ class BaremetalScenarioTest(ScenarioTest):
|
||||
waiters.wait_for_server_status(self.servers_client,
|
||||
self.instance['id'], 'ACTIVE')
|
||||
self.node = self.get_node(instance_id=self.instance['id'])
|
||||
self.instance = self.servers_client.show_server(self.instance['id'])
|
||||
self.instance = (self.servers_client.show_server(self.instance['id'])
|
||||
['server'])
|
||||
|
||||
def terminate_instance(self):
|
||||
self.servers_client.delete_server(self.instance['id'])
|
||||
|
@ -62,7 +62,8 @@ class TestMinimumBasicScenario(manager.ScenarioTest):
|
||||
self.assertIn(self.server['id'], [x['id'] for x in servers])
|
||||
|
||||
def nova_show(self):
|
||||
got_server = self.servers_client.show_server(self.server['id'])
|
||||
got_server = (self.servers_client.show_server(self.server['id'])
|
||||
['server'])
|
||||
excluded_keys = ['OS-EXT-AZ:availability_zone']
|
||||
# Exclude these keys because of LP:#1486475
|
||||
excluded_keys.extend(['OS-EXT-STS:power_state', 'updated'])
|
||||
@ -98,7 +99,8 @@ class TestMinimumBasicScenario(manager.ScenarioTest):
|
||||
self.server['id'], secgroup['name'])
|
||||
|
||||
def wait_for_secgroup_add():
|
||||
body = self.servers_client.show_server(self.server['id'])
|
||||
body = (self.servers_client.show_server(self.server['id'])
|
||||
['server'])
|
||||
return {'name': secgroup['name']} in body['security_groups']
|
||||
|
||||
if not test.call_until_true(wait_for_secgroup_add,
|
||||
|
@ -81,19 +81,22 @@ class TestServerAdvancedOps(manager.ScenarioTest):
|
||||
self.servers_client.suspend_server(instance_id)
|
||||
waiters.wait_for_server_status(self.servers_client, instance_id,
|
||||
'SUSPENDED')
|
||||
fetched_instance = self.servers_client.show_server(instance_id)
|
||||
fetched_instance = (self.servers_client.show_server(instance_id)
|
||||
['server'])
|
||||
LOG.debug("Resuming instance %s. Current status: %s",
|
||||
instance_id, fetched_instance['status'])
|
||||
self.servers_client.resume_server(instance_id)
|
||||
waiters.wait_for_server_status(self.servers_client, instance_id,
|
||||
'ACTIVE')
|
||||
fetched_instance = self.servers_client.show_server(instance_id)
|
||||
fetched_instance = (self.servers_client.show_server(instance_id)
|
||||
['server'])
|
||||
LOG.debug("Suspending instance %s. Current status: %s",
|
||||
instance_id, fetched_instance['status'])
|
||||
self.servers_client.suspend_server(instance_id)
|
||||
waiters.wait_for_server_status(self.servers_client, instance_id,
|
||||
'SUSPENDED')
|
||||
fetched_instance = self.servers_client.show_server(instance_id)
|
||||
fetched_instance = (self.servers_client.show_server(instance_id)
|
||||
['server'])
|
||||
LOG.debug("Resuming instance %s. Current status: %s",
|
||||
instance_id, fetched_instance['status'])
|
||||
self.servers_client.resume_server(instance_id)
|
||||
|
@ -106,7 +106,7 @@ class TestStampPattern(manager.ScenarioTest):
|
||||
def _attach_volume(self, server, volume):
|
||||
attached_volume = self.servers_client.attach_volume(
|
||||
server['id'], volumeId=volume['id'], device='/dev/%s'
|
||||
% CONF.compute.volume_device_name)
|
||||
% CONF.compute.volume_device_name)['volumeAttachment']
|
||||
self.assertEqual(volume['id'], attached_volume['id'])
|
||||
self._wait_for_volume_status(attached_volume, 'in-use')
|
||||
|
||||
|
@ -95,7 +95,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
else:
|
||||
create_schema = schema.create_server
|
||||
self.validate_response(create_schema, resp, body)
|
||||
return service_client.ResponseBody(resp, body['server'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def update_server(self, server_id, **kwargs):
|
||||
"""Updates the properties of an existing server.
|
||||
@ -110,14 +110,14 @@ class ServersClient(service_client.ServiceClient):
|
||||
resp, body = self.put("servers/%s" % server_id, post_body)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.update_server, resp, body)
|
||||
return service_client.ResponseBody(resp, body['server'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def show_server(self, server_id):
|
||||
"""Returns the details of an existing server."""
|
||||
resp, body = self.get("servers/%s" % server_id)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.get_server, resp, body)
|
||||
return service_client.ResponseBody(resp, body['server'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_server(self, server_id):
|
||||
"""Deletes the given server."""
|
||||
@ -147,7 +147,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
resp, body = self.get("servers/%s/ips" % server_id)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.list_addresses, resp, body)
|
||||
return service_client.ResponseBody(resp, body['addresses'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def list_addresses_by_network(self, server_id, network_id):
|
||||
"""Lists all addresses of a specific network type for a server."""
|
||||
@ -157,30 +157,27 @@ class ServersClient(service_client.ServiceClient):
|
||||
self.validate_response(schema.list_addresses_by_network, resp, body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def action(self, server_id, action_name, response_key,
|
||||
def action(self, server_id, action_name,
|
||||
schema=schema.server_actions_common_schema,
|
||||
response_class=service_client.ResponseBody, **kwargs):
|
||||
**kwargs):
|
||||
post_body = json.dumps({action_name: kwargs})
|
||||
resp, body = self.post('servers/%s/action' % server_id,
|
||||
post_body)
|
||||
if response_key is not None:
|
||||
if body:
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema, resp, body)
|
||||
body = body[response_key]
|
||||
else:
|
||||
self.validate_response(schema, resp, body)
|
||||
return response_class(resp, body)
|
||||
self.validate_response(schema, resp, body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def create_backup(self, server_id, backup_type, rotation, name):
|
||||
"""Backup a server instance."""
|
||||
return self.action(server_id, "createBackup", None,
|
||||
return self.action(server_id, "createBackup",
|
||||
backup_type=backup_type,
|
||||
rotation=rotation,
|
||||
name=name)
|
||||
|
||||
def change_password(self, server_id, adminPass):
|
||||
"""Changes the root password for the server."""
|
||||
return self.action(server_id, 'changePassword', None,
|
||||
return self.action(server_id, 'changePassword',
|
||||
adminPass=adminPass)
|
||||
|
||||
def get_password(self, server_id):
|
||||
@ -204,7 +201,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
|
||||
def reboot_server(self, server_id, reboot_type):
|
||||
"""Reboots a server."""
|
||||
return self.action(server_id, 'reboot', None, type=reboot_type)
|
||||
return self.action(server_id, 'reboot', type=reboot_type)
|
||||
|
||||
def rebuild_server(self, server_id, image_ref, **kwargs):
|
||||
"""Rebuilds a server with a new image.
|
||||
@ -219,7 +216,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
rebuild_schema = schema.rebuild_server_with_admin_pass
|
||||
else:
|
||||
rebuild_schema = schema.rebuild_server
|
||||
return self.action(server_id, 'rebuild', 'server',
|
||||
return self.action(server_id, 'rebuild',
|
||||
rebuild_schema, **kwargs)
|
||||
|
||||
def resize_server(self, server_id, flavor_ref, **kwargs):
|
||||
@ -231,23 +228,23 @@ class ServersClient(service_client.ServiceClient):
|
||||
kwargs['flavorRef'] = flavor_ref
|
||||
if 'disk_config' in kwargs:
|
||||
kwargs['OS-DCF:diskConfig'] = kwargs.pop('disk_config')
|
||||
return self.action(server_id, 'resize', None, **kwargs)
|
||||
return self.action(server_id, 'resize', **kwargs)
|
||||
|
||||
def confirm_resize_server(self, server_id, **kwargs):
|
||||
"""Confirms the flavor change for a server."""
|
||||
return self.action(server_id, 'confirmResize',
|
||||
None, schema.server_actions_confirm_resize,
|
||||
schema.server_actions_confirm_resize,
|
||||
**kwargs)
|
||||
|
||||
def revert_resize_server(self, server_id, **kwargs):
|
||||
"""Reverts a server back to its original flavor."""
|
||||
return self.action(server_id, 'revertResize', None, **kwargs)
|
||||
return self.action(server_id, 'revertResize', **kwargs)
|
||||
|
||||
def list_server_metadata(self, server_id):
|
||||
resp, body = self.get("servers/%s/metadata" % server_id)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.list_server_metadata, resp, body)
|
||||
return service_client.ResponseBody(resp, body['metadata'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def set_server_metadata(self, server_id, meta, no_metadata_field=False):
|
||||
if no_metadata_field:
|
||||
@ -258,7 +255,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
post_body)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.set_server_metadata, resp, body)
|
||||
return service_client.ResponseBody(resp, body['metadata'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def update_server_metadata(self, server_id, meta):
|
||||
post_body = json.dumps({'metadata': meta})
|
||||
@ -267,14 +264,14 @@ class ServersClient(service_client.ServiceClient):
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.update_server_metadata,
|
||||
resp, body)
|
||||
return service_client.ResponseBody(resp, body['metadata'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def get_server_metadata_item(self, server_id, key):
|
||||
resp, body = self.get("servers/%s/metadata/%s" % (server_id, key))
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.set_get_server_metadata_item,
|
||||
resp, body)
|
||||
return service_client.ResponseBody(resp, body['meta'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def set_server_metadata_item(self, server_id, key, meta):
|
||||
post_body = json.dumps({'meta': meta})
|
||||
@ -283,7 +280,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.set_get_server_metadata_item,
|
||||
resp, body)
|
||||
return service_client.ResponseBody(resp, body['meta'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_server_metadata_item(self, server_id, key):
|
||||
resp, body = self.delete("servers/%s/metadata/%s" %
|
||||
@ -293,10 +290,10 @@ class ServersClient(service_client.ServiceClient):
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def stop_server(self, server_id, **kwargs):
|
||||
return self.action(server_id, 'os-stop', None, **kwargs)
|
||||
return self.action(server_id, 'os-stop', **kwargs)
|
||||
|
||||
def start_server(self, server_id, **kwargs):
|
||||
return self.action(server_id, 'os-start', None, **kwargs)
|
||||
return self.action(server_id, 'os-start', **kwargs)
|
||||
|
||||
def attach_volume(self, server_id, **kwargs):
|
||||
"""Attaches a volume to a server instance."""
|
||||
@ -305,7 +302,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
post_body)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.attach_volume, resp, body)
|
||||
return service_client.ResponseBody(resp, body['volumeAttachment'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def detach_volume(self, server_id, volume_id):
|
||||
"""Detaches a volume from a server instance."""
|
||||
@ -320,7 +317,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
server_id, attach_id))
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.get_volume_attachment, resp, body)
|
||||
return service_client.ResponseBody(resp, body['volumeAttachment'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def list_volume_attachments(self, server_id):
|
||||
"""Returns the list of volume attachments for a given instance."""
|
||||
@ -328,15 +325,15 @@ class ServersClient(service_client.ServiceClient):
|
||||
server_id))
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.list_volume_attachments, resp, body)
|
||||
return service_client.ResponseBodyList(resp, body['volumeAttachments'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def add_security_group(self, server_id, name):
|
||||
"""Adds a security group to the server."""
|
||||
return self.action(server_id, 'addSecurityGroup', None, name=name)
|
||||
return self.action(server_id, 'addSecurityGroup', name=name)
|
||||
|
||||
def remove_security_group(self, server_id, name):
|
||||
"""Removes a security group from the server."""
|
||||
return self.action(server_id, 'removeSecurityGroup', None, name=name)
|
||||
return self.action(server_id, 'removeSecurityGroup', name=name)
|
||||
|
||||
def live_migrate_server(self, server_id, **kwargs):
|
||||
"""This should be called with administrator privileges ."""
|
||||
@ -350,53 +347,52 @@ class ServersClient(service_client.ServiceClient):
|
||||
|
||||
def migrate_server(self, server_id, **kwargs):
|
||||
"""Migrates a server to a new host."""
|
||||
return self.action(server_id, 'migrate', None, **kwargs)
|
||||
return self.action(server_id, 'migrate', **kwargs)
|
||||
|
||||
def lock_server(self, server_id, **kwargs):
|
||||
"""Locks the given server."""
|
||||
return self.action(server_id, 'lock', None, **kwargs)
|
||||
return self.action(server_id, 'lock', **kwargs)
|
||||
|
||||
def unlock_server(self, server_id, **kwargs):
|
||||
"""UNlocks the given server."""
|
||||
return self.action(server_id, 'unlock', None, **kwargs)
|
||||
return self.action(server_id, 'unlock', **kwargs)
|
||||
|
||||
def suspend_server(self, server_id, **kwargs):
|
||||
"""Suspends the provided server."""
|
||||
return self.action(server_id, 'suspend', None, **kwargs)
|
||||
return self.action(server_id, 'suspend', **kwargs)
|
||||
|
||||
def resume_server(self, server_id, **kwargs):
|
||||
"""Un-suspends the provided server."""
|
||||
return self.action(server_id, 'resume', None, **kwargs)
|
||||
return self.action(server_id, 'resume', **kwargs)
|
||||
|
||||
def pause_server(self, server_id, **kwargs):
|
||||
"""Pauses the provided server."""
|
||||
return self.action(server_id, 'pause', None, **kwargs)
|
||||
return self.action(server_id, 'pause', **kwargs)
|
||||
|
||||
def unpause_server(self, server_id, **kwargs):
|
||||
"""Un-pauses the provided server."""
|
||||
return self.action(server_id, 'unpause', None, **kwargs)
|
||||
return self.action(server_id, 'unpause', **kwargs)
|
||||
|
||||
def reset_state(self, server_id, state='error'):
|
||||
"""Resets the state of a server to active/error."""
|
||||
return self.action(server_id, 'os-resetState', None, state=state)
|
||||
return self.action(server_id, 'os-resetState', state=state)
|
||||
|
||||
def shelve_server(self, server_id, **kwargs):
|
||||
"""Shelves the provided server."""
|
||||
return self.action(server_id, 'shelve', None, **kwargs)
|
||||
return self.action(server_id, 'shelve', **kwargs)
|
||||
|
||||
def unshelve_server(self, server_id, **kwargs):
|
||||
"""Un-shelves the provided server."""
|
||||
return self.action(server_id, 'unshelve', None, **kwargs)
|
||||
return self.action(server_id, 'unshelve', **kwargs)
|
||||
|
||||
def shelve_offload_server(self, server_id, **kwargs):
|
||||
"""Shelve-offload the provided server."""
|
||||
return self.action(server_id, 'shelveOffload', None, **kwargs)
|
||||
return self.action(server_id, 'shelveOffload', **kwargs)
|
||||
|
||||
def get_console_output(self, server_id, length):
|
||||
kwargs = {'length': length} if length else {}
|
||||
return self.action(server_id, 'os-getConsoleOutput', 'output',
|
||||
return self.action(server_id, 'os-getConsoleOutput',
|
||||
schema.get_console_output,
|
||||
response_class=service_client.ResponseBodyData,
|
||||
**kwargs)
|
||||
|
||||
def list_virtual_interfaces(self, server_id):
|
||||
@ -411,14 +407,13 @@ class ServersClient(service_client.ServiceClient):
|
||||
|
||||
def rescue_server(self, server_id, **kwargs):
|
||||
"""Rescue the provided server."""
|
||||
return self.action(server_id, 'rescue', 'adminPass',
|
||||
return self.action(server_id, 'rescue',
|
||||
schema.rescue_server,
|
||||
response_class=service_client.ResponseBodyData,
|
||||
**kwargs)
|
||||
|
||||
def unrescue_server(self, server_id):
|
||||
"""Unrescue the provided server."""
|
||||
return self.action(server_id, 'unrescue', None)
|
||||
return self.action(server_id, 'unrescue')
|
||||
|
||||
def get_server_diagnostics(self, server_id):
|
||||
"""Get the usage data for a server."""
|
||||
@ -431,7 +426,7 @@ class ServersClient(service_client.ServiceClient):
|
||||
server_id)
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.list_instance_actions, resp, body)
|
||||
return service_client.ResponseBodyList(resp, body['instanceActions'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def get_instance_action(self, server_id, request_id):
|
||||
"""Returns the action details of the provided server."""
|
||||
@ -439,26 +434,26 @@ class ServersClient(service_client.ServiceClient):
|
||||
(server_id, request_id))
|
||||
body = json.loads(body)
|
||||
self.validate_response(schema.get_instance_action, resp, body)
|
||||
return service_client.ResponseBody(resp, body['instanceAction'])
|
||||
return service_client.ResponseBody(resp, body)
|
||||
|
||||
def force_delete_server(self, server_id, **kwargs):
|
||||
"""Force delete a server."""
|
||||
return self.action(server_id, 'forceDelete', None, **kwargs)
|
||||
return self.action(server_id, 'forceDelete', **kwargs)
|
||||
|
||||
def restore_soft_deleted_server(self, server_id, **kwargs):
|
||||
"""Restore a soft-deleted server."""
|
||||
return self.action(server_id, 'restore', None, **kwargs)
|
||||
return self.action(server_id, 'restore', **kwargs)
|
||||
|
||||
def reset_network(self, server_id, **kwargs):
|
||||
"""Resets the Network of a server"""
|
||||
return self.action(server_id, 'resetNetwork', None, **kwargs)
|
||||
return self.action(server_id, 'resetNetwork', **kwargs)
|
||||
|
||||
def inject_network_info(self, server_id, **kwargs):
|
||||
"""Inject the Network Info into server"""
|
||||
return self.action(server_id, 'injectNetworkInfo', None, **kwargs)
|
||||
return self.action(server_id, 'injectNetworkInfo', **kwargs)
|
||||
|
||||
def get_vnc_console(self, server_id, console_type):
|
||||
"""Get URL of VNC console."""
|
||||
return self.action(server_id, "os-getVNCConsole",
|
||||
"console", schema.get_vnc_console,
|
||||
schema.get_vnc_console,
|
||||
type=console_type)
|
||||
|
@ -30,7 +30,7 @@ class ServerCreateDestroyTest(stressaction.StressAction):
|
||||
name = data_utils.rand_name("instance")
|
||||
self.logger.info("creating %s" % name)
|
||||
server = self.manager.servers_client.create_server(
|
||||
name, self.image, self.flavor)
|
||||
name, self.image, self.flavor)['server']
|
||||
server_id = server['id']
|
||||
waiters.wait_for_server_status(self.manager.servers_client, server_id,
|
||||
'ACTIVE')
|
||||
|
@ -77,7 +77,7 @@ class FloatingStress(stressaction.StressAction):
|
||||
vm_args['security_groups'] = [self.sec_grp]
|
||||
server = servers_client.create_server(name, self.image,
|
||||
self.flavor,
|
||||
**vm_args)
|
||||
**vm_args)['server']
|
||||
self.server_id = server['id']
|
||||
if self.wait_after_vm_create:
|
||||
waiters.wait_for_server_status(self.manager.servers_client,
|
||||
|
@ -39,7 +39,7 @@ class VolumeAttachDeleteTest(stressaction.StressAction):
|
||||
vm_name = data_utils.rand_name("instance")
|
||||
self.logger.info("creating vm: %s" % vm_name)
|
||||
server = self.manager.servers_client.create_server(
|
||||
vm_name, self.image, self.flavor)
|
||||
vm_name, self.image, self.flavor)['server']
|
||||
server_id = server['id']
|
||||
waiters.wait_for_server_status(self.manager.servers_client, server_id,
|
||||
'ACTIVE')
|
||||
|
@ -41,7 +41,7 @@ class VolumeVerifyStress(stressaction.StressAction):
|
||||
vm_args['key_name'] = self.key['name']
|
||||
server = servers_client.create_server(name, self.image,
|
||||
self.flavor,
|
||||
**vm_args)
|
||||
**vm_args)['server']
|
||||
self.server_id = server['id']
|
||||
waiters.wait_for_server_status(self.manager.servers_client,
|
||||
self.server_id, 'ACTIVE')
|
||||
|
Loading…
Reference in New Issue
Block a user