[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:
parent
3ec43d81c3
commit
584969aff1
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
]
|
]
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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"""
|
||||||
|
@ -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],
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user