diff --git a/nova/api/openstack/placement/handlers/aggregate.py b/nova/api/openstack/placement/handlers/aggregate.py index 51eea051bbd4..271159fe1e8d 100644 --- a/nova/api/openstack/placement/handlers/aggregate.py +++ b/nova/api/openstack/placement/handlers/aggregate.py @@ -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 diff --git a/nova/api/openstack/placement/handlers/allocation.py b/nova/api/openstack/placement/handlers/allocation.py index e67257aa98a4..545957c29e29 100644 --- a/nova/api/openstack/placement/handlers/allocation.py +++ b/nova/api/openstack/placement/handlers/allocation.py @@ -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 diff --git a/nova/api/openstack/placement/handlers/inventory.py b/nova/api/openstack/placement/handlers/inventory.py index 6fd02492346c..cf1fa1b7c20c 100644 --- a/nova/api/openstack/placement/handlers/inventory.py +++ b/nova/api/openstack/placement/handlers/inventory.py @@ -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 diff --git a/nova/api/openstack/placement/handlers/resource_class.py b/nova/api/openstack/placement/handlers/resource_class.py index cc77fef610a2..affdd0f31b98 100644 --- a/nova/api/openstack/placement/handlers/resource_class.py +++ b/nova/api/openstack/placement/handlers/resource_class.py @@ -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' diff --git a/nova/api/openstack/placement/handlers/resource_provider.py b/nova/api/openstack/placement/handlers/resource_provider.py index 703169dd89a6..8f0bee6f0c18 100644 --- a/nova/api/openstack/placement/handlers/resource_provider.py +++ b/nova/api/openstack/placement/handlers/resource_provider.py @@ -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 diff --git a/nova/api/openstack/placement/handlers/root.py b/nova/api/openstack/placement/handlers/root.py index 24238d176d87..6ec8b29d20b1 100644 --- a/nova/api/openstack/placement/handlers/root.py +++ b/nova/api/openstack/placement/handlers/root.py @@ -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 diff --git a/nova/api/openstack/placement/handlers/usage.py b/nova/api/openstack/placement/handlers/usage.py index 236e974e883a..c75d6274cc94 100644 --- a/nova/api/openstack/placement/handlers/usage.py +++ b/nova/api/openstack/placement/handlers/usage.py @@ -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 diff --git a/nova/tests/functional/db/api/test_migrations.py b/nova/tests/functional/db/api/test_migrations.py index 3a9171528583..b66e2623dcac 100644 --- a/nova/tests/functional/db/api/test_migrations.py +++ b/nova/tests/functional/db/api/test_migrations.py @@ -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 ] diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index a010b2dcb582..169bf438bb66 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -6307,7 +6307,7 @@ class LibvirtConnTestCase(test.NoDBTestCase): mock_get_domain.assert_called_with(instance) mock_dom.detachDeviceFlags.assert_called_with( - b""" + """ @@ -17147,13 +17147,13 @@ class LibvirtDriverTestCase(test.NoDBTestCase): """ - diska_xml = b""" + diska_xml = """ 0e38683e-f0af-418f-a3f1-6b67ea0f919d """ - diskb_xml = b""" + diskb_xml = """ """ @@ -17650,14 +17650,14 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase): domain.XMLDesc(flags=0).AndReturn(self.dom_xml) snap_xml_src = ( - b'\n' - b' \n' - b' \n' - b' \n' - b' \n' - b' \n' - b' \n' - b'\n') + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + '\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'\n' - b' \n' - b' \n' - b' \n' - b' \n' - b' \n' - b' \n' - b'\n') + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + '\n') # Older versions of libvirt may be missing these. fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32 diff --git a/nova/tests/unit/virt/libvirt/test_fakelibvirt.py b/nova/tests/unit/virt/libvirt/test_fakelibvirt.py index cee242c4c926..33f53f2ff198 100644 --- a/nova/tests/unit/virt/libvirt/test_fakelibvirt.py +++ b/nova/tests/unit/virt/libvirt/test_fakelibvirt.py @@ -367,7 +367,7 @@ class FakeLibvirtTests(test.NoDBTestCase): libvirt.VIR_CPU_COMPARE_IDENTICAL) def test_numa_topology_generation(self): - topology = b""" + topology = """ 7870000 diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py index f8c37f20a302..fb3e1136a9a7 100644 --- a/nova/virt/libvirt/config.py +++ b/nova/virt/libvirt/config.py @@ -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 diff --git a/nova/virt/libvirt/guest.py b/nova/virt/libvirt/guest.py index 77761620c165..11c6af0e0421 100644 --- a/nova/virt/libvirt/guest.py +++ b/nova/virt/libvirt/guest.py @@ -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""" diff --git a/nova/virt/libvirt/host.py b/nova/virt/libvirt/host.py index 85cc6dfc3b1a..2aacfa3f1545 100644 --- a/nova/virt/libvirt/host.py +++ b/nova/virt/libvirt/host.py @@ -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], diff --git a/tests-functional-py3.txt b/tests-functional-py3.txt index 69ad83911d86..71e187c1840c 100644 --- a/tests-functional-py3.txt +++ b/tests-functional-py3.txt @@ -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