[py35] Fixes to get rally scenarios working

Get nova.boot_server, nova.attach_volume, nova.detach_volume and
nova.delete_server working. Please see the following cinder review
for the experiment (see gate-rally-dsvm-py35-cinder-nv):
Id78b136ad15ac77717711ebcbb671c2f1dd3a10c

nova/api/openstack/placement/handlers:
* make sure we convert to bytes before we set the response.body

nova/tests/functional/db/api/test_migrations.py:
* range is an iterator and must be converted to a list

nova/tests/unit/virt/libvirt/test_driver.py:
nova/tests/unit/virt/libvirt/test_fakelibvirt.py:
nova/virt/libvirt/config.py:
nova/virt/libvirt/guest.py:
nova/virt/libvirt/host.py:
* libvirt API expects strings, some of the code paths ended up
  being bytes, so convert them to strings before calling libvirt

Finally, eliminated the tests that now started to pass from
tests-functional-py3.txt

Change-Id: Ib721442e9d83a3b9a7fe597f3886430449a9e684
This commit is contained in:
Davanum Srinivas 2017-01-12 09:17:06 -05:00 committed by Davanum Srinivas (dims)
parent 3ec43d81c3
commit 584969aff1
14 changed files with 77 additions and 126 deletions

View File

@ -12,6 +12,7 @@
"""Aggregate handlers for Placement API."""
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob
from nova.api.openstack.placement import microversion
@ -31,7 +32,8 @@ PUT_AGGREGATES_SCHEMA = {
def _send_aggregates(response, aggregate_uuids):
response.status = 200
response.body = jsonutils.dumps(_serialize_aggregates(aggregate_uuids))
response.body = encodeutils.to_utf8(
jsonutils.dumps(_serialize_aggregates(aggregate_uuids)))
response.content_type = 'application/json'
return response

View File

@ -16,6 +16,7 @@ import collections
import jsonschema
from oslo_log import log as logging
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob
from nova.api.openstack.placement import util
@ -173,7 +174,7 @@ def list_for_consumer(req):
_serialize_allocations_for_consumer(allocations))
req.response.status = 200
req.response.body = allocations_json
req.response.body = encodeutils.to_utf8(allocations_json)
req.response.content_type = 'application/json'
return req.response
@ -209,7 +210,7 @@ def list_for_resource_provider(req):
allocations, resource_provider))
req.response.status = 200
req.response.body = allocations_json
req.response.body = encodeutils.to_utf8(allocations_json)
req.response.content_type = 'application/json'
return req.response

View File

@ -15,6 +15,7 @@ import copy
from oslo_db import exception as db_exc
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob
from nova.api.openstack.placement import util
@ -157,8 +158,8 @@ def _make_inventory_object(resource_provider, resource_class, **data):
def _send_inventories(response, resource_provider, inventories):
"""Send a JSON representation of a list of inventories."""
response.status = 200
response.body = jsonutils.dumps(_serialize_inventories(
inventories, resource_provider.generation))
response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_inventories(inventories, resource_provider.generation)))
response.content_type = 'application/json'
return response
@ -166,8 +167,8 @@ def _send_inventories(response, resource_provider, inventories):
def _send_inventory(response, resource_provider, inventory, status=200):
"""Send a JSON representation of one single inventory."""
response.status = status
response.body = jsonutils.dumps(_serialize_inventory(
inventory, generation=resource_provider.generation))
response.body = encodeutils.to_utf8(jsonutils.dumps(_serialize_inventory(
inventory, generation=resource_provider.generation)))
response.content_type = 'application/json'
return response

View File

@ -14,6 +14,7 @@
import copy
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob
from nova.api.openstack.placement import microversion
@ -131,8 +132,8 @@ def get_resource_class(req):
# The containing application will catch a not found here.
rc = objects.ResourceClass.get_by_name(context, name)
req.response.body = jsonutils.dumps(
_serialize_resource_class(req.environ, rc)
req.response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_resource_class(req.environ, rc))
)
req.response.content_type = 'application/json'
return req.response
@ -151,8 +152,8 @@ def list_resource_classes(req):
rcs = objects.ResourceClassList.get_all(context)
response = req.response
response.body = jsonutils.dumps(
_serialize_resource_classes(req.environ, rcs)
response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_resource_classes(req.environ, rcs))
)
response.content_type = 'application/json'
return response
@ -190,8 +191,8 @@ def update_resource_class(req):
{'rp_name': name},
json_formatter=util.json_error_formatter)
req.response.body = jsonutils.dumps(
_serialize_resource_class(req.environ, rc)
req.response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_resource_class(req.environ, rc))
)
req.response.status = 200
req.response.content_type = 'application/json'

