[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.""" """Aggregate handlers for Placement API."""
from oslo_serialization import jsonutils from oslo_serialization import jsonutils
from oslo_utils import encodeutils
import webob import webob
from nova.api.openstack.placement import microversion from nova.api.openstack.placement import microversion
@ -31,7 +32,8 @@ PUT_AGGREGATES_SCHEMA = {
def _send_aggregates(response, aggregate_uuids): def _send_aggregates(response, aggregate_uuids):
response.status = 200 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' response.content_type = 'application/json'
return response return response

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -162,8 +162,8 @@ class NovaAPIMigrationsWalk(test_migrations.WalkVersionsMixin):
return self.engine return self.engine
def _skippable_migrations(self): def _skippable_migrations(self):
mitaka_placeholders = range(8, 13) mitaka_placeholders = list(range(8, 13))
newton_placeholders = range(21, 26) newton_placeholders = list(range(21, 26))
special_cases = [ special_cases = [
30, # Enforcement migration, no changes to test 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_get_domain.assert_called_with(instance)
mock_dom.detachDeviceFlags.assert_called_with( mock_dom.detachDeviceFlags.assert_called_with(
b"""<disk type="file" device="disk"> """<disk type="file" device="disk">
<source file="/path/to/fake-volume"/> <source file="/path/to/fake-volume"/>
<target bus="virtio" dev="vdc"/> <target bus="virtio" dev="vdc"/>
</disk> </disk>
@ -17147,13 +17147,13 @@ class LibvirtDriverTestCase(test.NoDBTestCase):
</domain> </domain>
""" """
diska_xml = b"""<disk type="file" device="disk"> diska_xml = """<disk type="file" device="disk">
<source file="disk1_file"/> <source file="disk1_file"/>
<target bus="virtio" dev="vda"/> <target bus="virtio" dev="vda"/>
<serial>0e38683e-f0af-418f-a3f1-6b67ea0f919d</serial> <serial>0e38683e-f0af-418f-a3f1-6b67ea0f919d</serial>
</disk>""" </disk>"""
diskb_xml = b"""<disk type="block" device="disk"> diskb_xml = """<disk type="block" device="disk">
<source dev="/path/to/dev/1"/> <source dev="/path/to/dev/1"/>
<target bus="virtio" dev="vdb"/> <target bus="virtio" dev="vdb"/>
</disk>""" </disk>"""
@ -17650,14 +17650,14 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase):
domain.XMLDesc(flags=0).AndReturn(self.dom_xml) domain.XMLDesc(flags=0).AndReturn(self.dom_xml)
snap_xml_src = ( snap_xml_src = (
b'<domainsnapshot>\n' '<domainsnapshot>\n'
b' <disks>\n' ' <disks>\n'
b' <disk name="disk1_file" snapshot="external" type="file">\n' ' <disk name="disk1_file" snapshot="external" type="file">\n'
b' <source file="new-file"/>\n' ' <source file="new-file"/>\n'
b' </disk>\n' ' </disk>\n'
b' <disk name="vdb" snapshot="no"/>\n' ' <disk name="vdb" snapshot="no"/>\n'
b' </disks>\n' ' </disks>\n'
b'</domainsnapshot>\n') '</domainsnapshot>\n')
# Older versions of libvirt may be missing these. # Older versions of libvirt may be missing these.
fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32 fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32
@ -17720,14 +17720,14 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase):
domain.XMLDesc(flags=0).AndReturn(self.dom_xml) domain.XMLDesc(flags=0).AndReturn(self.dom_xml)
snap_xml_src = ( snap_xml_src = (
b'<domainsnapshot>\n' '<domainsnapshot>\n'
b' <disks>\n' ' <disks>\n'
b' <disk name="disk1_file" snapshot="external" type="file">\n' ' <disk name="disk1_file" snapshot="external" type="file">\n'
b' <source file="new-file"/>\n' ' <source file="new-file"/>\n'
b' </disk>\n' ' </disk>\n'
b' <disk name="vdb" snapshot="no"/>\n' ' <disk name="vdb" snapshot="no"/>\n'
b' </disks>\n' ' </disks>\n'
b'</domainsnapshot>\n') '</domainsnapshot>\n')
# Older versions of libvirt may be missing these. # Older versions of libvirt may be missing these.
fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32 fakelibvirt.VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = 32

View File

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

View File

@ -76,6 +76,8 @@ class LibvirtConfigObject(object):
def to_xml(self, pretty_print=True): def to_xml(self, pretty_print=True):
root = self.format_dom() root = self.format_dom()
xml_str = etree.tostring(root, pretty_print=pretty_print) 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 return xml_str

View File

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

View File

@ -641,7 +641,7 @@ class Host(object):
and self._caps.host.cpu.model is not None): and self._caps.host.cpu.model is not None):
try: try:
xml_str = self._caps.host.cpu.to_xml() 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') xml_str = xml_str.decode('utf-8')
features = self.get_connection().baselineCPU( features = self.get_connection().baselineCPU(
[xml_str], [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_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_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_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_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_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_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_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_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.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_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_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_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_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_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_network
nova.tests.functional.api_sample_tests.test_admin_actions.AdminActionsSamplesJsonTest.test_post_reset_state 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_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.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_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_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_auth_tokens.ConsoleAuthTokensSampleJsonTests.test_get_console_connect_info
nova.tests.functional.api_sample_tests.test_console_output.ConsoleOutputSampleJsonTest.test_get_console_output 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
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_rescue_with_image_ref_specified
nova.tests.functional.api_sample_tests.test_rescue.RescueJsonTest.test_server_unrescue 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_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_list_server
nova.tests.functional.api_sample_tests.test_security_groups.SecurityGroupsJsonTest.test_security_groups_remove 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_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
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.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_resume
nova.tests.functional.api_sample_tests.test_suspend_server.SuspendServerSamplesJsonTest.test_post_suspend 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 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_detail
nova.tests.functional.api_sample_tests.test_volumes.VolumeAttachmentsSample.test_volume_attachment_update 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.api_sample_tests.test_volumes.VolumesSampleJsonTest.test_volumes_delete
nova.tests.functional.db.api.test_migrations.TestNovaAPIMigrationsWalkMySQL nova.tests.functional.db.test_instance_group.InstanceGroupObjectTestCase.test_add_members_main
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_resource_provider.ResourceProviderTestCase.test_provider_modify_inventory 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_save_resource_provider
nova.tests.functional.db.test_resource_provider.ResourceProviderTestCase.test_set_inventory_over_capacity 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
nova.tests.functional.regressions.test_bug_1554631.TestCinderOverLimit.test_over_limit_snapshots_force 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.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_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.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_affinity_no_valid_host
nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_anti_affinity 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_affinity
nova.tests.functional.test_server_group.ServerGroupTestV215.test_evacuate_with_soft_anti_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.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 nova.tests.functional.test_servers.ServersTestV21.test_create_server_with_injected_files