Merge "Merge server response schema into one file"
diff --git a/tempest/api_schema/response/compute/servers.py b/tempest/api_schema/response/compute/servers.py
deleted file mode 100644
index 3950173..0000000
--- 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 ebee697..726f9b1 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'][
     '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
-    # extensions, and some environments return a response
-    # without these attributes. So they are not 'required'.
-    'hostId'
-)
+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']
+    }
+}
 
-get_server = copy.deepcopy(servers.base_update_get_server)
-get_server['response_body']['properties']['server']['properties'].update({
+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 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']
+    }
+}
+
+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 @@
     '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 @@
     '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 @@
     }
 }
 
-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 @@
         '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'.
-
-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 = {
+get_password = {
     'status_code': [200],
     'response_body': {
         'type': 'object',
         'properties': {
-            'adminPass': {'type': 'string'}
+            'password': {'type': 'string'}
         },
-        'required': ['adminPass']
+        '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']
+    }
+}
+
+get_console_output = {
+    'status_code': [200],
+    'response_body': {
+        'type': 'object',
+        'properties': {
+            'output': {'type': 'string'}
+        },
+        'required': ['output']
+    }
+}
+
+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]
+}
+
+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 c3bfa99..223e90b 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 bd27668..c9ba2c3 100644
--- a/tempest/services/compute/json/servers_client.py
+++ b/tempest/services/compute/json/servers_client.py
@@ -20,7 +20,6 @@
 
 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 @@
     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 @@
 
         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 @@
         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 @@
         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 @@
         """
         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 @@
     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 @@
         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 @@
         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 @@
     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 @@
         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 @@
     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 @@
     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):