View File

@ -15,6 +15,7 @@ import copy
from oslo_db import exception as db_exc
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
from oslo_utils import uuidutils
import webob
@ -148,8 +149,8 @@ def get_resource_provider(req):
resource_provider = objects.ResourceProvider.get_by_uuid(
context, uuid)
req.response.body = jsonutils.dumps(
_serialize_provider(req.environ, resource_provider))
req.response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_provider(req.environ, resource_provider)))
req.response.content_type = 'application/json'
return req.response
@ -200,8 +201,8 @@ def list_resource_providers(req):
context, filters)
response = req.response
response.body = jsonutils.dumps(_serialize_providers(
req.environ, resource_providers))
response.body = encodeutils.to_utf8(
jsonutils.dumps(_serialize_providers(req.environ, resource_providers)))
response.content_type = 'application/json'
return response
@ -238,8 +239,8 @@ def update_resource_provider(req):
{'rp_uuid': uuid, 'error': exc},
json_formatter=util.json_error_formatter)
req.response.body = jsonutils.dumps(
_serialize_provider(req.environ, resource_provider))
req.response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_provider(req.environ, resource_provider)))
req.response.status = 200
req.response.content_type = 'application/json'
return req.response

View File

@ -12,6 +12,7 @@
"""Handler for the root of the Placement API."""
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob
@ -31,6 +32,6 @@ def home(req):
'min_version': min_version,
}
version_json = jsonutils.dumps({'versions': [version_data]})
req.response.body = version_json
req.response.body = encodeutils.to_utf8(version_json)
req.response.content_type = 'application/json'
return req.response

View File

@ -12,6 +12,7 @@
"""Placement API handlers for usage information."""
from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob
from nova.api.openstack.placement import util
@ -58,7 +59,7 @@ def list_usages(req):
context, uuid)
response = req.response
response.body = jsonutils.dumps(
_serialize_usages(resource_provider, usage))
response.body = encodeutils.to_utf8(jsonutils.dumps(
_serialize_usages(resource_provider, usage)))
req.response.content_type = 'application/json'
return req.response

View File

@ -162,8 +162,8 @@ class NovaAPIMigrationsWalk(test_migrations.WalkVersionsMixin):
return self.engine
def _skippable_migrations(self):
mitaka_placeholders = range(8, 13)
newton_placeholders = range(21, 26)
mitaka_placeholders = list(range(8, 13))
newton_placeholders = list(range(21, 26))
special_cases = [
30, # Enforcement migration, no changes to test
]

View File

