Merge "functional: Add and use 'GlanceFixture'"

This commit is contained in:
Zuul 2020-09-16 17:10:21 +00:00 committed by Gerrit Code Review
commit b262e23734
70 changed files with 568 additions and 360 deletions

View File

@ -15,9 +15,11 @@
# under the License.
"""Fixtures for Nova tests."""
import collections
from contextlib import contextmanager
import copy
import datetime
import logging as std_logging
import os
import random
@ -56,6 +58,7 @@ from nova.network import constants as neutron_constants
from nova.network import model as network_model
from nova import objects
from nova.objects import base as obj_base
from nova.objects import fields as obj_fields
from nova.objects import service as service_obj
import nova.privsep
from nova import quota as nova_quota
@ -2046,6 +2049,318 @@ class EventReporterStub(fixtures.Fixture):
lambda *args, **kwargs: mock.MagicMock()))
class GlanceFixture(fixtures.Fixture):
"""A fixture for simulating Glance."""
# NOTE(justinsb): The OpenStack API can't upload an image?
# So, make sure we've got one..
timestamp = datetime.datetime(2011, 1, 1, 1, 2, 3)
image1 = {
'id': '155d900f-4e14-4e4c-a73d-069cbf4541e6',
'name': 'fakeimage123456',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': False,
'container_format': 'raw',
'disk_format': 'raw',
'size': '25165824',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': ['tag1', 'tag2'],
'properties': {
'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
'architecture': obj_fields.Architecture.X86_64,
},
}
image2 = {
'id': 'a2459075-d96c-40d5-893e-577ff92e721c',
'name': 'fakeimage123456',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': True,
'container_format': 'ami',
'disk_format': 'ami',
'size': '58145823',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': [],
'properties': {
'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
},
}
image3 = {
'id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6',
'name': 'fakeimage123456',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': True,
'container_format': 'bare',
'disk_format': 'raw',
'size': '83594576',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': ['tag3', 'tag4'],
'properties': {
'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
'architecture': obj_fields.Architecture.X86_64,
},
}
image4 = {
'id': 'cedef40a-ed67-4d10-800e-17455edce175',
'name': 'fakeimage123456',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': True,
'container_format': 'ami',
'disk_format': 'ami',
'size': '84035174',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': [],
'properties': {
'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
},
}
image5 = {
'id': 'c905cedb-7281-47e4-8a62-f26bc5fc4c77',
'name': 'fakeimage123456',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': True,
'container_format': 'ami',
'disk_format': 'ami',
'size': '26360814',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': [],
'properties': {
'kernel_id': '155d900f-4e14-4e4c-a73d-069cbf4541e6',
'ramdisk_id': None,
},
}
auto_disk_config_disabled_image = {
'id': 'a440c04b-79fa-479c-bed1-0b816eaec379',
'name': 'fakeimage6',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': False,
'container_format': 'ova',
'disk_format': 'vhd',
'size': '49163826',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': [],
'properties': {
'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
'architecture': obj_fields.Architecture.X86_64,
'auto_disk_config': 'False',
},
}
auto_disk_config_enabled_image = {
'id': '70a599e0-31e7-49b7-b260-868f441e862b',
'name': 'fakeimage7',
'created_at': timestamp,
'updated_at': timestamp,
'deleted_at': None,
'deleted': False,
'status': 'active',
'is_public': False,
'container_format': 'ova',
'disk_format': 'vhd',
'size': '74185822',
'min_ram': 0,
'min_disk': 0,
'protected': False,
'visibility': 'public',
'tags': [],
'properties': {
'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
'architecture': obj_fields.Architecture.X86_64,
'auto_disk_config': 'True',
},
}
def __init__(self, test):
super().__init__()
self.test = test
self.images = {}
def setUp(self):
super().setUp()
self.test.useFixture(
ConfPatcher(group='glance', api_servers=['http://localhost:9292'])
)
self.test.stub_out(
'nova.image.glance.API.get_remote_image_service',
lambda context, image_href: (self, image_href))
self.test.stub_out(
'nova.image.glance.get_default_image_service',
lambda: self)
self.create(None, self.image1)
self.create(None, self.image2)
self.create(None, self.image3)
self.create(None, self.image4)
self.create(None, self.image5)
self.create(None, self.auto_disk_config_disabled_image)
self.create(None, self.auto_disk_config_enabled_image)
self._imagedata = {}
# TODO(bcwaldon): implement optional kwargs such as limit, sort_dir
def detail(self, context, **kwargs):
"""Return list of detailed image information."""
return copy.deepcopy(list(self.images.values()))
def download(
self, context, image_id, data=None, dst_path=None, trusted_certs=None,
):
self.show(context, image_id)
if data:
data.write(self._imagedata.get(image_id, b''))
elif dst_path:
with open(dst_path, 'wb') as data:
data.write(self._imagedata.get(image_id, b''))
def show(
self, context, image_id, include_locations=False, show_deleted=True,
):
"""Get data about specified image.
Returns a dict containing image data for the given opaque image id.
"""
image = self.images.get(str(image_id))
if image:
return copy.deepcopy(image)
LOG.warning(
'Unable to find image id %s. Have images: %s',
image_id, self.images)
raise exception.ImageNotFound(image_id=image_id)
def create(self, context, metadata, data=None):
"""Store the image data and return the new image id.
:raises: Duplicate if the image already exist.
"""
image_id = str(metadata.get('id', uuidutils.generate_uuid()))
metadata['id'] = image_id
if image_id in self.images:
raise exception.CouldNotUploadImage(image_id=image_id)
image_meta = copy.deepcopy(metadata)
# Glance sets the size value when an image is created, so we
# need to do that here to fake things out if it's not provided
# by the caller. This is needed to avoid a KeyError in the
# image-size API.
if 'size' not in image_meta:
image_meta['size'] = None
# Similarly, Glance provides the status on the image once it's created
# and this is checked in the compute API when booting a server from
# this image, so we just fake it out to be 'active' even though this
# is mostly a lie on a newly created image.
if 'status' not in metadata:
image_meta['status'] = 'active'
# The owner of the image is by default the request context project_id.
if context and 'owner' not in image_meta.get('properties', {}):
# Note that normally "owner" is a top-level field in an image
# resource in glance but we have to fake this out for the images
# proxy API by throwing it into the generic "properties" dict.
image_meta.get('properties', {})['owner'] = context.project_id
self.images[image_id] = image_meta
if data:
self._imagedata[image_id] = data.read()
return self.images[image_id]
def update(self, context, image_id, metadata, data=None,
purge_props=False):
"""Replace the contents of the given image with the new data.
:raises: ImageNotFound if the image does not exist.
"""
if not self.images.get(image_id):
raise exception.ImageNotFound(image_id=image_id)
if purge_props:
self.images[image_id] = copy.deepcopy(metadata)
else:
image = self.images[image_id]
try:
image['properties'].update(metadata.pop('properties'))
except KeyError:
pass
image.update(metadata)
return self.images[image_id]
def delete(self, context, image_id):
"""Delete the given image.
:raises: ImageNotFound if the image does not exist.
"""
removed = self.images.pop(image_id, None)
if not removed:
raise exception.ImageNotFound(image_id=image_id)
def get_location(self, context, image_id):
if image_id in self.images:
return 'fake_location'
return None
class CinderFixture(fixtures.Fixture):
"""A fixture to volume operations with the new Cinder attach/detach API"""

View File

@ -16,7 +16,6 @@
from oslo_serialization import jsonutils
from nova.tests.functional.api_sample_tests import api_sample_base
from nova.tests.unit.image import fake as fake_image
class AggregatesSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
@ -132,7 +131,7 @@ class AggregatesV2_81_SampleJsonTest(AggregatesV2_41_SampleJsonTest):
def test_images(self):
agg_id = self._test_aggregate_create()
image = fake_image.get_valid_image_id()
image = self.glance.auto_disk_config_enabled_image['id']
response = self._do_post('os-aggregates/%s/images' % agg_id,
'aggregate-images-post-req',
{'image_id': image})

