Migrate tempest-lib code into new lib dir
This commit migrates all of the code from tempest-lib as of it's current HEAD, 6ad0ce42c2791a28125d38b40e7dcddf32dbeed7. The only changes made to the tempest-lib code is to update the imports and other references to tempest_lib. Since in it's new home it should be tempest.lib. Partially implements bp tempest-lib-reintegration Change-Id: Iadc1b61953a86fa9de34e285a0bb083b1ba06fa8
This commit is contained in:
parent
84d06eca2f
commit
9e26ca8760
@ -69,10 +69,12 @@ def no_setup_teardown_class_for_tests(physical_line, filename):
|
||||
if pep8.noqa(physical_line):
|
||||
return
|
||||
|
||||
if 'tempest/test.py' not in filename:
|
||||
if SETUP_TEARDOWN_CLASS_DEFINITION.match(physical_line):
|
||||
return (physical_line.find('def'),
|
||||
"T105: (setUp|tearDown)Class can not be used in tests")
|
||||
if 'tempest/test.py' in filename or 'tempest/lib/' in filename:
|
||||
return
|
||||
|
||||
if SETUP_TEARDOWN_CLASS_DEFINITION.match(physical_line):
|
||||
return (physical_line.find('def'),
|
||||
"T105: (setUp|tearDown)Class can not be used in tests")
|
||||
|
||||
|
||||
def no_vi_headers(physical_line, line_number, lines):
|
||||
|
0
tempest/lib/__init__.py
Normal file
0
tempest/lib/__init__.py
Normal file
0
tempest/lib/api_schema/__init__.py
Normal file
0
tempest/lib/api_schema/__init__.py
Normal file
0
tempest/lib/api_schema/response/__init__.py
Normal file
0
tempest/lib/api_schema/response/__init__.py
Normal file
0
tempest/lib/api_schema/response/compute/__init__.py
Normal file
0
tempest/lib/api_schema/response/compute/__init__.py
Normal file
82
tempest/lib/api_schema/response/compute/v2_1/agents.py
Normal file
82
tempest/lib/api_schema/response/compute/v2_1/agents.py
Normal file
@ -0,0 +1,82 @@
|
||||
# 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.
|
||||
|
||||
common_agent_info = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'agent_id': {'type': ['integer', 'string']},
|
||||
'hypervisor': {'type': 'string'},
|
||||
'os': {'type': 'string'},
|
||||
'architecture': {'type': 'string'},
|
||||
'version': {'type': 'string'},
|
||||
'url': {'type': 'string', 'format': 'uri'},
|
||||
'md5hash': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['agent_id', 'hypervisor', 'os', 'architecture',
|
||||
'version', 'url', 'md5hash']
|
||||
}
|
||||
|
||||
list_agents = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'agents': {
|
||||
'type': 'array',
|
||||
'items': common_agent_info
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['agents']
|
||||
}
|
||||
}
|
||||
|
||||
create_agent = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'agent': common_agent_info
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['agent']
|
||||
}
|
||||
}
|
||||
|
||||
update_agent = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'agent': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'agent_id': {'type': ['integer', 'string']},
|
||||
'version': {'type': 'string'},
|
||||
'url': {'type': 'string', 'format': 'uri'},
|
||||
'md5hash': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['agent_id', 'version', 'url', 'md5hash']
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['agent']
|
||||
}
|
||||
}
|
||||
|
||||
delete_agent = {
|
||||
'status_code': [200]
|
||||
}
|
92
tempest/lib/api_schema/response/compute/v2_1/aggregates.py
Normal file
92
tempest/lib/api_schema/response/compute/v2_1/aggregates.py
Normal file
@ -0,0 +1,92 @@
|
||||
# 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
|
||||
|
||||
# create-aggregate api doesn't have 'hosts' and 'metadata' attributes.
|
||||
aggregate_for_create = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'availability_zone': {'type': ['string', 'null']},
|
||||
'created_at': {'type': 'string'},
|
||||
'deleted': {'type': 'boolean'},
|
||||
'deleted_at': {'type': ['string', 'null']},
|
||||
'id': {'type': 'integer'},
|
||||
'name': {'type': 'string'},
|
||||
'updated_at': {'type': ['string', 'null']}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['availability_zone', 'created_at', 'deleted',
|
||||
'deleted_at', 'id', 'name', 'updated_at'],
|
||||
}
|
||||
|
||||
common_aggregate_info = copy.deepcopy(aggregate_for_create)
|
||||
common_aggregate_info['properties'].update({
|
||||
'hosts': {'type': 'array'},
|
||||
'metadata': {'type': 'object'}
|
||||
})
|
||||
common_aggregate_info['required'].extend(['hosts', 'metadata'])
|
||||
|
||||
list_aggregates = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'aggregates': {
|
||||
'type': 'array',
|
||||
'items': common_aggregate_info
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['aggregates'],
|
||||
}
|
||||
}
|
||||
|
||||
get_aggregate = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'aggregate': common_aggregate_info
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['aggregate'],
|
||||
}
|
||||
}
|
||||
|
||||
aggregate_set_metadata = get_aggregate
|
||||
# The 'updated_at' attribute of 'update_aggregate' can't be null.
|
||||
update_aggregate = copy.deepcopy(get_aggregate)
|
||||
update_aggregate['response_body']['properties']['aggregate']['properties'][
|
||||
'updated_at'] = {
|
||||
'type': 'string'
|
||||
}
|
||||
|
||||
delete_aggregate = {
|
||||
'status_code': [200]
|
||||
}
|
||||
|
||||
create_aggregate = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'aggregate': aggregate_for_create
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['aggregate'],
|
||||
}
|
||||
}
|
||||
|
||||
aggregate_add_remove_host = get_aggregate
|
@ -0,0 +1,78 @@
|
||||
# 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
|
||||
|
||||
|
||||
base = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'availabilityZoneInfo': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'zoneName': {'type': 'string'},
|
||||
'zoneState': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'available': {'type': 'boolean'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['available']
|
||||
},
|
||||
# NOTE: Here is the difference between detail and
|
||||
# non-detail.
|
||||
'hosts': {'type': 'null'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['zoneName', 'zoneState', 'hosts']
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['availabilityZoneInfo']
|
||||
}
|
||||
}
|
||||
|
||||
detail = {
|
||||
'type': 'object',
|
||||
'patternProperties': {
|
||||
# NOTE: Here is for a hostname
|
||||
'^[a-zA-Z0-9-_.]+$': {
|
||||
'type': 'object',
|
||||
'patternProperties': {
|
||||
# NOTE: Here is for a service name
|
||||
'^.*$': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'available': {'type': 'boolean'},
|
||||
'active': {'type': 'boolean'},
|
||||
'updated_at': {'type': ['string', 'null']}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['available', 'active', 'updated_at']
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list_availability_zone_list = copy.deepcopy(base)
|
||||
|
||||
list_availability_zone_list_detail = copy.deepcopy(base)
|
||||
list_availability_zone_list_detail['response_body']['properties'][
|
||||
'availabilityZoneInfo']['items']['properties']['hosts'] = detail
|
@ -0,0 +1,63 @@
|
||||
# Copyright 2015 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
|
||||
|
||||
node = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'id': {'type': 'string'},
|
||||
'interfaces': {'type': 'array'},
|
||||
'host': {'type': 'string'},
|
||||
'task_state': {'type': ['string', 'null']},
|
||||
'cpus': {'type': ['integer', 'string']},
|
||||
'memory_mb': {'type': ['integer', 'string']},
|
||||
'disk_gb': {'type': ['integer', 'string']},
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['id', 'interfaces', 'host', 'task_state', 'cpus', 'memory_mb',
|
||||
'disk_gb']
|
||||
}
|
||||
|
||||
list_baremetal_nodes = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'nodes': {
|
||||
'type': 'array',
|
||||
'items': node
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['nodes']
|
||||
}
|
||||
}
|
||||
|
||||
baremetal_node = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'node': node
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['node']
|
||||
}
|
||||
}
|
||||
get_baremetal_node = copy.deepcopy(baremetal_node)
|
||||
get_baremetal_node['response_body']['properties']['node'][
|
||||
'properties'].update({'instance_uuid': {'type': ['string', 'null']}})
|
||||
get_baremetal_node['response_body']['properties']['node'][
|
||||
'required'].append('instance_uuid')
|
41
tempest/lib/api_schema/response/compute/v2_1/certificates.py
Normal file
41
tempest/lib/api_schema/response/compute/v2_1/certificates.py
Normal file
@ -0,0 +1,41 @@
|
||||
# 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
|
||||
|
||||
_common_schema = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'certificate': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'data': {'type': 'string'},
|
||||
'private_key': {'type': 'string'},
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['data', 'private_key']
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['certificate']
|
||||
}
|
||||
}
|
||||
|
||||
get_certificate = copy.deepcopy(_common_schema)
|
||||
get_certificate['response_body']['properties']['certificate'][
|
||||
'properties']['private_key'].update({'type': 'null'})
|
||||
|
||||
create_certificate = copy.deepcopy(_common_schema)
|
47
tempest/lib/api_schema/response/compute/v2_1/extensions.py
Normal file
47
tempest/lib/api_schema/response/compute/v2_1/extensions.py
Normal file
@ -0,0 +1,47 @@
|
||||
# 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.
|
||||
|
||||
list_extensions = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'extensions': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'updated': {
|
||||
'type': 'string',
|
||||
'format': 'data-time'
|
||||
},
|
||||
'name': {'type': 'string'},
|
||||
'links': {'type': 'array'},
|
||||
'namespace': {
|
||||
'type': 'string',
|
||||
'format': 'uri'
|
||||
},
|
||||
'alias': {'type': 'string'},
|
||||
'description': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['updated', 'name', 'links', 'namespace',
|
||||
'alias', 'description']
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['extensions']
|
||||
}
|
||||
}
|
41
tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py
Normal file
41
tempest/lib/api_schema/response/compute/v2_1/fixed_ips.py
Normal file
@ -0,0 +1,41 @@
|
||||
# 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.
|
||||
|
||||
from tempest.lib.api_schema.response.compute.v2_1 import parameter_types
|
||||
|
||||
get_fixed_ip = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'fixed_ip': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'address': parameter_types.ip_address,
|
||||
'cidr': {'type': 'string'},
|
||||
'host': {'type': 'string'},
|
||||
'hostname': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['address', 'cidr', 'host', 'hostname']
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['fixed_ip']
|
||||
}
|
||||
}
|
||||
|
||||
reserve_unreserve_fixed_ip = {
|
||||
'status_code': [202]
|
||||
}
|
103
tempest/lib/api_schema/response/compute/v2_1/flavors.py
Normal file
103
tempest/lib/api_schema/response/compute/v2_1/flavors.py
Normal file
@ -0,0 +1,103 @@
|
||||
# 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.
|
||||
|
||||
from tempest.lib.api_schema.response.compute.v2_1 import parameter_types
|
||||
|
||||
list_flavors = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'flavors': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': {'type': 'string'},
|
||||
'links': parameter_types.links,
|
||||
'id': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['name', 'links', 'id']
|
||||
}
|
||||
},
|
||||
'flavors_links': parameter_types.links
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# NOTE(gmann): flavors_links attribute is not necessary
|
||||
# to be present always So it is not 'required'.
|
||||
'required': ['flavors']
|
||||
}
|
||||
}
|
||||
|
||||
common_flavor_info = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': {'type': 'string'},
|
||||
'links': parameter_types.links,
|
||||
'ram': {'type': 'integer'},
|
||||
'vcpus': {'type': 'integer'},
|
||||
# 'swap' attributes comes as integer value but if it is empty
|
||||
# it comes as "". So defining type of as string and integer.
|
||||
'swap': {'type': ['integer', 'string']},
|
||||
'disk': {'type': 'integer'},
|
||||
'id': {'type': 'string'},
|
||||
'OS-FLV-DISABLED:disabled': {'type': 'boolean'},
|
||||
'os-flavor-access:is_public': {'type': 'boolean'},
|
||||
'rxtx_factor': {'type': 'number'},
|
||||
'OS-FLV-EXT-DATA:ephemeral': {'type': 'integer'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# 'OS-FLV-DISABLED', 'os-flavor-access', 'rxtx_factor' and
|
||||
# 'OS-FLV-EXT-DATA' are API extensions. So they are not 'required'.
|
||||
'required': ['name', 'links', 'ram', 'vcpus', 'swap', 'disk', 'id']
|
||||
}
|
||||
|
||||
list_flavors_details = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'flavors': {
|
||||
'type': 'array',
|
||||
'items': common_flavor_info
|
||||
},
|
||||
# NOTE(gmann): flavors_links attribute is not necessary
|
||||
# to be present always So it is not 'required'.
|
||||
'flavors_links': parameter_types.links
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['flavors']
|
||||
}
|
||||
}
|
||||
|
||||
unset_flavor_extra_specs = {
|
||||
'status_code': [200]
|
||||
}
|
||||
|
||||
create_get_flavor_details = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'flavor': common_flavor_info
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['flavor']
|
||||
}
|
||||
}
|
||||
|
||||
delete_flavor = {
|
||||
'status_code': [202]
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
# 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.
|
||||
|
||||
add_remove_list_flavor_access = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'flavor_access': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'flavor_id': {'type': 'string'},
|
||||
'tenant_id': {'type': 'string'},
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['flavor_id', 'tenant_id'],
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['flavor_access']
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
# 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.
|
||||
|
||||
set_get_flavor_extra_specs = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'extra_specs': {
|
||||
'type': 'object',
|
||||
'patternProperties': {
|
||||
'^[a-zA-Z0-9_\-\. :]+$': {'type': 'string'}
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['extra_specs']
|
||||
}
|
||||
}
|
||||
|
||||
set_get_flavor_extra_specs_key = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'patternProperties': {
|
||||
'^[a-zA-Z0-9_\-\. :]+$': {'type': 'string'}
|
||||
}
|
||||
}
|
||||
}
|
148
tempest/lib/api_schema/response/compute/v2_1/floating_ips.py
Normal file
148
tempest/lib/api_schema/response/compute/v2_1/floating_ips.py
Normal file
@ -0,0 +1,148 @@
|
||||
# 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.
|
||||
|
||||
from tempest.lib.api_schema.response.compute.v2_1 import parameter_types
|
||||
|
||||
common_floating_ip_info = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
# NOTE: Now the type of 'id' is integer, but
|
||||
# here allows 'string' also because we will be
|
||||
# able to change it to 'uuid' in the future.
|
||||
'id': {'type': ['integer', 'string']},
|
||||
'pool': {'type': ['string', 'null']},
|
||||
'instance_id': {'type': ['string', 'null']},
|
||||
'ip': parameter_types.ip_address,
|
||||
'fixed_ip': parameter_types.ip_address
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['id', 'pool', 'instance_id',
|
||||
'ip', 'fixed_ip'],
|
||||
|
||||
}
|
||||
list_floating_ips = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'floating_ips': {
|
||||
'type': 'array',
|
||||
'items': common_floating_ip_info
|
||||
},
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['floating_ips'],
|
||||
}
|
||||
}
|
||||
|
||||
create_get_floating_ip = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'floating_ip': common_floating_ip_info
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['floating_ip'],
|
||||
}
|
||||
}
|
||||
|
||||
list_floating_ip_pools = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'floating_ip_pools': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['name'],
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['floating_ip_pools'],
|
||||
}
|
||||
}
|
||||
|
||||
add_remove_floating_ip = {
|
||||
'status_code': [202]
|
||||
}
|
||||
|
||||
create_floating_ips_bulk = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'floating_ips_bulk_create': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'interface': {'type': ['string', 'null']},
|
||||
'ip_range': {'type': 'string'},
|
||||
'pool': {'type': ['string', 'null']},
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['interface', 'ip_range', 'pool'],
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['floating_ips_bulk_create'],
|
||||
}
|
||||
}
|
||||
|
||||
delete_floating_ips_bulk = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'floating_ips_bulk_delete': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['floating_ips_bulk_delete'],
|
||||
}
|
||||
}
|
||||
|
||||
list_floating_ips_bulk = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'floating_ip_info': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'address': parameter_types.ip_address,
|
||||
'instance_uuid': {'type': ['string', 'null']},
|
||||
'interface': {'type': ['string', 'null']},
|
||||
'pool': {'type': ['string', 'null']},
|
||||
'project_id': {'type': ['string', 'null']},
|
||||
'fixed_ip': parameter_types.ip_address
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# NOTE: fixed_ip is introduced after JUNO release,
|
||||
# So it is not defined as 'required'.
|
||||
'required': ['address', 'instance_uuid', 'interface',
|
||||
'pool', 'project_id'],
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['floating_ip_info'],
|
||||
}
|
||||
}
|
116
tempest/lib/api_schema/response/compute/v2_1/hosts.py
Normal file
116
tempest/lib/api_schema/response/compute/v2_1/hosts.py
Normal file
@ -0,0 +1,116 @@
|
||||
# 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
|
||||
|
||||
|
||||
list_hosts = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'hosts': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'host_name': {'type': 'string'},
|
||||
'service': {'type': 'string'},
|
||||
'zone': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['host_name', 'service', 'zone']
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['hosts']
|
||||
}
|
||||
}
|
||||
|
||||
get_host_detail = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'host': {
|
||||
'type': 'array',
|
||||
'item': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'resource': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'cpu': {'type': 'integer'},
|
||||
'disk_gb': {'type': 'integer'},
|
||||
'host': {'type': 'string'},
|
||||
'memory_mb': {'type': 'integer'},
|
||||
'project': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['cpu', 'disk_gb', 'host',
|
||||
'memory_mb', 'project']
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['resource']
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['host']
|
||||
}
|
||||
}
|
||||
|
||||
startup_host = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'host': {'type': 'string'},
|
||||
'power_action': {'enum': ['startup']}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['host', 'power_action']
|
||||
}
|
||||
}
|
||||
|
||||
# The 'power_action' attribute of 'shutdown_host' API is 'shutdown'
|
||||
shutdown_host = copy.deepcopy(startup_host)
|
||||
|
||||
shutdown_host['response_body']['properties']['power_action'] = {
|
||||
'enum': ['shutdown']
|
||||
}
|
||||
|
||||
# The 'power_action' attribute of 'reboot_host' API is 'reboot'
|
||||
reboot_host = copy.deepcopy(startup_host)
|
||||
|
||||
reboot_host['response_body']['properties']['power_action'] = {
|
||||
'enum': ['reboot']
|
||||
}
|
||||
|
||||
update_host = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'host': {'type': 'string'},
|
||||
'maintenance_mode': {'enum': ['on_maintenance',
|
||||
'off_maintenance']},
|
||||
'status': {'enum': ['enabled', 'disabled']}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['host', 'maintenance_mode', 'status']
|
||||
}
|
||||
}
|
195
tempest/lib/api_schema/response/compute/v2_1/hypervisors.py
Normal file
195
tempest/lib/api_schema/response/compute/v2_1/hypervisors.py
Normal file
@ -0,0 +1,195 @@
|
||||
# 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.lib.api_schema.response.compute.v2_1 import parameter_types
|
||||
|
||||
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'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'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']
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'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': parameter_types.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']}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['host', 'id']
|
||||
},
|
||||
'vcpus': {'type': 'integer'},
|
||||
'vcpus_used': {'type': 'integer'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# 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
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['hypervisors']
|
||||
}
|
||||
}
|
||||
|
||||
get_hypervisor = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'hypervisor': hypervisor_detail
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'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'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# NOTE: When loading os-hypervisor-status extension,
|
||||
# a response contains status and state. So these params
|
||||
# should not be required.
|
||||
'required': ['id', 'hypervisor_hostname']
|
||||
}
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'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'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# 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']
|
||||
}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['hypervisor']
|
||||
}
|
||||
}
|
||||
|
||||
get_hypervisors_servers = copy.deepcopy(list_search_hypervisors)
|
||||
get_hypervisors_servers['response_body']['properties']['hypervisors']['items'][
|
||||
'properties']['servers'] = {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'uuid': {'type': 'string'},
|
||||
'name': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
}
|
||||
}
|
||||
# In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
|
||||
# attribute will not be present in response body So it is not 'required'.
|
154
tempest/lib/api_schema/response/compute/v2_1/images.py
Normal file
154
tempest/lib/api_schema/response/compute/v2_1/images.py
Normal file
@ -0,0 +1,154 @@
|
||||
# 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.lib.api_schema.response.compute.v2_1 import parameter_types
|
||||
|
||||
image_links = copy.deepcopy(parameter_types.links)
|
||||
image_links['items']['properties'].update({'type': {'type': 'string'}})
|
||||
|
||||
common_image_schema = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'id': {'type': 'string'},
|
||||
'status': {'type': 'string'},
|
||||
'updated': {'type': 'string'},
|
||||
'links': image_links,
|
||||
'name': {'type': ['string', 'null']},
|
||||
'created': {'type': 'string'},
|
||||
'minDisk': {'type': 'integer'},
|
||||
'minRam': {'type': 'integer'},
|
||||
'progress': {'type': 'integer'},
|
||||
'metadata': {'type': 'object'},
|
||||
'server': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'id': {'type': 'string'},
|
||||
'links': parameter_types.links
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['id', 'links']
|
||||
},
|
||||
'OS-EXT-IMG-SIZE:size': {'type': ['integer', 'null']},
|
||||
'OS-DCF:diskConfig': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# 'server' attributes only comes in response body if image is
|
||||
# associated with any server. 'OS-EXT-IMG-SIZE:size' & 'OS-DCF:diskConfig'
|
||||
# are API extension, So those are not defined as 'required'.
|
||||
'required': ['id', 'status', 'updated', 'links', 'name',
|
||||
'created', 'minDisk', 'minRam', 'progress',
|
||||
'metadata']
|
||||
}
|
||||
|
||||
get_image = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'image': common_image_schema
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['image']
|
||||
}
|
||||
}
|
||||
|
||||
list_images = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'images': {
|
||||
'type': 'array',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'id': {'type': 'string'},
|
||||
'links': image_links,
|
||||
'name': {'type': 'string'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['id', 'links', 'name']
|
||||
}
|
||||
},
|
||||
'images_links': parameter_types.links
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# NOTE(gmann): images_links attribute is not necessary to be
|
||||
# present always So it is not 'required'.
|
||||
'required': ['images']
|
||||
}
|
||||
}
|
||||
|
||||
create_image = {
|
||||
'status_code': [202],
|
||||
'response_header': {
|
||||
'type': 'object',
|
||||
'properties': parameter_types.response_header
|
||||
}
|
||||
}
|
||||
create_image['response_header']['properties'].update(
|
||||
{'location': {
|
||||
'type': 'string',
|
||||
'format': 'uri'}
|
||||
}
|
||||
)
|
||||
create_image['response_header']['required'] = ['location']
|
||||
|
||||
delete = {
|
||||
'status_code': [204]
|
||||
}
|
||||
|
||||
image_metadata = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'metadata': {'type': 'object'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['metadata']
|
||||
}
|
||||
}
|
||||
|
||||
image_meta_item = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'meta': {'type': 'object'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['meta']
|
||||
}
|
||||
}
|
||||
|
||||
list_images_details = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'images': {
|
||||
'type': 'array',
|
||||
'items': common_image_schema
|
||||
},
|
||||
'images_links': parameter_types.links
|
||||
},
|
||||
'additionalProperties': False,
|
||||
# NOTE(gmann): images_links attribute is not necessary to be
|
||||
# present always So it is not 'required'.
|
||||
'required': ['images']
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
# 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.
|
||||
|
||||
common_instance_usage_audit_log = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'hosts_not_run': {
|
||||
'type': 'array',
|
||||
'items': {'type': 'string'}
|
||||
},
|
||||
'log': {'type': 'object'},
|
||||
'num_hosts': {'type': 'integer'},
|
||||
'num_hosts_done': {'type': 'integer'},
|
||||
'num_hosts_not_run': {'type': 'integer'},
|
||||
'num_hosts_running': {'type': 'integer'},
|
||||
'overall_status': {'type': 'string'},
|
||||
'period_beginning': {'type': 'string'},
|
||||
'period_ending': {'type': 'string'},
|
||||
'total_errors': {'type': 'integer'},
|
||||
'total_instances': {'type': 'integer'}
|
||||
},
|
||||
'additionalProperties': False,
|
||||
'required': ['hosts_not_run', 'log', 'num_hosts', 'num_hosts_done',
|
||||
'num_hosts_not_run', 'num_hosts_running', 'overall_status',
|
||||
'period_beginning', 'period_ending', 'total_errors',
|
||||
'total_instances']
|
||||
}
|
||||
|
||||
get_instance_usage_audit_log = {
|
||||
'status_code': [200],
|
||||
'response_body': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'instance_usage_audit_log': common_instance_usage_audit_log
|
||||
},
|
||||
'additionalProperties': False,
|
||||