@ -6307,7 +6307,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
mock_get_domain.assert_called_with(instance)
mock_dom.detachDeviceFlags.assert_called_with(
b"""<disk type="file" device="disk">
"""<disk type="file" device="disk">
<source file="/path/to/fake-volume"/>
<target bus="virtio" dev="vdc"/>
</disk>
@ -17147,13 +17147,13 @@ class LibvirtDriverTestCase(test.NoDBTestCase):
</domain>
"""
diska_xml = b"""<disk type="file" device="disk">
diska_xml = """<disk type="file" device="disk">
<source file="disk1_file"/>
<target bus="virtio" dev="vda"/>
<serial>0e38683e-f0af-418f-a3f1-6b67ea0f919d</serial>
</disk>"""
diskb_xml = b"""<disk type="block" device="disk">
diskb_xml = """<disk type="block" device="disk">
<source dev="/path/to/dev/1"/>
<target bus="virtio" dev="vdb"/>
</disk>"""
@ -17650,14 +17650,14 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase):
domain.XMLDesc(flags=0).AndReturn(self.dom_xml)
snap_xml_src = (
b'<domainsnapshot>\n'
b' <disks>\n'
b' <disk name="disk1_file" snapshot="external" type="file">\n'
b' <source file="new-file"/>\n'
b' </disk>\n'
b' <disk name="vdb" snapshot="no"/>\n'
b' </disks>\n'
b'</domainsnapshot>\n')
'<domainsnapshot>\n'
' <disks>\n'
' <disk name="disk1_file" snapshot="external" type="file">\n'
' <source file="new-file"/>\n'
' </disk>\n'
' <disk name="vdb" snapshot="no"/>\n'
' </disks>\n'
'</domainsnapshot>\n')
# Older versions of libvirt may be missing these.
fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32
@ -17720,14 +17720,14 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase):
domain.XMLDesc(flags=0).AndReturn(self.dom_xml)
snap_xml_src = (
b'<domainsnapshot>\n'
b' <disks>\n'
b' <disk name="disk1_file" snapshot="external" type="file">\n'
b' <source file="new-file"/>\n'
b' </disk>\n'
b' <disk name="vdb" snapshot="no"/>\n'
b' </disks>\n'
b'</domainsnapshot>\n')
'<domainsnapshot>\n'
' <disks>\n'
' <disk name="disk1_file" snapshot="external" type="file">\n'
' <source file="new-file"/>\n'
' </disk>\n'
' <disk name="vdb" snapshot="no"/>\n'
' </disks>\n'
'</domainsnapshot>\n')
# Older versions of libvirt may be missing these.
fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32

View File

@ -367,7 +367,7 @@ class FakeLibvirtTests(test.NoDBTestCase):
libvirt.VIR_CPU_COMPARE_IDENTICAL)
def test_numa_topology_generation(self):
topology = b"""<topology>
topology = """<topology>
<cells num="2">
<cell id="0">
<memory unit="KiB">7870000</memory>

View File

@ -76,6 +76,8 @@ class LibvirtConfigObject(object):
def to_xml(self, pretty_print=True):
root = self.format_dom()
xml_str = etree.tostring(root, pretty_print=pretty_print)
if six.PY3 and isinstance(xml_str, six.binary_type):
xml_str = xml_str.decode("utf-8")
return xml_str

View File

@ -33,6 +33,7 @@ from oslo_service import loopingcall
from oslo_utils import encodeutils
from oslo_utils import excutils
from oslo_utils import importutils
import six
import time
from nova.compute import power_state
@ -120,6 +121,8 @@ class Guest(object):
:returns guest.Guest: Guest ready to be launched
"""
try:
if six.PY3 and isinstance(xml, six.binary_type):
xml = xml.decode('utf-8')
guest = host.write_instance_config(xml)
except Exception:
with excutils.save_and_reraise_exception():
@ -295,7 +298,11 @@ class Guest(object):
"""
flags = persistent and libvirt.VIR_DOMAIN_AFFECT_CONFIG or 0
flags |= live and libvirt.VIR_DOMAIN_AFFECT_LIVE or 0
device_xml = conf.to_xml()
if six.PY3 and isinstance(device_xml, six.binary_type):
device_xml = device_xml.decode('utf-8')
LOG.debug("attach device xml: %s", device_xml)
self._domain.attachDeviceFlags(device_xml, flags=flags)
@ -412,7 +419,11 @@ class Guest(object):
"""
flags = persistent and libvirt.VIR_DOMAIN_AFFECT_CONFIG or 0
flags |= live and libvirt.VIR_DOMAIN_AFFECT_LIVE or 0
device_xml = conf.to_xml()
if six.PY3 and isinstance(device_xml, six.binary_type):
device_xml = device_xml.decode('utf-8')
LOG.debug("detach device xml: %s", device_xml)
self._domain.detachDeviceFlags(device_xml, flags=flags)
@ -520,7 +531,12 @@ class Guest(object):
flags |= reuse_ext and (libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT
or 0)
flags |= quiesce and libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE or 0
self._domain.snapshotCreateXML(conf.to_xml(), flags=flags)
device_xml = conf.to_xml()
if six.PY3 and isinstance(device_xml, six.binary_type):
device_xml = device_xml.decode('utf-8')
self._domain.snapshotCreateXML(device_xml, flags=flags)
def shutdown(self):
"""Shutdown guest"""

View File

@ -641,7 +641,7 @@ class Host(object):
and self._caps.host.cpu.model is not None):
try:
xml_str = self._caps.host.cpu.to_xml()
if six.PY3:
if six.PY3 and isinstance(xml_str, six.binary_type):
xml_str = xml_str.decode('utf-8')
features = self.get_connection().baselineCPU(
[xml_str],

View File

@ -1,82 +1,16 @@
nova.tests.functional.api.openstack.placement.test_placement_api.aggregate_clear_those_aggregates.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.aggregate_get_empty_aggregates.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.aggregate_get_empty_aggregates_again.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.aggregate_get_those_aggregates.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.aggregate_put_some_aggregates.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_add_other_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_check_allocations_by_consumer_id.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_check_allocations_by_different_consumer_id.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_check_allocations_for_the_resource_provider.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_check_usages.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_check_usages_after_12.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_check_usages_after_another_10.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_get_allocations_is_empty_dict.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_get_those_allocations_for_consumer.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_get_those_allocations_for_resource_provider.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_post_some_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_set_inventory_on_rp1.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.allocations_set_inventory_on_rp2.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.basic-http_200_at_home.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.basic-http_complex_accept_resource_providers.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.basic-http_get_resource_provider_complex_accept_wild_match.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.confirm-auth_with_token_200.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_check_both_inventory_classes.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_check_one_inventory_class.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_confirm_inventory_change.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_get_empty_inventories.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_get_list_of_inventories.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_get_now_empty_inventories.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_get_that_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_list_both_those_inventories.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_modify_inventory_invalid_data.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_modify_inventory_invalid_generation.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_modify_inventory_no_such_resource_class_in_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_modify_the_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_post_an_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_post_new_disk_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_post_new_ipv4_address_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_put_all_inventory.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_put_all_inventory_bad_capacity.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.inventory_put_all_inventory_unknown_resource_class.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.microversion_latest_microversion_is_1.2.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.microversion_latest_microversion_is_1.3
nova.tests.functional.api.openstack.placement.test_placement_api.microversion_root_has_microversion_header.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.microversion_root_has_microversion_info.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-classes_confirm_the_correct_post.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-classes_get_resource_class_works_with_no_accept.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-classes_list_resource_classes_after_addition_of_custom_res_class.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-classes_update_custom_resource_class.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-classes_what_is_at_resource_classes.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_associate_an_aggregate_with_rp1
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_associate_an_aggregate_with_rp2
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_associate_another_aggregate_with_rp2
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_clear_aggregates_on_rp1
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_get_by_aggregates_no_result
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_get_by_aggregates_one_result
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_get_by_aggregates_one_result_no_in
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_get_by_aggregates_two_result
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_get_by_both_aggregates_one
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider-aggregates_get_by_both_aggregates_two
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_check_the_name_from_that_update.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_confirm_the_correct_post.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_filter_out_all_resource_providers_by_name.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_filter_out_all_resource_providers_by_uuid.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_get_resource_provider_works_with_no_accept.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_list_one_resource_provider_filtering_by_name.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_list_one_resource_provider_filtering_by_uuid.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_list_one_resource_providers.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_try_to_rename_that_provider_to_existing_name.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_update_a_provider_poorly.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_update_a_resource_provider.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.resource-provider_what_is_at_resource_providers.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.unicode_get_a_raw_snowman_unicode.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.unicode_get_that_resource_provider.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.unicode_query_by_name.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.usage_check_provider_exists.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.usage_get_empty_usages.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.with-allocations_confirm_inventories.test_request
nova.tests.functional.api.openstack.placement.test_placement_api.with-allocations_get_usages.test_request
nova.tests.functional.api.openstack.placement.test_report_client.SchedulerReportClientTests.test_client_report_smoke
nova.tests.functional.api_sample_tests.test_admin_actions.AdminActionsSamplesJsonTest.test_post_inject_network_info
nova.tests.functional.api_sample_tests.test_admin_actions.AdminActionsSamplesJsonTest.test_post_reset_network
nova.tests.functional.api_sample_tests.test_admin_actions.AdminActionsSamplesJsonTest.test_post_reset_state
@ -89,8 +23,6 @@ nova.tests.functional.api_sample_tests.test_attach_interfaces.AttachInterfacesSa
nova.tests.functional.api_sample_tests.test_attach_interfaces.AttachInterfacesSampleJsonTest.test_show_interfaces
nova.tests.functional.api_sample_tests.test_block_device_mapping_boot.BlockDeviceMappingV1BootJsonTest.test_servers_post_with_bdm
nova.tests.functional.api_sample_tests.test_block_device_mapping_boot.BlockDeviceMappingV2BootJsonTest.test_servers_post_with_bdm
nova.tests.functional.api_sample_tests.test_cloudpipe.CloudPipeSampleTest.test_cloud_pipe_create
nova.tests.functional.api_sample_tests.test_cloudpipe.CloudPipeSampleTest.test_cloud_pipe_list
nova.tests.functional.api_sample_tests.test_cloudpipe.CloudPipeSampleTest.test_cloud_pipe_update
nova.tests.functional.api_sample_tests.test_console_auth_tokens.ConsoleAuthTokensSampleJsonTests.test_get_console_connect_info
nova.tests.functional.api_sample_tests.test_console_output.ConsoleOutputSampleJsonTest.test_get_console_output
@ -154,9 +86,6 @@ nova.tests.functional.api_sample_tests.test_remote_consoles.ConsolesV28SampleJso
nova.tests.functional.api_sample_tests.test_rescue.RescueJsonTest.test_server_rescue
nova.tests.functional.api_sample_tests.test_rescue.RescueJsonTest.test_server_rescue_with_image_ref_specified
nova.tests.functional.api_sample_tests.test_rescue.RescueJsonTest.test_server_unrescue
nova.tests.functional.api_sample_tests.test_security_group_default_rules.SecurityGroupDefaultRulesSampleJsonTest.test_security_group_default_rules_create
nova.tests.functional.api_sample_tests.test_security_group_default_rules.SecurityGroupDefaultRulesSampleJsonTest.test_security_group_default_rules_list
nova.tests.functional.api_sample_tests.test_security_group_default_rules.SecurityGroupDefaultRulesSampleJsonTest.test_security_group_default_rules_show
nova.tests.functional.api_sample_tests.test_security_groups.SecurityGroupsJsonTest.test_security_groups_add
nova.tests.functional.api_sample_tests.test_security_groups.SecurityGroupsJsonTest.test_security_groups_list_server
nova.tests.functional.api_sample_tests.test_security_groups.SecurityGroupsJsonTest.test_security_groups_remove
@ -232,7 +161,9 @@ nova.tests.functional.api_sample_tests.test_shelve.ShelveJsonTest.test_unshelve
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageSampleJsonTest.test_get_tenant_usage_details
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageSampleJsonTest.test_get_tenants_usage
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageSampleJsonTest.test_get_tenants_usage_with_detail
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageV240Test
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageV240Test.test_get_tenant_usage_details
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageV240Test.test_get_tenants_usage
nova.tests.functional.api_sample_tests.test_simple_tenant_usage.SimpleTenantUsageV240Test.test_get_tenants_usage_with_detail
nova.tests.functional.api_sample_tests.test_suspend_server.SuspendServerSamplesJsonTest.test_post_resume
nova.tests.functional.api_sample_tests.test_suspend_server.SuspendServerSamplesJsonTest.test_post_suspend
nova.tests.functional.api_sample_tests.test_tenant_networks.TenantNetworksJsonTests.test_delete_network
@ -245,12 +176,7 @@ nova.tests.functional.api_sample_tests.test_volumes.VolumeAttachmentsSample.test
nova.tests.functional.api_sample_tests.test_volumes.VolumeAttachmentsSample.test_volume_attachment_detail
nova.tests.functional.api_sample_tests.test_volumes.VolumeAttachmentsSample.test_volume_attachment_update
nova.tests.functional.api_sample_tests.test_volumes.VolumesSampleJsonTest.test_volumes_delete
nova.tests.functional.db.api.test_migrations.TestNovaAPIMigrationsWalkMySQL
nova.tests.functional.db.api.test_migrations.TestNovaAPIMigrationsWalkPostgreSQL
nova.tests.functional.db.api.test_migrations.TestNovaAPIMigrationsWalkSQLite.test_walk_versions
nova.tests.functional.db.test_compute_node.ComputeNodeTestCase.test_recreate_rp
nova.tests.functional.db.test_instance_group.InstanceGroupObjectTestCase.test_add_members
nova.tests.functional.db.test_instance_group.InstanceGroupObjectTestCase.test_save
nova.tests.functional.db.test_instance_group.InstanceGroupObjectTestCase.test_add_members_main
nova.tests.functional.db.test_resource_provider.ResourceProviderTestCase.test_provider_modify_inventory
nova.tests.functional.db.test_resource_provider.ResourceProviderTestCase.test_save_resource_provider
nova.tests.functional.db.test_resource_provider.ResourceProviderTestCase.test_set_inventory_over_capacity
@ -260,8 +186,8 @@ nova.tests.functional.regressions.test_bug_1554631.TestCinderForbidden.test_forb
nova.tests.functional.regressions.test_bug_1554631.TestCinderOverLimit.test_over_limit_snapshots
nova.tests.functional.regressions.test_bug_1554631.TestCinderOverLimit.test_over_limit_snapshots_force
nova.tests.functional.regressions.test_bug_1554631.TestCinderOverLimit.test_over_limit_volumes
nova.tests.functional.test_server_group.ServerGroupTestV21.test_evacuate_with_anti_affinity
nova.tests.functional.test_server_group.ServerGroupTestV21.test_evacuate_with_affinity_no_valid_host
nova.tests.functional.test_server_group.ServerGroupTestV21.test_evacuate_with_anti_affinity
nova.tests.functional.test_server_group.ServerGroupTestV21.test_evacuate_with_anti_affinity_no_valid_host
nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_affinity_no_valid_host
nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_anti_affinity
@ -269,5 +195,4 @@ nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_a
nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_soft_affinity
nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_soft_anti_affinity
nova.tests.functional.test_servers.ServersTest.test_create_server_with_injected_files
nova.tests.functional.test_servers.ServersTestV21.test_create_multiple_servers
nova.tests.functional.test_servers.ServersTestV21.test_create_server_with_injected_files