View File

@ -15,8 +15,8 @@
import mock
from nova.tests import fixtures
from nova.tests.functional.api_sample_tests import test_servers
from nova.tests.unit.image import fake
class CreateBackupSamplesJsonTest(test_servers.ServersSampleBase):
@ -30,7 +30,7 @@ class CreateBackupSamplesJsonTest(test_servers.ServersSampleBase):
super(CreateBackupSamplesJsonTest, self).setUp()
self.uuid = self._post_server()
@mock.patch.object(fake._FakeImageService, 'detail', return_value=[])
@mock.patch.object(fixtures.GlanceFixture, 'detail', return_value=[])
def test_post_backup_server(self, mock_method):
# Get api samples to backup server request.
response = self._do_post('servers/%s/action' % self.uuid,

View File

@ -14,7 +14,6 @@
# under the License.
from nova.tests.functional.api_sample_tests import api_sample_base
from nova.tests.unit.image import fake
class ImagesSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
@ -27,7 +26,7 @@ class ImagesSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
def test_image_get(self):
# Get api sample of one single image details request.
image_id = fake.get_valid_image_id()
image_id = self.glance.auto_disk_config_enabled_image['id']
response = self._do_get('images/%s' % image_id)
subs = {'image_id': image_id}
self._verify_response('image-get-resp', subs, response, 200)
@ -39,14 +38,14 @@ class ImagesSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
def test_image_metadata_get(self):
# Get api sample of an image metadata request.
image_id = fake.get_valid_image_id()
image_id = self.glance.auto_disk_config_enabled_image['id']
response = self._do_get('images/%s/metadata' % image_id)
subs = {'image_id': image_id}
self._verify_response('image-metadata-get-resp', subs, response, 200)
def test_image_metadata_post(self):
# Get api sample to update metadata of an image metadata request.
image_id = fake.get_valid_image_id()
image_id = self.glance.auto_disk_config_enabled_image['id']
response = self._do_post(
'images/%s/metadata' % image_id,
'image-metadata-post-req', {})
@ -54,21 +53,21 @@ class ImagesSampleJsonTest(api_sample_base.ApiSampleTestBaseV21):
def test_image_metadata_put(self):
# Get api sample of image metadata put request.
image_id = fake.get_valid_image_id()
image_id = self.glance.auto_disk_config_enabled_image['id']
response = self._do_put('images/%s/metadata' %
(image_id), 'image-metadata-put-req', {})
self._verify_response('image-metadata-put-resp', {}, response, 200)
def test_image_meta_key_get(self):
# Get api sample of an image metadata key request.
image_id = fake.get_valid_image_id()
image_id = self.glance.auto_disk_config_enabled_image['id']
key = "kernel_id"
response = self._do_get('images/%s/metadata/%s' % (image_id, key))
self._verify_response('image-meta-key-get', {}, response, 200)
def test_image_meta_key_put(self):
# Get api sample of image metadata key put request.
image_id = fake.get_valid_image_id()
image_id = self.glance.auto_disk_config_enabled_image['id']
key = "auto_disk_config"
response = self._do_put('images/%s/metadata/%s' % (image_id, key),
'image-meta-key-put-req', {})

View File

@ -14,7 +14,6 @@
# under the License.
from nova.tests.functional.api_sample_tests import test_servers
from nova.tests.unit.image import fake
class MultipleCreateJsonTest(test_servers.ServersSampleBase):
@ -22,7 +21,7 @@ class MultipleCreateJsonTest(test_servers.ServersSampleBase):
def test_multiple_create(self):
subs = {
'image_id': fake.get_valid_image_id(),
'image_id': self.glance.auto_disk_config_enabled_image['id'],
'compute_endpoint': self._get_compute_endpoint(),
'min_count': "2",
'max_count': "3"
@ -32,7 +31,7 @@ class MultipleCreateJsonTest(test_servers.ServersSampleBase):
def test_multiple_create_without_reservation_id(self):
subs = {
'image_id': fake.get_valid_image_id(),
'image_id': self.glance.auto_disk_config_enabled_image['id'],
'compute_endpoint': self._get_compute_endpoint(),
'min_count': "2",
'max_count': "3"

View File

@ -14,7 +14,6 @@
from nova.compute import api as compute_api
from nova.tests.functional.api_sample_tests import test_servers
from nova.tests.unit.image import fake
class PreserveEphemeralOnRebuildJsonTest(test_servers.ServersSampleBase):
@ -22,9 +21,8 @@ class PreserveEphemeralOnRebuildJsonTest(test_servers.ServersSampleBase):
def _test_server_rebuild_preserve_ephemeral(self, value, resp_tpl=None):
uuid = self._post_server()
image = fake.get_valid_image_id()
subs = {'host': self._get_host(),
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'pass': 'seekr3t',
'hostid': '[a-f0-9]+',

View File

@ -25,7 +25,6 @@ import nova.conf
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api_sample_tests import api_sample_base
from nova.tests.unit.api.openstack import fakes
from nova.tests.unit.image import fake
CONF = nova.conf.CONF
@ -61,7 +60,7 @@ class ServersSampleBase(api_sample_base.ApiSampleTestBaseV21):
# common server sample files from 'servers' directory.
# Set False if tests need to use extension specific sample files
subs = {
'image_id': fake.get_valid_image_id(),
'image_id': self.glance.auto_disk_config_enabled_image['id'],
'host': self._get_host(),
'compute_endpoint': self._get_compute_endpoint(),
'versioned_compute_endpoint': self._get_vers_compute_endpoint(),
@ -192,7 +191,7 @@ class ServersSampleJson219Test(ServersSampleJsonTest):
uuid = self.test_servers_post()
response = self._do_put('servers/%s' % uuid, 'server-put-req', {})
subs = {
'image_id': fake.get_valid_image_id(),
'image_id': self.glance.auto_disk_config_enabled_image['id'],
'hostid': '[a-f0-9]+',
'glance_host': self._get_glance_host(),
'access_ip_v4': '1.2.3.4',
@ -235,9 +234,8 @@ class ServersSampleJson247Test(ServersSampleJsonTest):
def test_server_rebuild(self):
uuid = self._post_server()
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'pass': 'seekr3t',
'hostid': '[a-f0-9]+',
@ -284,10 +282,8 @@ class ServersSampleJson263Test(ServersSampleBase):
def test_server_rebuild(self):
uuid = self._post_server(use_common_server_api_samples=False)
fakes.stub_out_key_pair_funcs(self)
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'key_name': 'new-key',
'description': 'description of foobar',
@ -484,9 +480,8 @@ class ServersSampleJson271Test(ServersSampleBase):
def test_servers_rebuild_with_server_groups(self):
uuid = self._test_servers_post()
fakes.stub_out_key_pair_funcs(self)
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'key_name': 'new-key',
'description': 'description of foobar',
@ -558,9 +553,8 @@ class ServersSampleJson273Test(ServersSampleBase):
def test_server_rebuild_with_empty_locked_reason(self):
uuid = self._post_server(use_common_server_api_samples=False)
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'pass': 'seekr3t',
'hostid': '[a-f0-9]+',
@ -647,9 +641,8 @@ class ServersSampleJson275Test(ServersUpdateSampleJsonTest):
def test_server_rebuild(self):
uuid = self._post_server()
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'pass': 'seekr3t',
'hostid': '[a-f0-9]+',
@ -711,9 +704,8 @@ class ServersActionsJsonTest(ServersSampleBase, _ServersActionsJsonTestMixin):
def test_server_rebuild(self):
uuid = self._post_server()
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'pass': 'seekr3t',
'hostid': '[a-f0-9]+',
@ -828,9 +820,8 @@ class ServersActionsJson219Test(ServersSampleBase):
def test_server_rebuild(self):
uuid = self._post_server()
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'description': 'description of foobar',
'pass': 'seekr3t',
@ -855,9 +846,8 @@ class ServersActionsJson226Test(ServersSampleBase):
def test_server_rebuild(self):
uuid = self._post_server()
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'access_ip_v4': '1.2.3.4',
'access_ip_v6': '80fe::',
'disk_config': 'AUTO',
@ -895,9 +885,8 @@ class ServersActionsJson254Test(ServersSampleBase):
def test_server_rebuild(self):
fakes.stub_out_key_pair_funcs(self)
uuid = self._create_server()
image = fake.get_valid_image_id()
params = {
'uuid': image,
'uuid': self.glance.auto_disk_config_enabled_image['id'],
'name': 'foobar',
'key_name': 'new-key',
'description': 'description of foobar',

View File

@ -33,7 +33,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
from nova.tests.unit.image import fake as fake_image
from nova.virt import driver as virt_driver
@ -697,10 +696,9 @@ class TestProviderConfig(integrated_helpers.ProviderUsageBaseTestCase):
compute service that provides that trait.
"""
self.neutron = nova_fixtures.NeutronFixture(self)
self.useFixture(self.neutron)
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
# Start nova services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api

View File

@ -42,7 +42,6 @@ from nova.tests.functional.api import client as api_client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.unit import cast_as_call
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova import utils
@ -1050,15 +1049,12 @@ class _IntegratedTestBase(test.TestCase, PlacementInstanceHelperMixin):
def setUp(self):
super(_IntegratedTestBase, self).setUp()
self.fake_image_service =\
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.useFixture(cast_as_call.CastAsCall(self))
self.placement = self.useFixture(func_fixtures.PlacementFixture()).api
self.neutron = self.useFixture(nova_fixtures.NeutronFixture(self))
self.cinder = self.useFixture(nova_fixtures.CinderFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.policy = self.useFixture(policy_fixture.RealPolicyFixture())
fake_notifier.stub_notifier(self)
@ -1128,6 +1124,7 @@ class ProviderUsageBaseTestCase(test.TestCase, PlacementInstanceHelperMixin):
self.policy = self.useFixture(policy_fixture.RealPolicyFixture())
self.neutron = self.useFixture(nova_fixtures.NeutronFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.placement = self.useFixture(func_fixtures.PlacementFixture()).api
self.useFixture(nova_fixtures.AllServicesCurrent())
@ -1141,11 +1138,5 @@ class ProviderUsageBaseTestCase(test.TestCase, PlacementInstanceHelperMixin):
self.admin_api.microversion = self.microversion
self.api = self.admin_api
# the image fake backend needed for image discovery
self.image_service = (
nova.tests.unit.image.fake.stub_out_image_service(self))
self.start_service('conductor')
self.scheduler_service = self.start_service('scheduler')
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)

View File

@ -31,7 +31,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake as fake_image
from nova.tests.unit.virt.libvirt import fakelibvirt
from nova.virt.libvirt import config as libvirt_config
@ -50,10 +49,8 @@ FLAVOR_FIXTURES = [
'root_gb': 1, 'ephemeral_gb': 0, 'swap': 1},
]
# Choice of image id is arbitrary, but fixed for consistency.
IMAGE_ID = fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
IMAGE_ID = nova_fixtures.GlanceFixture.auto_disk_config_enabled_image['id']
# NOTE(mdbooth): Change I76448196 tests for creation of any local disk, and
# short-circuits as soon as it sees one created. Disks are created in order:
@ -423,6 +420,7 @@ class _LibvirtEvacuateTest(integrated_helpers.InstanceHelperMixin):
self.useFixture(nova_fixtures.CinderFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_network.set_stub_network_methods(self)
@ -433,9 +431,6 @@ class _LibvirtEvacuateTest(integrated_helpers.InstanceHelperMixin):
# force_down and evacuate without onSharedStorage
self.api.microversion = '2.14'
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
fake_notifier.stub_notifier(self)
self.addCleanup(fake_notifier.reset)

View File

@ -1251,7 +1251,7 @@ class NUMAServersRebuildTests(NUMAServersTestBase):
# 2 virtual numa nodes.
ctx = nova_context.get_admin_context()
image_meta = {'properties': {'hw_numa_nodes': 2}}
self.fake_image_service.update(ctx, self.image_ref_1, image_meta)
self.glance.update(ctx, self.image_ref_1, image_meta)
# NOTE(sean-k-mooney): this should fail because rebuild uses noop
# claims therefore it is not allowed for the NUMA topology or resource

View File

@ -19,7 +19,7 @@ import unittest
from nova.compute import instance_actions
from nova import conf
from nova.tests.functional.libvirt import integrated_helpers
import nova.tests.unit.image.fake
from nova import utils
CONF = conf.CONF
@ -126,10 +126,9 @@ class SharedStorageProviderUsageTestCase(
networks='none'
)
rebuild_image_ref = (
nova.tests.unit.image.fake.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID)
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
with nova.utils.temporary_mutation(self.api, microversion='2.35'):
with utils.temporary_mutation(self.api, microversion='2.35'):
self.api.api_put('/images/%s/metadata' % rebuild_image_ref,
{'metadata': {
'trait:STORAGE_DISK_SSD': 'required'}})
@ -185,10 +184,9 @@ class SharedStorageProviderUsageTestCase(
networks='none',
)
rebuild_image_ref = (
nova.tests.unit.image.fake.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID)
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
with nova.utils.temporary_mutation(self.api, microversion='2.35'):
with utils.temporary_mutation(self.api, microversion='2.35'):
self.api.api_put('/images/%s/metadata' % rebuild_image_ref,
{'metadata': {
'trait:CUSTOM_FOO': 'required'}})

View File

@ -28,7 +28,6 @@ from nova.tests import json_ref
from nova.tests.unit.api.openstack.compute import test_services
from nova.tests.unit import fake_crypto
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
CONF = cfg.CONF
@ -80,10 +79,7 @@ class NotificationSampleTestBase(test.TestCase,
self.addCleanup(fake_notifier.reset)
self.useFixture(utils_fixture.TimeFixture(test_services.fake_utcnow()))
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
context_patcher = self.mock_gen_request_id = mock.patch(

View File

@ -12,13 +12,10 @@
# License for the specific language governing permissions and limitations
# under the License.
import nova.scheduler.utils
import nova.servicegroup
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.unit import cast_as_call
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -29,20 +26,17 @@ class TestServerGet(test.TestCase):
super(TestServerGet, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.start_service('conductor')
self.start_service('scheduler')
self.compute = self.start_service('compute')
self.useFixture(cast_as_call.CastAsCall(self))
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.image_id = self.api.get_images()[0]['id']
self.flavor_id = self.api.get_flavors()[0]['id']

View File

@ -12,12 +12,9 @@
# License for the specific language governing permissions and limitations
# under the License.
import nova.scheduler.utils
import nova.servicegroup
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -28,14 +25,12 @@ class TestServerValidation(test.TestCase):
def setUp(self):
super(TestServerValidation, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.api = api_fixture.api
self.image_id = self.api.get_images()[0]['id']
self.flavor_id = self.api.get_flavors()[0]['id']

View File

@ -14,13 +14,10 @@
import time
import nova.scheduler.utils
import nova.servicegroup
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.unit import cast_as_call
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -31,27 +28,23 @@ class TestServerGet(test.TestCase):
super(TestServerGet, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(cast_as_call.CastAsCall(self))
# The non-admin API client is fine to stay at 2.1 since it just creates
# and deletes the server.
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
self.admin_api = api_fixture.admin_api
# The admin API client needs to be at microversion 2.16 to exhibit the
# regression.
self.admin_api.microversion = '2.16'
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.start_service('conductor')
self.start_service('scheduler')
self.compute = self.start_service('compute')
self.useFixture(cast_as_call.CastAsCall(self))
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.image_id = self.api.get_images()[0]['id']
self.flavor_id = self.api.get_flavors()[0]['id']

View File

@ -17,7 +17,6 @@ import datetime
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client as api_client
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -27,15 +26,12 @@ class TestServerGet(test.TestCase):
super(TestServerGet, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
# the image fake backend needed for image discovery
image_service = fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
# NOTE(mriedem): This image has an invalid architecture metadata value
# and is used for negative testing in the functional stack.
timestamp = datetime.datetime(2011, 1, 1, 1, 2, 3)
@ -53,7 +49,7 @@ class TestServerGet(test.TestCase):
'properties': {'kernel_id': 'nokernel',
'ramdisk_id': 'nokernel',
'architecture': 'x64'}}
self.image_id = image_service.create(None, image)['id']
self.image_id = self.glance.create(None, image)['id']
self.flavor_id = self.api.get_flavors()[0]['id']
def test_boot_server_with_invalid_image_meta(self):

View File

@ -18,7 +18,6 @@ import fixtures
import io
import mock
import nova
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
@ -35,6 +34,7 @@ class TestSerialConsoleLiveMigrate(test.TestCase):
super(TestSerialConsoleLiveMigrate, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
@ -53,10 +53,6 @@ class TestSerialConsoleLiveMigrate(test.TestCase):
self.admin_api = api_fixture.admin_api
self.api = api_fixture.api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
nova.tests.unit.fake_network.set_stub_network_methods(self)
self.flags(compute_driver='libvirt.LibvirtDriver')
self.flags(enabled=True, group="serial_console")
self.flags(enabled=False, group="vnc")
@ -68,7 +64,6 @@ class TestSerialConsoleLiveMigrate(test.TestCase):
self.compute = self.start_service('compute', host='test_compute1')
self.useFixture(cast_as_call.CastAsCall(self))
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.image_id = self.api.get_images()[0]['id']
self.flavor_id = self.api.get_flavors()[0]['id']

View File

@ -13,7 +13,6 @@
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.unit import cast_as_call
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -24,6 +23,7 @@ class TestServerUpdate(test.TestCase):
super(TestServerUpdate, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
# Simulate requests coming in before the instance is scheduled by
# using a no-op for conductor build_instances
self.useFixture(nova_fixtures.NoopConductorFixture())
@ -32,11 +32,7 @@ class TestServerUpdate(test.TestCase):
self.api = api_fixture.api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.useFixture(cast_as_call.CastAsCall(self))
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.image_id = self.api.get_images()[0]['id']
self.flavor_id = self.api.get_flavors()[0]['id']

View File

@ -18,7 +18,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.unit import cast_as_call
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -50,13 +49,12 @@ class TestDeleteFromCell0CheckQuota(test.TestCase):
super(TestDeleteFromCell0CheckQuota, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -14,14 +14,13 @@
import time
import nova.compute.resource_tracker
from nova.compute import resource_tracker
from nova import exception
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.unit import cast_as_call
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -59,7 +58,7 @@ class TestRetryBetweenComputeNodeBuilds(test.TestCase):
self.admin_api = api_fixture.admin_api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')
@ -86,8 +85,7 @@ class TestRetryBetweenComputeNodeBuilds(test.TestCase):
# https://opendev.org/openstack/nova/src/commit/
# bb02d1110a9529217a5e9b1e1fe8ca25873cac59/
# nova/compute/resource_tracker.py#L121-L130
real_instance_claim =\
nova.compute.resource_tracker.ResourceTracker.instance_claim
real_instance_claim = resource_tracker.ResourceTracker.instance_claim
def fake_instance_claim(_self, *args, **kwargs):
self.attempts += 1

View File

@ -21,7 +21,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.unit import cast_as_call
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
LOG = logging.getLogger(__name__)
@ -60,7 +59,7 @@ class TestLocalDeleteAttachedVolumes(test.TestCase):
self.api.microversion = 'latest'
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')
self.start_service('scheduler')
@ -128,7 +127,7 @@ class TestLocalDeleteAttachedVolumes(test.TestCase):
LOG.info('Creating server and waiting for it to be ACTIVE.')
server = dict(
name='local-delete-volume-attach-test',
# The image ID comes from nova.tests.unit.image.fake.
# The image ID comes from GlanceFixture
imageRef='76fa36fc-c930-4bf3-8c8a-ea2a2420deb6',
flavorRef=self.flavor_id,
# Bypass network setup on the compute.

View File

@ -19,7 +19,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -30,14 +29,13 @@ class TestLocalDeleteAllocations(test.TestCase,
self.useFixture(policy_fixture.RealPolicyFixture())
# The NeutronFixture is needed to show security groups for a server.
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
self.admin_api = api_fixture.admin_api
# We need the latest microversion to force-down the compute service
self.admin_api.microversion = 'latest'
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.start_service('conductor')

View File

@ -16,7 +16,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -41,8 +40,7 @@ class ServerTagsFilteringTest(test.TestCase,
self.api = api_fixture.api
# the image fake backend needed for image discovery
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
# Use the latest microversion available to make sure something does
# not regress in new microversions; cap as necessary.

View File

@ -16,7 +16,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import cast_as_call
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -42,8 +41,7 @@ class ServerListLimitMarkerCell0Test(test.TestCase,
self.api = api_fixture.api
# the image fake backend needed for image discovery
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
# Use the latest microversion available to make sure something does
# not regress in new microversions; cap as necessary.

View File

@ -15,7 +15,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import cast_as_call
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -59,8 +58,7 @@ class SchedulerOnlyChecksTargetTest(test.TestCase,
self.api = api_fixture.api
# the image fake backend needed for image discovery
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')

View File

@ -22,7 +22,6 @@ from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -47,6 +46,7 @@ class FailedEvacuateStateTests(test.TestCase,
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -55,13 +55,9 @@ class FailedEvacuateStateTests(test.TestCase,
self.api = api_fixture.admin_api
self.api.microversion = self.microversion
nova.tests.unit.image.fake.stub_out_image_service(self)
self.start_service('conductor')
self.start_service('scheduler')
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.hostname = 'host1'
self.compute1 = self.start_service('compute', host=self.hostname)
fake_network.set_stub_network_methods(self)

View File

@ -17,7 +17,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -46,6 +45,7 @@ class TestLiveMigrateOneOfConcurrentlyCreatedInstances(
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -54,9 +54,6 @@ class TestLiveMigrateOneOfConcurrentlyCreatedInstances(
self.api = api_fixture.admin_api
self.api.microversion = self.microversion
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -17,7 +17,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -52,8 +51,7 @@ class TestRequestSpecRetryReschedule(test.TestCase,
self.api = api_fixture.api
# the image fake backend needed for image discovery
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')

View File

@ -16,7 +16,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -56,8 +55,7 @@ class TestRescheduleWithServerGroup(test.TestCase,
self.admin_api = api_fixture.admin_api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -10,13 +10,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from nova.compute import manager
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -52,8 +52,7 @@ class TestParallelEvacuationWithServerGroup(
self.addCleanup(fake_notifier.reset)
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')
self.start_service('scheduler')
@ -66,7 +65,7 @@ class TestParallelEvacuationWithServerGroup(
self.image_id = self.api.get_images()[0]['id']
self.flavor_id = self.api.get_flavors()[0]['id']
manager_class = nova.compute.manager.ComputeManager
manager_class = manager.ComputeManager
original_rebuild = manager_class._do_rebuild_instance
def fake_rebuild(self_, context, instance, *args, **kwargs):

View File

@ -14,7 +14,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -47,6 +46,7 @@ class TestResizeWithNoAllocationScheduler(
super(TestResizeWithNoAllocationScheduler, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
@ -56,9 +56,6 @@ class TestResizeWithNoAllocationScheduler(
self.api = api_fixture.admin_api
self.api.microversion = self.microversion
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.start_service('conductor')
# Create two compute nodes/services.

View File

@ -15,7 +15,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fakes
from nova.tests.unit import policy_fixture
from nova import utils
@ -39,6 +38,7 @@ class TestBootFromVolumeIsolatedHostsFilter(
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.CinderFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
@ -47,9 +47,6 @@ class TestBootFromVolumeIsolatedHostsFilter(
self.api = api_fixture.admin_api
image_fakes.stub_out_image_service(self)
self.addCleanup(image_fakes.FakeImageService_reset)
self.start_service('conductor')
# Add the IsolatedHostsFilter to the list of enabled filters since it
@ -58,7 +55,7 @@ class TestBootFromVolumeIsolatedHostsFilter(
enabled_filters.append('IsolatedHostsFilter')
self.flags(
enabled_filters=enabled_filters,
isolated_images=[image_fakes.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID],
isolated_images=[self.glance.auto_disk_config_enabled_image['id']],
isolated_hosts=['host1'],
restrict_isolated_hosts_to_isolated_images=True,
group='filter_scheduler')

View File

@ -16,7 +16,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
from nova import utils
@ -49,8 +48,7 @@ class InstanceListWithDeletedServicesTestCase(
self.admin_api.microversion = 'latest'
# the image fake backend needed for image discovery
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.api.microversion = 'latest'

View File

@ -10,14 +10,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from nova.compute import manager
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -53,8 +52,7 @@ class TestEvacuationWithSourceReturningDuringRebuild(
self.api.microversion = '2.14'
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')
self.start_service('scheduler')
@ -71,7 +69,7 @@ class TestEvacuationWithSourceReturningDuringRebuild(
# Stub out rebuild with a slower method allowing the src compute to be
# restarted once the migration hits pre-migrating after claiming
# resources on the dest.
manager_class = nova.compute.manager.ComputeManager
manager_class = manager.ComputeManager
original_rebuild = manager_class._do_rebuild_instance
def start_src_rebuild(self_, context, instance, *args, **kwargs):

View File

@ -14,7 +14,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -41,6 +40,7 @@ class TestMultiCreateServerGroupMemberOverQuota(
self.flags(server_group_members=2, group='quota')
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -48,9 +48,6 @@ class TestMultiCreateServerGroupMemberOverQuota(
self.api = api_fixture.api
self.api.microversion = '2.37' # so we can specify networks='none'
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
group = {'name': 'test group', 'policies': ['soft-anti-affinity']}
self.created_group = self.api.post_server_groups(group)
@ -59,9 +56,7 @@ class TestMultiCreateServerGroupMemberOverQuota(
server group and then create 3 servers in the group using a
multi-create POST /servers request.
"""
server_req = self._build_server(
image_uuid=fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
networks='none')
server_req = self._build_server(networks='none')
server_req['min_count'] = 3
server_req['return_reservation_id'] = True
hints = {'group': self.created_group['id']}
@ -86,9 +81,7 @@ class TestMultiCreateServerGroupMemberOverQuota(
# by using NoopConductorFixture.
self.useFixture(nova_fixtures.NoopConductorFixture())
for x in range(3):
server_req = self._build_server(
image_uuid=fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
networks='none')
server_req = self._build_server(networks='none')
hints = {'group': self.created_group['id']}
# This should result in a 403 response on the 3rd server.
if x == 2:

View File

@ -21,7 +21,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -39,10 +38,10 @@ class RescheduleBuildAvailabilityZoneUpCall(
super(RescheduleBuildAvailabilityZoneUpCall, self).setUp()
# Use the standard fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
# Start controller services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api
@ -103,10 +102,9 @@ class RescheduleMigrateAvailabilityZoneUpCall(
super(RescheduleMigrateAvailabilityZoneUpCall, self).setUp()
# Use the standard fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
# Start controller services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api

View File

@ -15,7 +15,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -40,6 +39,7 @@ class AntiAffinityMultiCreateRequest(test.TestCase,
def setUp(self):
super(AntiAffinityMultiCreateRequest, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
@ -50,9 +50,6 @@ class AntiAffinityMultiCreateRequest(test.TestCase,
self.admin_api = api_fixture.admin_api
self.api = api_fixture.api
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.start_service('conductor')
# Use the latest microversion available to make sure something does
@ -102,9 +99,7 @@ class AntiAffinityMultiCreateRequest(test.TestCase,
'_get_alternate_hosts', stub_get_alternate_hosts)
# Now create two servers in that group.
server_req = self._build_server(
image_uuid=image_fake.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
networks='none')
server_req = self._build_server(networks='none')
server_req['min_count'] = 2
self.api.api_post(
'/servers', {'server': server_req,

View File

@ -15,7 +15,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -32,10 +31,10 @@ class TestRescheduleWithVolumesAttached(
super(TestRescheduleWithVolumesAttached, self).setUp()
# Use the new attach flow fixture for cinder
cinder_fixture = nova_fixtures.CinderFixture(self)
self.cinder = self.useFixture(cinder_fixture)
self.cinder = self.useFixture(nova_fixtures.CinderFixture(self))
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
fake_network.set_stub_network_methods(self)
@ -45,9 +44,6 @@ class TestRescheduleWithVolumesAttached(
api_version='v2.1'))
self.api = api_fixture.admin_api
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.flags(compute_driver='fake.FakeRescheduleDriver')
self.start_service('conductor')

View File

@ -14,7 +14,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -40,6 +39,7 @@ class ColdMigrateTargetHostThenLiveMigrateTest(
super(ColdMigrateTargetHostThenLiveMigrateTest, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -53,9 +53,6 @@ class ColdMigrateTargetHostThenLiveMigrateTest(
self.admin_api.microversion = 'latest'
self.api.microversion = 'latest'
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')
@ -64,9 +61,7 @@ class ColdMigrateTargetHostThenLiveMigrateTest(
def test_cold_migrate_target_host_then_live_migrate(self):
# Create a server, it doesn't matter on which host it builds.
server = self._build_server(
image_uuid=image_fake.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
networks='none')
server = self._build_server(networks='none')
server = self.api.post_server({'server': server})
server = self._wait_for_state_change(server, 'ACTIVE')
original_host = server['OS-EXT-SRV-ATTR:host']

View File

@ -14,7 +14,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
import nova.tests.unit.image.fake
class ShowErrorServerWithTags(test.TestCase,
@ -33,14 +32,11 @@ class ShowErrorServerWithTags(test.TestCase,
self.api = api_fixture.admin_api
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.start_service('conductor')
self.start_service('scheduler')
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.image_id = self.api.get_images()[0]['id']
self.api.microversion = 'latest'

View File

@ -19,7 +19,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as image_fake
from nova.tests.unit import policy_fixture
@ -49,6 +48,7 @@ class NonPersistentFieldNotResetTest(
super(NonPersistentFieldNotResetTest, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -58,9 +58,6 @@ class NonPersistentFieldNotResetTest(
# not regress in new microversions; cap as necessary.
self.api.microversion = 'latest'
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -14,7 +14,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
class VolumeBackedResizeDiskDown(test.TestCase,
@ -36,10 +35,9 @@ class VolumeBackedResizeDiskDown(test.TestCase,
self.api = api_fixture.admin_api
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.CinderFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -17,7 +17,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
class FillVirtualInterfaceListMigration(
@ -38,13 +37,11 @@ class FillVirtualInterfaceListMigration(
api_version='v2.1'))
self.api = api_fixture.admin_api
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.start_service('conductor')
self.start_service('scheduler')
self.start_service('compute')
# the image fake backend needed for image discovery
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
def test_fill_vifs_migration(self):
# Create a test server.

View File

@ -19,7 +19,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
class MissingReqSpecInstanceGroupUUIDTestCase(
@ -51,9 +50,8 @@ class MissingReqSpecInstanceGroupUUIDTestCase(
super(MissingReqSpecInstanceGroupUUIDTestCase, self).setUp()
# Stub out external dependencies.
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
# Configure the API to allow resizing to the same host so we can keep
# the number of computes down to two in the test.
self.flags(allow_resize_to_same_host=True)

View File

@ -15,7 +15,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -27,16 +26,16 @@ class RegressionTest1835822(
super(RegressionTest1835822, self).setUp()
# Use the standard fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).api
self.start_service('conductor')
self.start_service('scheduler')
self.start_service('compute')
# the image fake backend needed for image discovery
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
images = self.api.get_images()
self.image_ref_0 = images[0]['id']
self.image_ref_1 = images[1]['id']

View File

@ -16,7 +16,6 @@ from nova import context
from nova import objects
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
from nova.tests.unit.image import fake as fake_image
class RebuildWithKeypairTestCase(integrated_helpers._IntegratedTestBase):
@ -55,7 +54,7 @@ class RebuildWithKeypairTestCase(integrated_helpers._IntegratedTestBase):
# Rebuild a server with keypair 'test-key2'
body = {
'rebuild': {
'imageRef': fake_image.get_valid_image_id(),
'imageRef': self.glance.auto_disk_config_enabled_image['id'],
'key_name': 'test-key2',
},
}

View File

@ -14,7 +14,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
class ListDeletedServersWithMarker(test.TestCase,
@ -30,8 +29,8 @@ class ListDeletedServersWithMarker(test.TestCase,
# Start standard fixtures.
self.useFixture(func_fixtures.PlacementFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
# Start nova services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api

View File

@ -15,7 +15,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
from nova import utils
@ -29,10 +28,9 @@ class TestInstanceActionBuryInCell0(test.TestCase,
def setUp(self):
super(TestInstanceActionBuryInCell0, self).setUp()
# Setup common fixtures.
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(func_fixtures.PlacementFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
policy = self.useFixture(policy_fixture.RealPolicyFixture())
# Allow non-admins to see instance action events.
policy.set_rules({

View File

@ -17,7 +17,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_notifier
from nova.tests.unit.image import fake as fake_image
class UnshelveNeutronErrorTest(
@ -30,8 +29,7 @@ class UnshelveNeutronErrorTest(
self.placement = placement.api
self.neutron = nova_fixtures.NeutronFixture(self)
self.useFixture(self.neutron)
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
# Start nova services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api

View File

@ -15,7 +15,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client as api_client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -45,6 +44,7 @@ class TestServersPerUserQuota(test.TestCase,
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
@ -53,9 +53,6 @@ class TestServersPerUserQuota(test.TestCase,
self.api.microversion = '2.37' # so we can specify networks='none'
self.admin_api.microversion = '2.37'
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')
self.start_service('compute')
@ -75,15 +72,11 @@ class TestServersPerUserQuota(test.TestCase,
# Boot one instance into the default project as the admin user.
# This results in usage of 1 instance for the project and 1 instance
# for the admin user.
self._create_server(
image_uuid=fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
networks='none', api=self.admin_api)
self._create_server(networks='none', api=self.admin_api)
# Now try to boot an instance as the non-admin user.
# This should succeed because the non-admin user has 0 instances and
# the project limit allows 10 instances.
server_req = self._build_server(
image_uuid=fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
networks='none')
server_req = self._build_server(networks='none')
server = self.api.post_server({'server': server_req})
self._wait_for_state_change(server, 'ACTIVE')
# A request to boot a second instance should fail because the

View File

@ -18,7 +18,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
from nova.tests.unit import utils as test_utils
from nova import utils
@ -476,7 +475,8 @@ class IsolateAggregateFilterTest(AggregateRequestFiltersTest):
self.useFixture(nova_fixtures.HostNameWeigherFixture())
super(IsolateAggregateFilterTest, self).setUp()
self.image_service = nova.tests.unit.image.fake.FakeImageService()
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
# setting traits to flavors
flavor_body = {'flavor': {'name': 'test_flavor',
'ram': 512,
@ -610,10 +610,9 @@ class IsolateAggregateFilterTest(AggregateRequestFiltersTest):
# Creating a new image and setting traits on it.
with nova.utils.temporary_mutation(self.api, microversion='2.35'):
self.ctxt = test_utils.get_test_admin_context()
img_ref = self.image_service.create(self.ctxt, {'name': 'image10'})
img_ref = self.glance.create(self.ctxt, {'name': 'image10'})
image_id_with_trait = img_ref['id']
self.addCleanup(
self.image_service.delete, self.ctxt, image_id_with_trait)
self.addCleanup(self.glance.delete, self.ctxt, image_id_with_trait)
self.api.api_put('/images/%s/metadata' % image_id_with_trait,
{'metadata': {
'trait:HW_CPU_X86_VMX': 'required'}})
@ -640,10 +639,9 @@ class IsolateAggregateFilterTest(AggregateRequestFiltersTest):
# Creating a new image and setting traits on it.
with nova.utils.temporary_mutation(self.api, microversion='2.35'):
self.ctxt = test_utils.get_test_admin_context()
img_ref = self.image_service.create(self.ctxt, {'name': 'image10'})
img_ref = self.glance.create(self.ctxt, {'name': 'image10'})
image_id_with_trait = img_ref['id']
self.addCleanup(
self.image_service.delete, self.ctxt, image_id_with_trait)
self.addCleanup(self.glance.delete, self.ctxt, image_id_with_trait)
self.api.api_put('/images/%s/metadata' % image_id_with_trait,
{'metadata': {
'trait:HW_CPU_X86_VMX': 'required'}})
@ -674,10 +672,9 @@ class IsolateAggregateFilterTest(AggregateRequestFiltersTest):
# Creating a new image and setting traits on it.
with nova.utils.temporary_mutation(self.api, microversion='2.35'):
self.ctxt = test_utils.get_test_admin_context()
img_ref = self.image_service.create(self.ctxt, {'name': 'image10'})
img_ref = self.glance.create(self.ctxt, {'name': 'image10'})
image_id_with_trait = img_ref['id']
self.addCleanup(
self.image_service.delete, self.ctxt, image_id_with_trait)
self.addCleanup(self.glance.delete, self.ctxt, image_id_with_trait)
self.api.api_put('/images/%s/metadata' % image_id_with_trait,
{'metadata': {
'trait:HW_CPU_X86_VMX': 'required'}})
@ -832,10 +829,10 @@ class TestAggregateMultiTenancyIsolationFilter(
def setUp(self):
super(TestAggregateMultiTenancyIsolationFilter, self).setUp()
# Stub out glance, placement and neutron.
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
# Start nova services.
self.start_service('conductor')
self.admin_api = self.useFixture(
@ -937,6 +934,7 @@ class AggregateMultiTenancyIsolationColdMigrateTest(
def setUp(self):
super(AggregateMultiTenancyIsolationColdMigrateTest, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
# Intentionally keep these separate since we want to create the
@ -950,10 +948,6 @@ class AggregateMultiTenancyIsolationColdMigrateTest(
self.api = user_api_fixture.api
self.api.microversion = 'latest'
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
self.start_service('conductor')
# Enable the AggregateMultiTenancyIsolation filter before starting the
# scheduler service.
@ -1003,10 +997,7 @@ class AggregateMultiTenancyIsolationColdMigrateTest(
the server and asserts the server goes to the other host in the
isolated host aggregate via the AggregateMultiTenancyIsolation filter.
"""
img = nova.tests.unit.image.fake.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
server_req_body = self._build_server(
image_uuid=img,
networks='none')
server_req_body = self._build_server(networks='none')
server = self.api.post_server({'server': server_req_body})
server = self._wait_for_state_change(server, 'ACTIVE')
# Ensure the server ended up in host2 or host3

View File

@ -16,7 +16,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -27,6 +26,7 @@ class TestAvailabilityZoneScheduling(
super(TestAvailabilityZoneScheduling, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
@ -36,9 +36,6 @@ class TestAvailabilityZoneScheduling(
self.api = api_fixture.admin_api
self.api.microversion = 'latest'
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -20,7 +20,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client as api_client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -171,10 +170,9 @@ class BootFromVolumeLargeRequestTest(test.TestCase,
super(BootFromVolumeLargeRequestTest, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.CinderFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.image_service = fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api
@ -216,7 +214,7 @@ class BootFromVolumeLargeRequestTest(test.TestCase,
# Wrap the image service get method to check how many times it was
# called.
with mock.patch('nova.image.glance.API.get',
wraps=self.image_service.show) as mock_image_get:
wraps=self.glance.show) as mock_image_get:
self.api.post_server({'server': server})
# Assert that there was caching of the GET /v2/images/{image_id}
# calls. The expected total in this case is 3: one for validating

View File

@ -17,7 +17,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client as api_client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -34,10 +33,9 @@ class CrossAZAttachTestCase(test.TestCase,
# Use the standard fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.CinderFixture(self, az=self.az))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
# Start nova controller services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).admin_api

View File

@ -177,8 +177,8 @@ class TestMultiCellMigrate(integrated_helpers.ProviderUsageBaseTestCase):
return server
def stub_image_create(self):
"""Stubs the _FakeImageService.create method to track created images"""
original_create = self.image_service.create
"""Stubs the GlanceFixture.create method to track created images"""
original_create = self.glance.create
def image_create_snooper(*args, **kwargs):
image = original_create(*args, **kwargs)
@ -186,7 +186,7 @@ class TestMultiCellMigrate(integrated_helpers.ProviderUsageBaseTestCase):
return image
_p = mock.patch.object(
self.image_service, 'create', side_effect=image_create_snooper)
self.glance, 'create', side_effect=image_create_snooper)
_p.start()
self.addCleanup(_p.stop)

View File

@ -18,7 +18,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -32,8 +31,7 @@ class TestNeutronExternalNetworks(test.TestCase,
# Use the standard fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
neutron = self.useFixture(nova_fixtures.NeutronFixture(self))
self._setup_external_network(neutron)
# Start nova controller services.

View File

@ -22,7 +22,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -73,8 +72,7 @@ class InstanceActionEventFaultsTestCase(
def setUp(self):
super(InstanceActionEventFaultsTestCase, self).setUp()
# Setup the standard fixtures.
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.useFixture(policy_fixture.RealPolicyFixture())

View File

@ -14,13 +14,10 @@
import time
import nova.scheduler.utils
import nova.servicegroup
from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.unit import cast_as_call
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
@ -29,17 +26,14 @@ class TestListServersIpFilter(test.TestCase):
def setUp(self):
super(TestListServersIpFilter, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.neutron = self.useFixture(
nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.neutron = self.useFixture(nova_fixtures.NeutronFixture(self))
# Add a 2nd port to the neutron fixture to have multiple ports
self.neutron.create_port({'port': self.neutron.port_2})
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.useFixture(func_fixtures.PlacementFixture())
self.start_service('conductor')

View File

@ -24,7 +24,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
class fake_result(object):
@ -50,8 +49,7 @@ class MetadataTest(test.TestCase, integrated_helpers.InstanceHelperMixin):
def setUp(self):
super(MetadataTest, self).setUp()
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.start_service('conductor')

View File

@ -29,7 +29,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.functional import test_servers
from nova.tests.unit.image import fake as image_fake
CONF = config.CONF
INCOMPLETE_CONSUMER_ID = '00000000-0000-0000-0000-000000000000'
@ -1814,6 +1813,7 @@ class TestDBArchiveDeletedRowsMultiCell(integrated_helpers.InstanceHelperMixin,
def setUp(self):
super(TestDBArchiveDeletedRowsMultiCell, self).setUp()
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -1821,9 +1821,6 @@ class TestDBArchiveDeletedRowsMultiCell(integrated_helpers.InstanceHelperMixin,
# We need the admin api to forced_host for server create
self.api = api_fixture.admin_api
image_fake.stub_out_image_service(self)
self.addCleanup(image_fake.FakeImageService_reset)
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -19,7 +19,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
from nova import utils
@ -35,8 +34,7 @@ class HostStatusPolicyTestCase(test.TestCase,
def setUp(self):
super(HostStatusPolicyTestCase, self).setUp()
# Setup the standard fixtures.
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.useFixture(policy_fixture.RealPolicyFixture())

View File

@ -16,7 +16,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit import fake_network
import nova.tests.unit.image.fake as fake_image
from nova.tests.unit import policy_fixture
CELL1_NAME = 'cell1'
@ -32,6 +31,7 @@ class MultiCellSchedulerTestCase(test.TestCase,
super(MultiCellSchedulerTestCase, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.AllServicesCurrent())
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -46,8 +46,6 @@ class MultiCellSchedulerTestCase(test.TestCase,
group='filter_scheduler')
self.start_service('conductor')
self.start_service('scheduler')
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
def _test_create_and_migrate(self, expected_status, az=None):
server = self._create_server(az=az)

View File

@ -16,7 +16,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -31,11 +30,9 @@ class ServerFaultTestCase(test.TestCase,
def setUp(self):
super(ServerFaultTestCase, self).setUp()
# Setup the standard fixtures.
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(policy_fixture.RealPolicyFixture())
# Start the compute services.

View File

@ -30,10 +30,6 @@ from nova.tests.unit import policy_fixture
from nova import utils
from nova.virt import fake
import nova.scheduler.utils
import nova.servicegroup
import nova.tests.unit.image.fake
# An alternate project id
PROJECT_ID_ALT = "616c6c796f7572626173656172656f73"
@ -67,6 +63,7 @@ class ServerGroupTestBase(test.TestCase,
group='filter_scheduler')
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
@ -78,14 +75,9 @@ class ServerGroupTestBase(test.TestCase,
self.admin_api = api_fixture.admin_api
self.admin_api.microversion = self.microversion
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
self.start_service('conductor')
self.start_service('scheduler')
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
def _boot_a_server_to_group(self, group,
expected_status='ACTIVE', flavor=None,
az=None):
@ -975,15 +967,15 @@ class TestAntiAffinityLiveMigration(test.TestCase,
# Setup common fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
# Setup API.
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1'))
self.api = api_fixture.api
self.admin_api = api_fixture.admin_api
# Fake out glance.
nova.tests.unit.image.fake.stub_out_image_service(self)
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
# Start conductor, scheduler and two computes.
self.start_service('conductor')
self.start_service('scheduler')

View File

@ -49,7 +49,6 @@ from nova.tests.unit.api.openstack import fakes
from nova.tests.unit import fake_block_device
from nova.tests.unit import fake_notifier
from nova.tests.unit import fake_requests
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit.objects import test_instance_info_cache
from nova import utils as nova_utils
from nova.virt import fake
@ -1343,7 +1342,7 @@ class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase):
# Now update the image metadata to be something that won't work with
# the fake compute driver we're using since the fake driver has an
# "x86_64" architecture.
rebuild_image_ref = fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
self.api.put_image_meta_key(
rebuild_image_ref, 'hw_architecture', 'unicore32')
# Now rebuild the server with that updated image and it should result
@ -1456,7 +1455,7 @@ class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase):
allocs = allocs[rp_uuid]['resources']
assertFlavorMatchesAllocation(flavor, allocs)
rebuild_image_ref = fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
# Now rebuild the server with a different image.
rebuild_req_body = {
'rebuild': {
@ -1508,7 +1507,7 @@ class ServerRebuildTestCase(integrated_helpers._IntegratedTestBase):
# Now rebuild the server with a different image than was used to create
# our fake volume.
rebuild_image_ref = fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
rebuild_req_body = {
'rebuild': {
'imageRef': rebuild_image_ref
@ -8190,7 +8189,7 @@ class AcceleratorServerOpsTest(AcceleratorServerBase):
self.assertEqual(evac_hostname, arqs_new[0]['hostname'])
def test_rebuild_ok(self):
rebuild_image_ref = fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
self.api.post_server_action(self.server['id'],
{'rebuild': {
'imageRef': rebuild_image_ref,
@ -8248,7 +8247,8 @@ class AcceleratorServerOpsTest(AcceleratorServerBase):
rebuild so OpenStackApiException is raised.
"""
old_compute_version.return_value = 52
rebuild_image_ref = fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID
rebuild_image_ref = self.glance.auto_disk_config_enabled_image['id']
ex = self.assertRaises(client.OpenStackApiException,
self.api.post_server_action, self.server['id'],
{'rebuild': {

View File

@ -15,7 +15,6 @@ from nova import test
from nova.tests import fixtures as nova_fixtures
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -29,9 +28,9 @@ class ServiceTestCase(test.TestCase,
# Use the standard fixtures.
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
# Start nova controller services.
self.api = self.useFixture(nova_fixtures.OSAPIFixture(
api_version='v2.1')).api

View File

@ -17,7 +17,6 @@ import testscenarios
from nova import test
from nova.tests import fixtures as nova_fixtures
import nova.tests.unit.image.fake
from nova.tests.unit import policy_fixture
LOG = logging.getLogger(__name__)
@ -46,13 +45,11 @@ class SecgroupsFullstack(testscenarios.WithScenarios, test.TestCase):
def setUp(self):
super(SecgroupsFullstack, self).setUp()
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.GlanceFixture(self))
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture())
self.api = api_fixture.api
# the image fake backend needed for image discovery
nova.tests.unit.image.fake.stub_out_image_service(self)
# TODO(sdague): refactor this method into the API client, we're
# going to use it a lot
def _build_minimal_create_server_request(self, name):

View File

@ -19,7 +19,6 @@ from nova.tests import fixtures as nova_fixtures
from nova.tests.functional.api import client as api_client
from nova.tests.functional import fixtures as func_fixtures
from nova.tests.functional import integrated_helpers
from nova.tests.unit.image import fake as fake_image
from nova.tests.unit import policy_fixture
@ -43,9 +42,9 @@ class ServersPreSchedulingTestCase(test.TestCase,
def setUp(self):
super(ServersPreSchedulingTestCase, self).setUp()
fake_image.stub_out_image_service(self)
self.useFixture(policy_fixture.RealPolicyFixture())
self.useFixture(nova_fixtures.NoopConductorFixture())
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.useFixture(func_fixtures.PlacementFixture())
api_fixture = self.useFixture(nova_fixtures.OSAPIFixture(
@ -58,7 +57,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
def test_instance_from_buildrequest(self):
self.useFixture(nova_fixtures.AllServicesCurrent())
image_ref = fake_image.get_valid_image_id()
image_ref = self.glance.auto_disk_config_enabled_image['id']
body = {
'server': {
'name': 'foo',
@ -89,7 +88,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
self.assertEqual('BUILD', server['status'])
def test_instance_from_buildrequest_old_service(self):
image_ref = fake_image.get_valid_image_id()
image_ref = self.glance.auto_disk_config_enabled_image['id']
body = {
'server': {
'name': 'foo',
@ -120,7 +119,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
def test_delete_instance_from_buildrequest(self):
self.useFixture(nova_fixtures.AllServicesCurrent())
image_ref = fake_image.get_valid_image_id()
image_ref = self.glance.auto_disk_config_enabled_image['id']
body = {
'server': {
'name': 'foo',
@ -137,7 +136,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
self.assertEqual(404, get_resp.status)
def test_delete_instance_from_buildrequest_old_service(self):
image_ref = fake_image.get_valid_image_id()
image_ref = self.glance.auto_disk_config_enabled_image['id']
body = {
'server': {
'name': 'foo',
@ -154,7 +153,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
self.assertEqual(404, get_resp.status)
def _test_instance_list_from_buildrequests(self):
image_ref = fake_image.get_valid_image_id()
image_ref = self.glance.auto_disk_config_enabled_image['id']
body = {
'server': {
'name': 'foo',
@ -198,7 +197,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
used to test the various tags filters working in the BuildRequestList.
"""
self.useFixture(nova_fixtures.AllServicesCurrent())
image_ref = fake_image.get_valid_image_id()
image_ref = self.glance.auto_disk_config_enabled_image['id']
body = {
'server': {
'name': 'foo',
@ -297,7 +296,7 @@ class ServersPreSchedulingTestCase(test.TestCase,
body = {
'server': {
'name': 'test_instance_list_build_request_marker_ip_filter',
'imageRef': fake_image.get_valid_image_id(),
'imageRef': self.glance.auto_disk_config_enabled_image['id'],
'flavorRef': '1',
'networks': 'none'
}
@ -324,8 +323,7 @@ class EnforceVolumeBackedForZeroDiskFlavorTestCase(
def setUp(self):
super(EnforceVolumeBackedForZeroDiskFlavorTestCase, self).setUp()
fake_image.stub_out_image_service(self)
self.addCleanup(fake_image.FakeImageService_reset)
self.glance = self.useFixture(nova_fixtures.GlanceFixture(self))
self.useFixture(nova_fixtures.NeutronFixture(self))
self.policy_fixture = (
self.useFixture(policy_fixture.RealPolicyFixture()))
@ -354,7 +352,7 @@ class EnforceVolumeBackedForZeroDiskFlavorTestCase(
servers_policies.ZERO_DISK_FLAVOR: base_policies.RULE_ADMIN_API},
overwrite=False)
server_req = self._build_server(
image_uuid=fake_image.AUTO_DISK_CONFIG_ENABLED_IMAGE_UUID,
image_uuid=self.glance.auto_disk_config_enabled_image['id'],
flavor_id=self.zero_disk_flavor['id'])
ex = self.assertRaises(api_client.OpenStackApiException,
self.api.post_server, {'server': server_req})

View File

@ -15,6 +15,8 @@
# under the License.
import copy
import datetime
import io
import fixtures as fx
import futurist
@ -564,3 +566,101 @@ class TestNeutronFixture(test.NoDBTestCase):
port_id = self.neutron.port_with_resource_request['id']
ports = [port for port in ports if port_id == port['id']]
self.assertIsNotNone(ports[0]['resource_request'])
class TestGlanceFixture(test.NoDBTestCase):
def setUp(self):
super().setUp()
self.image_service = self.useFixture(fixtures.GlanceFixture(self))
self.context = context.get_admin_context()
def test_detail(self):
res = self.image_service.detail(self.context)
for image in res:
self.assertEqual(
set(image.keys()),
{
'id', 'name', 'created_at', 'updated_at', 'deleted_at',
'deleted', 'status', 'is_public', 'properties',
'disk_format', 'container_format', 'size', 'min_disk',
'min_ram', 'protected', 'tags', 'visibility',
},
)
self.assertIsInstance(image['created_at'], datetime.datetime)
self.assertIsInstance(image['updated_at'], datetime.datetime)
if not (
isinstance(image['deleted_at'], datetime.datetime) or
image['deleted_at'] is None
):
self.fail(
"image's 'deleted_at' attribute was neither a datetime "
"object nor None"
)
def check_is_bool(image, key):
val = image.get('deleted')
if not isinstance(val, bool):
self.fail(
"image's '%s' attribute wasn't a bool: %r" % (key, val)
)
check_is_bool(image, 'deleted')
check_is_bool(image, 'is_public')
def test_show_raises_imagenotfound_for_invalid_id(self):
self.assertRaises(
exception.ImageNotFound,
self.image_service.show,
self.context, 'this image does not exist')
def test_create_adds_id(self):
index = self.image_service.detail(self.context)
image_count = len(index)
self.image_service.create(self.context, {})
index = self.image_service.detail(self.context)
self.assertEqual(len(index), image_count + 1)
self.assertTrue(index[0]['id'])
def test_create_keeps_id(self):
self.image_service.create(self.context, {'id': '34'})
self.image_service.show(self.context, '34')
def test_create_rejects_duplicate_ids(self):
self.image_service.create(self.context, {'id': '34'})
self.assertRaises(
exception.CouldNotUploadImage,
self.image_service.create,
self.context, {'id': '34'})
# Make sure there's still one left
self.image_service.show(self.context, '34')
def test_update(self):
self.image_service.create(
self.context, {'id': '34', 'foo': 'bar'})
self.image_service.update(
self.context, '34', {'id': '34', 'foo': 'baz'})
img = self.image_service.show(self.context, '34')
self.assertEqual(img['foo'], 'baz')
def test_delete(self):
self.image_service.create(self.context, {'id': '34', 'foo': 'bar'})
self.image_service.delete(self.context, '34')
self.assertRaises(
exception.NotFound,
self.image_service.show,
self.context, '34')
def test_create_then_get(self):
blob = 'some data'
s1 = io.StringIO(blob)
self.image_service.create(
self.context, {'id': '32', 'foo': 'bar'}, data=s1)
s2 = io.StringIO()
self.image_service.download(self.context, '32', data=s2)
self.assertEqual(s2.getvalue(), blob, 'Did not get blob back intact')