diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-08 21:19:20 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-08 21:19:20 +0000 |
commit | 8165079f99bb38053e2f9dc32425853edc094e43 (patch) | |
tree | da15cca28f2d92c122c34d92e9ae53e31f7614c0 | |
parent | d61c949f07b855565fba7de8df1c3c48480ff611 (diff) | |
parent | ec470d5ae350fe083fddbb6915c8a0aa7ba58f1c (diff) | |
download | tempest-8165079f99bb38053e2f9dc32425853edc094e43.tar.gz |
Merge "Rearrange hypervisors response schemas into one file"
-rw-r--r-- | tempest/api_schema/response/compute/hypervisors.py | 225 | ||||
-rw-r--r-- | tempest/api_schema/response/compute/v2_1/hypervisors.py | 158 | ||||
-rw-r--r-- | tempest/services/compute/json/hypervisor_client.py | 21 |
3 files changed, 162 insertions, 242 deletions
diff --git a/tempest/api_schema/response/compute/hypervisors.py b/tempest/api_schema/response/compute/hypervisors.py deleted file mode 100644 index d6f2bd120..000000000 --- a/tempest/api_schema/response/compute/hypervisors.py +++ /dev/null @@ -1,225 +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 - -hypervisor_statistics = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'hypervisor_statistics': { - 'type': 'object', - 'properties': { - 'count': {'type': 'integer'}, - 'current_workload': {'type': 'integer'}, - 'disk_available_least': {'type': ['integer', 'null']}, - 'free_disk_gb': {'type': 'integer'}, - 'free_ram_mb': {'type': 'integer'}, - 'local_gb': {'type': 'integer'}, - 'local_gb_used': {'type': 'integer'}, - 'memory_mb': {'type': 'integer'}, - 'memory_mb_used': {'type': 'integer'}, - 'running_vms': {'type': 'integer'}, - 'vcpus': {'type': 'integer'}, - 'vcpus_used': {'type': 'integer'} - }, - 'required': ['count', 'current_workload', - 'disk_available_least', 'free_disk_gb', - 'free_ram_mb', 'local_gb', 'local_gb_used', - 'memory_mb', 'memory_mb_used', 'running_vms', - 'vcpus', 'vcpus_used'] - } - }, - 'required': ['hypervisor_statistics'] - } -} - -common_list_hypervisors_detail = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'hypervisors': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'status': {'type': 'string'}, - 'state': {'type': 'string'}, - 'cpu_info': {'type': 'string'}, - 'current_workload': {'type': 'integer'}, - 'disk_available_least': {'type': ['integer', 'null']}, - 'host_ip': { - 'type': 'string', - 'format': 'ip-address' - }, - 'free_disk_gb': {'type': 'integer'}, - 'free_ram_mb': {'type': 'integer'}, - 'hypervisor_hostname': {'type': 'string'}, - 'hypervisor_type': {'type': 'string'}, - 'hypervisor_version': {'type': 'integer'}, - 'id': {'type': ['integer', 'string']}, - 'local_gb': {'type': 'integer'}, - 'local_gb_used': {'type': 'integer'}, - 'memory_mb': {'type': 'integer'}, - 'memory_mb_used': {'type': 'integer'}, - 'running_vms': {'type': 'integer'}, - 'service': { - 'type': 'object', - 'properties': { - 'host': {'type': 'string'}, - 'id': {'type': ['integer', 'string']}, - 'disabled_reason': {'type': ['string', 'null']} - }, - # NOTE(gmann): 'disabled_reason' is updated in - # 'service' dict if 'os-hypervisor-status' - # extension is loaded. So this is not required. - 'required': ['host', 'id'] - }, - 'vcpus': {'type': 'integer'}, - 'vcpus_used': {'type': 'integer'} - }, - # NOTE: When loading os-hypervisor-status extension, - # a response contains status and state. So these params - # should not be required. - 'required': ['cpu_info', 'current_workload', - 'disk_available_least', 'host_ip', - 'free_disk_gb', 'free_ram_mb', - 'hypervisor_hostname', 'hypervisor_type', - 'hypervisor_version', 'id', 'local_gb', - 'local_gb_used', 'memory_mb', - 'memory_mb_used', 'running_vms', 'service', - 'vcpus', 'vcpus_used'] - } - } - }, - 'required': ['hypervisors'] - } -} - -common_show_hypervisor = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'hypervisor': { - 'type': 'object', - 'properties': { - 'status': {'type': 'string'}, - 'state': {'type': 'string'}, - 'cpu_info': {'type': 'string'}, - 'current_workload': {'type': 'integer'}, - 'disk_available_least': {'type': ['integer', 'null']}, - 'host_ip': { - 'type': 'string', - 'format': 'ip-address' - }, - 'free_disk_gb': {'type': 'integer'}, - 'free_ram_mb': {'type': 'integer'}, - 'hypervisor_hostname': {'type': 'string'}, - 'hypervisor_type': {'type': 'string'}, - 'hypervisor_version': {'type': 'integer'}, - 'id': {'type': ['integer', 'string']}, - 'local_gb': {'type': 'integer'}, - 'local_gb_used': {'type': 'integer'}, - 'memory_mb': {'type': 'integer'}, - 'memory_mb_used': {'type': 'integer'}, - 'running_vms': {'type': 'integer'}, - 'service': { - 'type': 'object', - 'properties': { - 'host': {'type': 'string'}, - 'id': {'type': ['integer', 'string']}, - 'disabled_reason': {'type': ['string', 'null']} - }, - # NOTE: 'disabled_reason' is updated in 'service' - # dict if os-hypervisor-status' extension is loaded. - # So this is not required. - 'required': ['host', 'id'] - }, - 'vcpus': {'type': 'integer'}, - 'vcpus_used': {'type': 'integer'} - }, - # NOTE: When loading os-hypervisor-status extension, - # a response contains status and state. So these params - # should not be required. - 'required': ['cpu_info', 'current_workload', - 'disk_available_least', 'host_ip', - 'free_disk_gb', 'free_ram_mb', - 'hypervisor_hostname', 'hypervisor_type', - 'hypervisor_version', 'id', 'local_gb', - 'local_gb_used', 'memory_mb', 'memory_mb_used', - 'running_vms', 'service', 'vcpus', 'vcpus_used'] - } - }, - 'required': ['hypervisor'] - } -} - -common_hypervisors_detail = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'hypervisors': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'status': {'type': 'string'}, - 'state': {'type': 'string'}, - 'id': {'type': ['integer', 'string']}, - 'hypervisor_hostname': {'type': 'string'} - }, - # NOTE: When loading os-hypervisor-status extension, - # a response contains status and state. So these params - # should not be required. - 'required': ['id', 'hypervisor_hostname'] - } - } - }, - 'required': ['hypervisors'] - } -} - -common_hypervisors_info = { - 'status_code': [200], - 'response_body': { - 'type': 'object', - 'properties': { - 'hypervisor': { - 'type': 'object', - 'properties': { - 'status': {'type': 'string'}, - 'state': {'type': 'string'}, - 'id': {'type': ['integer', 'string']}, - 'hypervisor_hostname': {'type': 'string'}, - }, - # NOTE: When loading os-hypervisor-status extension, - # a response contains status and state. So these params - # should not be required. - 'required': ['id', 'hypervisor_hostname'] - } - }, - 'required': ['hypervisor'] - } -} - - -hypervisor_uptime = copy.deepcopy(common_hypervisors_info) -hypervisor_uptime['response_body']['properties']['hypervisor'][ - 'properties']['uptime'] = {'type': 'string'} -hypervisor_uptime['response_body']['properties']['hypervisor'][ - 'required'] = ['id', 'hypervisor_hostname', 'uptime'] diff --git a/tempest/api_schema/response/compute/v2_1/hypervisors.py b/tempest/api_schema/response/compute/v2_1/hypervisors.py index cbb76984b..3efa46b47 100644 --- a/tempest/api_schema/response/compute/v2_1/hypervisors.py +++ b/tempest/api_schema/response/compute/v2_1/hypervisors.py @@ -14,13 +14,163 @@ import copy -from tempest.api_schema.response.compute import hypervisors +get_hypervisor_statistics = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'hypervisor_statistics': { + 'type': 'object', + 'properties': { + 'count': {'type': 'integer'}, + 'current_workload': {'type': 'integer'}, + 'disk_available_least': {'type': ['integer', 'null']}, + 'free_disk_gb': {'type': 'integer'}, + 'free_ram_mb': {'type': 'integer'}, + 'local_gb': {'type': 'integer'}, + 'local_gb_used': {'type': 'integer'}, + 'memory_mb': {'type': 'integer'}, + 'memory_mb_used': {'type': 'integer'}, + 'running_vms': {'type': 'integer'}, + 'vcpus': {'type': 'integer'}, + 'vcpus_used': {'type': 'integer'} + }, + 'required': ['count', 'current_workload', + 'disk_available_least', 'free_disk_gb', + 'free_ram_mb', 'local_gb', 'local_gb_used', + 'memory_mb', 'memory_mb_used', 'running_vms', + 'vcpus', 'vcpus_used'] + } + }, + 'required': ['hypervisor_statistics'] + } +} + + +hypervisor_detail = { + 'type': 'object', + 'properties': { + 'status': {'type': 'string'}, + 'state': {'type': 'string'}, + 'cpu_info': {'type': 'string'}, + 'current_workload': {'type': 'integer'}, + 'disk_available_least': {'type': ['integer', 'null']}, + 'host_ip': { + 'type': 'string', + 'format': 'ip-address' + }, + 'free_disk_gb': {'type': 'integer'}, + 'free_ram_mb': {'type': 'integer'}, + 'hypervisor_hostname': {'type': 'string'}, + 'hypervisor_type': {'type': 'string'}, + 'hypervisor_version': {'type': 'integer'}, + 'id': {'type': ['integer', 'string']}, + 'local_gb': {'type': 'integer'}, + 'local_gb_used': {'type': 'integer'}, + 'memory_mb': {'type': 'integer'}, + 'memory_mb_used': {'type': 'integer'}, + 'running_vms': {'type': 'integer'}, + 'service': { + 'type': 'object', + 'properties': { + 'host': {'type': 'string'}, + 'id': {'type': ['integer', 'string']}, + 'disabled_reason': {'type': ['string', 'null']} + }, + 'required': ['host', 'id'] + }, + 'vcpus': {'type': 'integer'}, + 'vcpus_used': {'type': 'integer'} + }, + # NOTE: When loading os-hypervisor-status extension, + # a response contains status and state. So these params + # should not be required. + 'required': ['cpu_info', 'current_workload', + 'disk_available_least', 'host_ip', + 'free_disk_gb', 'free_ram_mb', + 'hypervisor_hostname', 'hypervisor_type', + 'hypervisor_version', 'id', 'local_gb', + 'local_gb_used', 'memory_mb', 'memory_mb_used', + 'running_vms', 'service', 'vcpus', 'vcpus_used'] +} +list_hypervisors_detail = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'hypervisors': { + 'type': 'array', + 'items': hypervisor_detail + } + }, + 'required': ['hypervisors'] + } +} -hypervisors_servers = copy.deepcopy(hypervisors.common_hypervisors_detail) +get_hypervisor = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'hypervisor': hypervisor_detail + }, + 'required': ['hypervisor'] + } +} + +list_search_hypervisors = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'hypervisors': { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'status': {'type': 'string'}, + 'state': {'type': 'string'}, + 'id': {'type': ['integer', 'string']}, + 'hypervisor_hostname': {'type': 'string'} + }, + # NOTE: When loading os-hypervisor-status extension, + # a response contains status and state. So these params + # should not be required. + 'required': ['id', 'hypervisor_hostname'] + } + } + }, + 'required': ['hypervisors'] + } +} + +get_hypervisor_uptime = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'hypervisor': { + 'type': 'object', + 'properties': { + 'status': {'type': 'string'}, + 'state': {'type': 'string'}, + 'id': {'type': ['integer', 'string']}, + 'hypervisor_hostname': {'type': 'string'}, + 'uptime': {'type': 'string'} + }, + # NOTE: When loading os-hypervisor-status extension, + # a response contains status and state. So these params + # should not be required. + 'required': ['id', 'hypervisor_hostname', 'uptime'] + } + }, + 'required': ['hypervisor'] + } +} -# Defining extra attributes for V3 show hypervisor schema -hypervisors_servers['response_body']['properties']['hypervisors']['items'][ +get_hypervisors_servers = copy.deepcopy(list_search_hypervisors) +get_hypervisors_servers['response_body']['properties']['hypervisors']['items'][ 'properties']['servers'] = { 'type': 'array', 'items': { diff --git a/tempest/services/compute/json/hypervisor_client.py b/tempest/services/compute/json/hypervisor_client.py index bf4bc7f92..49ac2669f 100644 --- a/tempest/services/compute/json/hypervisor_client.py +++ b/tempest/services/compute/json/hypervisor_client.py @@ -15,8 +15,7 @@ import json -from tempest.api_schema.response.compute import hypervisors as common_schema -from tempest.api_schema.response.compute.v2_1 import hypervisors as v2schema +from tempest.api_schema.response.compute.v2_1 import hypervisors as schema from tempest.common import service_client @@ -26,51 +25,47 @@ class HypervisorClientJSON(service_client.ServiceClient): """List hypervisors information.""" resp, body = self.get('os-hypervisors') body = json.loads(body) - self.validate_response(common_schema.common_hypervisors_detail, - resp, body) + self.validate_response(schema.list_search_hypervisors, resp, body) return service_client.ResponseBodyList(resp, body['hypervisors']) def get_hypervisor_list_details(self): """Show detailed hypervisors information.""" resp, body = self.get('os-hypervisors/detail') body = json.loads(body) - self.validate_response(common_schema.common_list_hypervisors_detail, - resp, body) + self.validate_response(schema.list_hypervisors_detail, resp, body) return service_client.ResponseBodyList(resp, body['hypervisors']) def get_hypervisor_show_details(self, hyper_id): """Display the details of the specified hypervisor.""" resp, body = self.get('os-hypervisors/%s' % hyper_id) body = json.loads(body) - self.validate_response(common_schema.common_show_hypervisor, - resp, body) + self.validate_response(schema.get_hypervisor, resp, body) return service_client.ResponseBody(resp, body['hypervisor']) def get_hypervisor_servers(self, hyper_name): """List instances belonging to the specified hypervisor.""" resp, body = self.get('os-hypervisors/%s/servers' % hyper_name) body = json.loads(body) - self.validate_response(v2schema.hypervisors_servers, resp, body) + self.validate_response(schema.get_hypervisors_servers, resp, body) return service_client.ResponseBodyList(resp, body['hypervisors']) def get_hypervisor_stats(self): """Get hypervisor statistics over all compute nodes.""" resp, body = self.get('os-hypervisors/statistics') body = json.loads(body) - self.validate_response(common_schema.hypervisor_statistics, resp, body) + self.validate_response(schema.get_hypervisor_statistics, resp, body) return service_client.ResponseBody(resp, body['hypervisor_statistics']) def get_hypervisor_uptime(self, hyper_id): """Display the uptime of the specified hypervisor.""" resp, body = self.get('os-hypervisors/%s/uptime' % hyper_id) body = json.loads(body) - self.validate_response(common_schema.hypervisor_uptime, resp, body) + self.validate_response(schema.get_hypervisor_uptime, resp, body) return service_client.ResponseBody(resp, body['hypervisor']) def search_hypervisor(self, hyper_name): """Search specified hypervisor.""" resp, body = self.get('os-hypervisors/%s/search' % hyper_name) body = json.loads(body) - self.validate_response(common_schema.common_hypervisors_detail, - resp, body) + self.validate_response(schema.list_search_hypervisors, resp, body) return service_client.ResponseBodyList(resp, body['hypervisors']) |