diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-27 10:04:10 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-27 10:04:10 +0000 |
commit | 0bc11890ce146e998d77df007c70505b60634e72 (patch) | |
tree | e472de23922afc26b60817c68af7547aefd5df97 | |
parent | 9609d6703dd434ac328ad6895a5a237f87dc8c44 (diff) | |
parent | 274327a82bdece1c85e42c582f0a70592ca9b693 (diff) | |
download | tempest-0bc11890ce146e998d77df007c70505b60634e72.tar.gz |
Merge "Merge server response schema into one file"
-rw-r--r-- | tempest/api_schema/response/compute/servers.py | 238 | ||||
-rw-r--r-- | tempest/api_schema/response/compute/v2_1/servers.py | 390 | ||||
-rw-r--r-- | tempest/services/compute/json/interfaces_client.py | 2 | ||||
-rw-r--r-- | tempest/services/compute/json/servers_client.py | 25 |
4 files changed, 286 insertions, 369 deletions
diff --git a/tempest/api_schema/response/compute/servers.py b/tempest/api_schema/response/compute/servers.py deleted file mode 100644 index 395017325..000000000 --- a/tempest/api_schema/response/compute/servers.py +++ /dev/null @@ -1,238 +0,0 @@ -# Copyright 2014 NEC Corporation. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import copy - -from tempest.api_schema.response.compute import parameter_types - -get_password = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'password': {'type': 'string'} - }, - 'required': ['password'] - } -} - -get_vnc_console = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'console': { - 'type': 'object', - 'properties': { - 'type': {'type': 'string'}, - 'url': { - 'type': 'string', - 'format': 'uri' - } - }, - 'required': ['type', 'url'] - } - }, - 'required': ['console'] - } -} - -common_show_server = { - 'type': 'object', - 'properties': { - 'id': {'type': 'string'}, - 'name': {'type': 'string'}, - 'status': {'type': 'string'}, - 'image': {'oneOf': [ - {'type': 'object', - 'properties': { - 'id': {'type': 'string'}, - 'links': parameter_types.links - }, - 'required': ['id', 'links']}, - {'type': ['string', 'null']} - ]}, - 'flavor': { - 'type': 'object', - 'properties': { - 'id': {'type': 'string'}, - 'links': parameter_types.links - }, - 'required': ['id', 'links'] - }, - 'fault': { - 'type': 'object', - 'properties': { - 'code': {'type': 'integer'}, - 'created': {'type': 'string'}, - 'message': {'type': 'string'}, - 'details': {'type': 'string'}, - }, - # NOTE(gmann): 'details' is not necessary to be present - # in the 'fault'. So it is not defined as 'required'. - 'required': ['code', 'created', 'message'] - }, - 'user_id': {'type': 'string'}, - 'tenant_id': {'type': 'string'}, - 'created': {'type': 'string'}, - 'updated': {'type': 'string'}, - 'progress': {'type': 'integer'}, - 'metadata': {'type': 'object'}, - 'links': parameter_types.links, - 'addresses': parameter_types.addresses, - }, - # NOTE(GMann): 'progress' attribute is present in the response - # only when server's status is one of the progress statuses - # ("ACTIVE","BUILD", "REBUILD", "RESIZE","VERIFY_RESIZE") - # 'fault' attribute is present in the response - # only when server's status is one of the "ERROR", "DELETED". - # So they are not defined as 'required'. - 'required': ['id', 'name', 'status', 'image', 'flavor', - 'user_id', 'tenant_id', 'created', 'updated', - 'metadata', 'links', 'addresses'] -} - -base_update_get_server = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'server': common_show_server - }, - 'required': ['server'] - } -} - -delete_server = { - 'status_code': [204], -} - -set_server_metadata = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'metadata': { - 'type': 'object', - 'patternProperties': { - '^.+$': {'type': 'string'} - } - } - }, - 'required': ['metadata'] - } -} - -list_server_metadata = copy.deepcopy(set_server_metadata) - -update_server_metadata = copy.deepcopy(set_server_metadata) - -delete_server_metadata_item = { - 'status_code': [204] -} - -list_servers = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'servers': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'id': {'type': 'string'}, - 'links': parameter_types.links, - 'name': {'type': 'string'} - }, - 'required': ['id', 'links', 'name'] - } - }, - 'servers_links': parameter_types.links - }, - # NOTE(gmann): servers_links attribute is not necessary to be - # present always So it is not 'required'. - 'required': ['servers'] - } -} - -server_actions_common_schema = { - 'status_code': [202] -} - -server_actions_delete_password = { - 'status_code': [204] -} - -get_console_output = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'output': {'type': 'string'} - }, - 'required': ['output'] - } -} - -common_instance_actions = { - 'type': 'object', - 'properties': { - 'action': {'type': 'string'}, - 'request_id': {'type': 'string'}, - 'user_id': {'type': 'string'}, - 'project_id': {'type': 'string'}, - 'start_time': {'type': 'string'}, - 'message': {'type': ['string', 'null']} - }, - 'required': ['action', 'request_id', 'user_id', 'project_id', - 'start_time', 'message'] -} - -instance_action_events = { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'event': {'type': 'string'}, - 'start_time': {'type': 'string'}, - 'finish_time': {'type': 'string'}, - 'result': {'type': 'string'}, - 'traceback': {'type': ['string', 'null']} - }, - 'required': ['event', 'start_time', 'finish_time', 'result', - 'traceback'] - } -} - -common_get_instance_action = copy.deepcopy(common_instance_actions) - -common_get_instance_action['properties'].update({ - 'events': instance_action_events}) -# 'events' does not come in response body always so it is not -# defined as 'required' - -base_list_servers_detail = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'servers': { - 'type': 'array', - 'items': common_show_server - } - }, - 'required': ['servers'] - } -} diff --git a/tempest/api_schema/response/compute/v2_1/servers.py b/tempest/api_schema/response/compute/v2_1/servers.py index ebee69769..726f9b12f 100644 --- a/tempest/api_schema/response/compute/v2_1/servers.py +++ b/tempest/api_schema/response/compute/v2_1/servers.py @@ -15,7 +15,6 @@ import copy from tempest.api_schema.response.compute import parameter_types -from tempest.api_schema.response.compute import servers create_server = { 'status_code': [202], @@ -46,24 +45,110 @@ create_server_with_admin_pass['response_body']['properties']['server'][ create_server_with_admin_pass['response_body']['properties']['server'][ 'required'].append('adminPass') -update_server = copy.deepcopy(servers.base_update_get_server) -update_server['response_body']['properties']['server']['properties'].update({ - 'hostId': {'type': 'string'}, - 'OS-DCF:diskConfig': {'type': 'string'}, - 'accessIPv4': parameter_types.access_ip_v4, - 'accessIPv6': parameter_types.access_ip_v6 -}) -update_server['response_body']['properties']['server']['required'].append( - # NOTE: OS-DCF:diskConfig and accessIPv4/v6 are API +list_servers = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'servers': { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'id': {'type': 'string'}, + 'links': parameter_types.links, + 'name': {'type': 'string'} + }, + 'required': ['id', 'links', 'name'] + } + }, + 'servers_links': parameter_types.links + }, + # NOTE(gmann): servers_links attribute is not necessary to be + # present always So it is not 'required'. + 'required': ['servers'] + } +} + +delete_server = { + 'status_code': [204], +} + +common_show_server = { + 'type': 'object', + 'properties': { + 'id': {'type': 'string'}, + 'name': {'type': 'string'}, + 'status': {'type': 'string'}, + 'image': {'oneOf': [ + {'type': 'object', + 'properties': { + 'id': {'type': 'string'}, + 'links': parameter_types.links + }, + 'required': ['id', 'links']}, + {'type': ['string', 'null']} + ]}, + 'flavor': { + 'type': 'object', + 'properties': { + 'id': {'type': 'string'}, + 'links': parameter_types.links + }, + 'required': ['id', 'links'] + }, + 'fault': { + 'type': 'object', + 'properties': { + 'code': {'type': 'integer'}, + 'created': {'type': 'string'}, + 'message': {'type': 'string'}, + 'details': {'type': 'string'}, + }, + # NOTE(gmann): 'details' is not necessary to be present + # in the 'fault'. So it is not defined as 'required'. + 'required': ['code', 'created', 'message'] + }, + 'user_id': {'type': 'string'}, + 'tenant_id': {'type': 'string'}, + 'created': {'type': 'string'}, + 'updated': {'type': 'string'}, + 'progress': {'type': 'integer'}, + 'metadata': {'type': 'object'}, + 'links': parameter_types.links, + 'addresses': parameter_types.addresses, + 'hostId': {'type': 'string'}, + 'OS-DCF:diskConfig': {'type': 'string'}, + 'accessIPv4': parameter_types.access_ip_v4, + 'accessIPv6': parameter_types.access_ip_v6 + }, + # NOTE(GMann): 'progress' attribute is present in the response + # only when server's status is one of the progress statuses + # ("ACTIVE","BUILD", "REBUILD", "RESIZE","VERIFY_RESIZE") + # 'fault' attribute is present in the response + # only when server's status is one of the "ERROR", "DELETED". + # OS-DCF:diskConfig and accessIPv4/v6 are API # extensions, and some environments return a response - # without these attributes. So they are not 'required'. - 'hostId' -) + # without these attributes.So these are not defined as 'required'. + 'required': ['id', 'name', 'status', 'image', 'flavor', + 'user_id', 'tenant_id', 'created', 'updated', + 'metadata', 'links', 'addresses', 'hostId'] +} + +update_server = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'server': common_show_server + }, + 'required': ['server'] + } +} -get_server = copy.deepcopy(servers.base_update_get_server) -get_server['response_body']['properties']['server']['properties'].update({ +server_detail = copy.deepcopy(common_show_server) +server_detail['properties'].update({ 'key_name': {'type': ['string', 'null']}, - 'hostId': {'type': 'string'}, 'security_groups': {'type': 'array'}, # NOTE: Non-admin users also can see "OS-SRV-USG" and "OS-EXT-AZ" @@ -81,27 +166,64 @@ get_server['response_body']['properties']['server']['properties'].update({ 'OS-EXT-SRV-ATTR:instance_name': {'type': 'string'}, 'OS-EXT-SRV-ATTR:hypervisor_hostname': {'type': ['string', 'null']}, 'os-extended-volumes:volumes_attached': {'type': 'array'}, - 'OS-DCF:diskConfig': {'type': 'string'}, - 'accessIPv4': parameter_types.access_ip_v4, - 'accessIPv6': parameter_types.access_ip_v6, 'config_drive': {'type': 'string'} }) -get_server['response_body']['properties']['server']['required'].append( - # NOTE: OS-SRV-USG, OS-EXT-AZ, OS-EXT-STS, OS-EXT-SRV-ATTR, - # os-extended-volumes, OS-DCF and accessIPv4/v6 are API - # extension, and some environments return a response without - # these attributes. So they are not 'required'. - 'hostId' -) +server_detail['properties']['addresses']['patternProperties'][ + '^[a-zA-Z0-9-_.]+$']['items']['properties'].update({ + 'OS-EXT-IPS:type': {'type': 'string'}, + 'OS-EXT-IPS-MAC:mac_addr': parameter_types.mac_address}) # NOTE(gmann): Update OS-EXT-IPS:type and OS-EXT-IPS-MAC:mac_addr # attributes in server address. Those are API extension, # and some environments return a response without # these attributes. So they are not 'required'. -get_server['response_body']['properties']['server']['properties'][ - 'addresses']['patternProperties']['^[a-zA-Z0-9-_.]+$']['items'][ - 'properties'].update({ - 'OS-EXT-IPS:type': {'type': 'string'}, - 'OS-EXT-IPS-MAC:mac_addr': parameter_types.mac_address}) + +get_server = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'server': server_detail + }, + 'required': ['server'] + } +} + +list_servers_detail = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'servers': { + 'type': 'array', + 'items': server_detail + }, + 'servers_links': parameter_types.links + }, + # NOTE(gmann): servers_links attribute is not necessary to be + # present always So it is not 'required'. + 'required': ['servers'] + } +} + +rebuild_server = copy.deepcopy(update_server) +rebuild_server['status_code'] = [202] + +rebuild_server_with_admin_pass = copy.deepcopy(rebuild_server) +rebuild_server_with_admin_pass['response_body']['properties']['server'][ + 'properties'].update({'adminPass': {'type': 'string'}}) +rebuild_server_with_admin_pass['response_body']['properties']['server'][ + 'required'].append('adminPass') + +rescue_server = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'adminPass': {'type': 'string'} + }, + 'required': ['adminPass'] + } +} list_virtual_interfaces = { 'status_code': [200], @@ -174,30 +296,11 @@ list_volume_attachments['response_body']['properties'][ 'volumeAttachments']['items']['properties'].update( {'serverId': {'type': 'string'}}) -set_get_server_metadata_item = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'meta': { - 'type': 'object', - 'patternProperties': { - '^.+$': {'type': 'string'} - } - } - }, - 'required': ['meta'] - } -} - list_addresses_by_network = { 'status_code': [200], 'response_body': parameter_types.addresses } -server_actions_confirm_resize = copy.deepcopy( - servers.server_actions_delete_password) - list_addresses = { 'status_code': [200], 'response_body': { @@ -258,10 +361,36 @@ list_server_groups = { } } -instance_actions_object = copy.deepcopy(servers.common_instance_actions) -instance_actions_object[ - 'properties'].update({'instance_uuid': {'type': 'string'}}) -instance_actions_object['required'].extend(['instance_uuid']) +instance_actions = { + 'type': 'object', + 'properties': { + 'action': {'type': 'string'}, + 'request_id': {'type': 'string'}, + 'user_id': {'type': 'string'}, + 'project_id': {'type': 'string'}, + 'start_time': {'type': 'string'}, + 'message': {'type': ['string', 'null']}, + 'instance_uuid': {'type': 'string'} + }, + 'required': ['action', 'request_id', 'user_id', 'project_id', + 'start_time', 'message', 'instance_uuid'] +} + +instance_action_events = { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'event': {'type': 'string'}, + 'start_time': {'type': 'string'}, + 'finish_time': {'type': 'string'}, + 'result': {'type': 'string'}, + 'traceback': {'type': ['string', 'null']} + }, + 'required': ['event', 'start_time', 'finish_time', 'result', + 'traceback'] + } +} list_instance_actions = { 'status_code': [200], @@ -270,93 +399,120 @@ list_instance_actions = { 'properties': { 'instanceActions': { 'type': 'array', - 'items': instance_actions_object + 'items': instance_actions } }, 'required': ['instanceActions'] } } -get_instance_actions_object = copy.deepcopy(servers.common_get_instance_action) -get_instance_actions_object[ - 'properties'].update({'instance_uuid': {'type': 'string'}}) -get_instance_actions_object['required'].extend(['instance_uuid']) +instance_actions_with_events = copy.deepcopy(instance_actions) +instance_actions_with_events['properties'].update({ + 'events': instance_action_events}) +# 'events' does not come in response body always so it is not +# defined as 'required' get_instance_action = { 'status_code': [200], 'response_body': { 'type': 'object', 'properties': { - 'instanceAction': get_instance_actions_object + 'instanceAction': instance_actions_with_events }, 'required': ['instanceAction'] } } -list_servers_detail = copy.deepcopy(servers.base_list_servers_detail) -list_servers_detail['response_body']['properties']['servers']['items'][ - 'properties'].update({ - 'key_name': {'type': ['string', 'null']}, - 'hostId': {'type': 'string'}, - 'OS-DCF:diskConfig': {'type': 'string'}, - 'security_groups': {'type': 'array'}, - - # NOTE: Non-admin users also can see "OS-SRV-USG" and "OS-EXT-AZ" - # attributes. - 'OS-SRV-USG:launched_at': {'type': ['string', 'null']}, - 'OS-SRV-USG:terminated_at': {'type': ['string', 'null']}, - 'OS-EXT-AZ:availability_zone': {'type': 'string'}, - - # NOTE: Admin users only can see "OS-EXT-STS" and "OS-EXT-SRV-ATTR" - # attributes. - 'OS-EXT-STS:task_state': {'type': ['string', 'null']}, - 'OS-EXT-STS:vm_state': {'type': 'string'}, - 'OS-EXT-STS:power_state': {'type': 'integer'}, - 'OS-EXT-SRV-ATTR:host': {'type': ['string', 'null']}, - 'OS-EXT-SRV-ATTR:instance_name': {'type': 'string'}, - 'OS-EXT-SRV-ATTR:hypervisor_hostname': {'type': ['string', 'null']}, - 'os-extended-volumes:volumes_attached': {'type': 'array'}, - 'accessIPv4': parameter_types.access_ip_v4, - 'accessIPv6': parameter_types.access_ip_v6, - 'config_drive': {'type': 'string'} - }) -# NOTE(GMann): OS-SRV-USG, OS-EXT-AZ, OS-EXT-STS, OS-EXT-SRV-ATTR, -# os-extended-volumes, OS-DCF and accessIPv4/v6 are API -# extensions, and some environments return a response without -# these attributes. So they are not 'required'. -list_servers_detail['response_body']['properties']['servers']['items'][ - 'required'].append('hostId') -# NOTE(gmann): Update OS-EXT-IPS:type and OS-EXT-IPS-MAC:mac_addr -# attributes in server address. Those are API extension, -# and some environments return a response without -# these attributes. So they are not 'required'. -list_servers_detail['response_body']['properties']['servers']['items'][ - 'properties']['addresses']['patternProperties']['^[a-zA-Z0-9-_.]+$'][ - 'items']['properties'].update({ - 'OS-EXT-IPS:type': {'type': 'string'}, - 'OS-EXT-IPS-MAC:mac_addr': parameter_types.mac_address}) -# Defining 'servers_links' attributes for V2 server schema -list_servers_detail['response_body'][ - 'properties'].update({'servers_links': parameter_types.links}) -# NOTE(gmann): servers_links attribute is not necessary to be -# present always So it is not 'required'. +get_password = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'password': {'type': 'string'} + }, + 'required': ['password'] + } +} -rebuild_server = copy.deepcopy(update_server) -rebuild_server['status_code'] = [202] +get_vnc_console = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'console': { + 'type': 'object', + 'properties': { + 'type': {'type': 'string'}, + 'url': { + 'type': 'string', + 'format': 'uri' + } + }, + 'required': ['type', 'url'] + } + }, + 'required': ['console'] + } +} -rebuild_server_with_admin_pass = copy.deepcopy(rebuild_server) -rebuild_server_with_admin_pass['response_body']['properties']['server'][ - 'properties'].update({'adminPass': {'type': 'string'}}) -rebuild_server_with_admin_pass['response_body']['properties']['server'][ - 'required'].append('adminPass') +get_console_output = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'output': {'type': 'string'} + }, + 'required': ['output'] + } +} -rescue_server = { +set_server_metadata = { 'status_code': [200], 'response_body': { 'type': 'object', 'properties': { - 'adminPass': {'type': 'string'} + 'metadata': { + 'type': 'object', + 'patternProperties': { + '^.+$': {'type': 'string'} + } + } }, - 'required': ['adminPass'] + 'required': ['metadata'] } } + +list_server_metadata = copy.deepcopy(set_server_metadata) + +update_server_metadata = copy.deepcopy(set_server_metadata) + +delete_server_metadata_item = { + 'status_code': [204] +} + +set_get_server_metadata_item = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'meta': { + 'type': 'object', + 'patternProperties': { + '^.+$': {'type': 'string'} + } + } + }, + 'required': ['meta'] + } +} + +server_actions_common_schema = { + 'status_code': [202] +} + +server_actions_delete_password = { + 'status_code': [204] +} + +server_actions_confirm_resize = copy.deepcopy( + server_actions_delete_password) diff --git a/tempest/services/compute/json/interfaces_client.py b/tempest/services/compute/json/interfaces_client.py index c3bfa99ca..223e90bac 100644 --- a/tempest/services/compute/json/interfaces_client.py +++ b/tempest/services/compute/json/interfaces_client.py @@ -16,8 +16,8 @@ import json import time -from tempest.api_schema.response.compute import servers as servers_schema from tempest.api_schema.response.compute.v2_1 import interfaces as schema +from tempest.api_schema.response.compute.v2_1 import servers as servers_schema from tempest.common import service_client from tempest import exceptions diff --git a/tempest/services/compute/json/servers_client.py b/tempest/services/compute/json/servers_client.py index bd276682a..c9ba2c38e 100644 --- a/tempest/services/compute/json/servers_client.py +++ b/tempest/services/compute/json/servers_client.py @@ -20,7 +20,6 @@ import urllib from tempest_lib import exceptions as lib_exc -from tempest.api_schema.response.compute import servers as common_schema from tempest.api_schema.response.compute.v2_1 import servers as schema from tempest.common import service_client from tempest.common import waiters @@ -147,7 +146,7 @@ class ServersClientJSON(service_client.ServiceClient): def delete_server(self, server_id): """Deletes the given server.""" resp, body = self.delete("servers/%s" % str(server_id)) - self.validate_response(common_schema.delete_server, resp, body) + self.validate_response(schema.delete_server, resp, body) return service_client.ResponseBody(resp, body) def list_servers(self, params=None): @@ -159,7 +158,7 @@ class ServersClientJSON(service_client.ServiceClient): resp, body = self.get(url) body = json.loads(body) - self.validate_response(common_schema.list_servers, resp, body) + self.validate_response(schema.list_servers, resp, body) return service_client.ResponseBody(resp, body) def list_servers_with_detail(self, params=None): @@ -216,7 +215,7 @@ class ServersClientJSON(service_client.ServiceClient): return service_client.ResponseBody(resp, body) def action(self, server_id, action_name, response_key, - schema=common_schema.server_actions_common_schema, + schema=schema.server_actions_common_schema, response_class=service_client.ResponseBody, **kwargs): post_body = json.dumps({action_name: kwargs}) resp, body = self.post('servers/%s/action' % str(server_id), @@ -253,7 +252,7 @@ class ServersClientJSON(service_client.ServiceClient): resp, body = self.get("servers/%s/os-server-password" % str(server_id)) body = json.loads(body) - self.validate_response(common_schema.get_password, resp, body) + self.validate_response(schema.get_password, resp, body) return service_client.ResponseBody(resp, body) def delete_password(self, server_id): @@ -264,7 +263,7 @@ class ServersClientJSON(service_client.ServiceClient): """ resp, body = self.delete("servers/%s/os-server-password" % str(server_id)) - self.validate_response(common_schema.server_actions_delete_password, + self.validate_response(schema.server_actions_delete_password, resp, body) return service_client.ResponseBody(resp, body) @@ -306,7 +305,7 @@ class ServersClientJSON(service_client.ServiceClient): def list_server_metadata(self, server_id): resp, body = self.get("servers/%s/metadata" % str(server_id)) body = json.loads(body) - self.validate_response(common_schema.list_server_metadata, resp, body) + self.validate_response(schema.list_server_metadata, resp, body) return service_client.ResponseBody(resp, body['metadata']) def set_server_metadata(self, server_id, meta, no_metadata_field=False): @@ -317,7 +316,7 @@ class ServersClientJSON(service_client.ServiceClient): resp, body = self.put('servers/%s/metadata' % str(server_id), post_body) body = json.loads(body) - self.validate_response(common_schema.set_server_metadata, resp, body) + self.validate_response(schema.set_server_metadata, resp, body) return service_client.ResponseBody(resp, body['metadata']) def update_server_metadata(self, server_id, meta): @@ -325,7 +324,7 @@ class ServersClientJSON(service_client.ServiceClient): resp, body = self.post('servers/%s/metadata' % str(server_id), post_body) body = json.loads(body) - self.validate_response(common_schema.update_server_metadata, + self.validate_response(schema.update_server_metadata, resp, body) return service_client.ResponseBody(resp, body['metadata']) @@ -348,7 +347,7 @@ class ServersClientJSON(service_client.ServiceClient): def delete_server_metadata_item(self, server_id, key): resp, body = self.delete("servers/%s/metadata/%s" % (str(server_id), key)) - self.validate_response(common_schema.delete_server_metadata_item, + self.validate_response(schema.delete_server_metadata_item, resp, body) return service_client.ResponseBody(resp, body) @@ -415,7 +414,7 @@ class ServersClientJSON(service_client.ServiceClient): req_body = json.dumps({'os-migrateLive': migrate_params}) resp, body = self.post("servers/%s/action" % str(server_id), req_body) - self.validate_response(common_schema.server_actions_common_schema, + self.validate_response(schema.server_actions_common_schema, resp, body) return service_client.ResponseBody(resp, body) @@ -466,7 +465,7 @@ class ServersClientJSON(service_client.ServiceClient): def get_console_output(self, server_id, length): kwargs = {'length': length} if length else {} return self.action(server_id, 'os-getConsoleOutput', 'output', - common_schema.get_console_output, + schema.get_console_output, response_class=service_client.ResponseBodyData, **kwargs) @@ -531,7 +530,7 @@ class ServersClientJSON(service_client.ServiceClient): def get_vnc_console(self, server_id, console_type): """Get URL of VNC console.""" return self.action(server_id, "os-getVNCConsole", - "console", common_schema.get_vnc_console, + "console", schema.get_vnc_console, type=console_type) def create_server_group(self, name, policies): |