Cleanup of image service code

* Remove image_service flag
* Move nova.image.fake to nova.tests.image.fake
* Move nova.image.get_default_image_service to
  nova.image.glance.get_default_image_service
* Move nova.image.get_image_service to
  nova.image.glance.get_remote_image_service
* Related to bp integrate-python-glanceclient

Change-Id: Iea6db7898328a9060fb88586e042efbc0a4351fc
This commit is contained in:
Brian Waldon 2012-06-25 14:06:08 -07:00
parent 7e658bd45d
commit 3aaa0b1034
35 changed files with 177 additions and 187 deletions

View File

@ -21,7 +21,7 @@ from nova.api.openstack import common
from nova.api.openstack import wsgi
from nova import exception
from nova import flags
from nova import image
from nova.image import glance
FLAGS = flags.FLAGS
@ -31,7 +31,7 @@ class Controller(object):
"""The image metadata API controller for the OpenStack API"""
def __init__(self):
self.image_service = image.get_default_image_service()
self.image_service = glance.get_default_image_service()
def _get_image(self, context, image_id):
try:

View File

@ -21,7 +21,7 @@ from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import exception
from nova import flags
import nova.image
import nova.image.glance
from nova import log as logging
import nova.utils
@ -96,12 +96,12 @@ class Controller(wsgi.Controller):
def __init__(self, image_service=None, **kwargs):
"""Initialize new `ImageController`.
:param image_service: `nova.image.glance:GlancemageService`
:param image_service: `nova.image.glance:GlanceImageService`
"""
super(Controller, self).__init__(**kwargs)
self._image_service = (image_service or
nova.image.get_default_image_service())
nova.image.glance.get_default_image_service())
def _get_filters(self, req):
"""

View File

@ -39,7 +39,7 @@ from nova import crypto
from nova.db import base
from nova import exception
from nova import flags
import nova.image
from nova.image import glance
from nova import log as logging
from nova import network
from nova import notifications
@ -121,7 +121,7 @@ class API(base.Base):
def __init__(self, image_service=None, network_api=None, volume_api=None,
security_group_api=None, **kwargs):
self.image_service = (image_service or
nova.image.get_default_image_service())
glance.get_default_image_service())
self.network_api = network_api or network.API()
self.volume_api = volume_api or volume.API()
@ -374,8 +374,8 @@ class API(base.Base):
self._check_injected_file_quota(context, injected_files)
self._check_requested_networks(context, requested_networks)
(image_service, image_id) = nova.image.get_image_service(context,
image_href)
(image_service, image_id) = glance.get_remote_image_service(context,
image_href)
image = image_service.show(context, image_id)
if instance_type['memory_mb'] < int(image.get('min_ram') or 0):
@ -1219,7 +1219,7 @@ class API(base.Base):
def _get_image(self, context, image_href):
"""Throws an ImageNotFound exception if image_href does not exist."""
(image_service, image_id) = nova.image.get_image_service(context,
(image_service, image_id) = glance.get_remote_image_service(context,
image_href)
return image_service.show(context, image_id)

View File

@ -57,7 +57,7 @@ from nova.compute import vm_states
import nova.context
from nova import exception
from nova import flags
import nova.image
from nova.image import glance
from nova import log as logging
from nova import manager
from nova import network
@ -205,7 +205,8 @@ def wrap_instance_fault(function):
def _get_image_meta(context, image_ref):
image_service, image_id = nova.image.get_image_service(context, image_ref)
image_service, image_id = glance.get_remote_image_service(context,
image_ref)
return image_service.show(context, image_id)
@ -1056,7 +1057,7 @@ class ComputeManager(manager.SchedulerDependentManager):
marker = batch[-1]['id']
return images
image_service = nova.image.get_default_image_service()
image_service = glance.get_default_image_service()
filters = {'property-image_type': 'backup',
'property-backup_type': backup_type,
'property-instance_uuid': instance_uuid}

View File

@ -322,9 +322,6 @@ global_opts = [
cfg.StrOpt('firewall_driver',
default='nova.virt.firewall.IptablesFirewallDriver',
help='Firewall driver (defaults to iptables)'),
cfg.StrOpt('image_service',
default='nova.image.glance.GlanceImageService',
help='The service to use for retrieving and searching images.'),
cfg.StrOpt('host',
default=socket.gethostname(),
help='Name of this node. This can be an opaque identifier. '

View File

@ -1,51 +0,0 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright 2011 OpenStack LLC.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import nova
from nova import flags
from nova.image import glance
from nova.openstack.common import importutils
FLAGS = flags.FLAGS
def get_default_image_service():
ImageService = importutils.import_class(FLAGS.image_service)
return ImageService()
def get_image_service(context, image_href):
"""Get the proper image_service and id for the given image_href.
The image_href param can be an href of the form
http://myglanceserver:9292/images/42, or just an int such as 42. If the
image_href is an int, then the default image service is returned.
:param image_href: image ref/id for an image
:returns: a tuple of the form (image_service, image_id)
"""
# check if this is not a uri
if '/' not in str(image_href):
return (get_default_image_service(), image_href)
else:
(glance_client, image_id) = glance._get_glance_client(context,
image_href)
image_service = nova.image.glance.GlanceImageService(glance_client)
return (image_service, image_id)

View File

@ -511,3 +511,31 @@ def _translate_plain_exception(exc_type, exc_value):
if exc_type is glance_exception.Invalid:
return exception.Invalid(exc_value)
return exc_value
def get_remote_image_service(context, image_href):
"""Create an image_service and parse the id from the given image_href.
The image_href param can be an href of the form
'http://example.com:9292/v1/images/b8b2c6f7-7345-4e2f-afa2-eedaba9cbbe3',
or just an id such as 'b8b2c6f7-7345-4e2f-afa2-eedaba9cbbe3'. If the
image_href is a standalone id, then the default image service is returned.
:param image_href: href that describes the location of an image
:returns: a tuple of the form (image_service, image_id)
"""
#NOTE(bcwaldon): If image_href doesn't look like a URI, assume its a
# standalone image ID
if '/' not in str(image_href):
image_service = get_default_image_service()
image_id = image_href
else:
(glance_client, image_id) = _get_glance_client(context, image_href)
image_service = GlanceImageService(glance_client)
return (image_service, image_id)
def get_default_image_service():
return GlanceImageService()

View File

@ -33,7 +33,7 @@ from nova.api.ec2 import ec2utils
import nova.cert.rpcapi
from nova import exception
from nova import flags
from nova import image
from nova.image import glance
from nova import log as logging
from nova.openstack.common import cfg
from nova import utils
@ -69,7 +69,7 @@ class S3ImageService(object):
def __init__(self, service=None, *args, **kwargs):
self.cert_rpcapi = nova.cert.rpcapi.CertAPI()
self.service = service or image.get_default_image_service()
self.service = service or glance.get_default_image_service()
self.service.__init__(*args, **kwargs)
def _translate_uuids_to_ids(self, context, images):

View File

@ -32,7 +32,6 @@ import nose.plugins.skip
import stubout
from nova import flags
import nova.image.fake
from nova import log as logging
from nova.openstack.common import cfg
from nova.openstack.common import timeutils
@ -150,9 +149,6 @@ class TestCase(unittest.TestCase):
self.mox.VerifyAll()
super(TestCase, self).tearDown()
finally:
if FLAGS.image_service == 'nova.image.fake.FakeImageService':
nova.image.fake.FakeImageService_reset()
# Reset any overridden flags
FLAGS.reset()

View File

@ -36,12 +36,12 @@ from nova import context
from nova import db
from nova import exception
from nova import flags
from nova.image import fake
from nova.image import s3
from nova import log as logging
from nova.network import api as network_api
from nova.openstack.common import rpc
from nova import test
from nova.tests.image import fake
from nova import utils
@ -94,6 +94,19 @@ class CloudTestCase(test.TestCase):
self.flags(compute_driver='nova.virt.fake.FakeDriver',
stub_network=True)
def fake_show(meh, context, id):
return {'id': id,
'container_format': 'ami',
'properties': {
'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175',
'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175',
'type': 'machine',
'image_state': 'available'}}
self.stubs.Set(fake._FakeImageService, 'show', fake_show)
self.stubs.Set(fake._FakeImageService, 'show_by_name', fake_show)
fake.stub_out_image_service(self.stubs)
def dumb(*args, **kwargs):
pass
@ -115,18 +128,6 @@ class CloudTestCase(test.TestCase):
self.project_id,
is_admin=True)
def fake_show(meh, context, id):
return {'id': id,
'container_format': 'ami',
'properties': {
'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175',
'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175',
'type': 'machine',
'image_state': 'available'}}
self.stubs.Set(fake._FakeImageService, 'show', fake_show)
self.stubs.Set(fake._FakeImageService, 'show_by_name', fake_show)
# NOTE(comstud): Make 'cast' behave like a 'call' which will
# ensure that operations complete
self.stubs.Set(rpc, 'cast', rpc.call)
@ -137,6 +138,10 @@ class CloudTestCase(test.TestCase):
db.api.s3_image_create(self.context,
'76fa36fc-c930-4bf3-8c8a-ea2a2420deb6')
def tearDown(self):
super(CloudTestCase, self).tearDown()
fake.FakeImageService_reset()
def _stub_instance_get_with_fixed_ips(self, func_name):
orig_func = getattr(self.cloud.compute_api, func_name)
@ -1618,7 +1623,6 @@ class CloudTestCase(test.TestCase):
'container_format': 'ami',
'status': 'active'}
self.stubs.UnsetAll()
self.stubs.Set(fake._FakeImageService, 'show', fake_show)
def dumb(*args, **kwargs):
@ -2352,7 +2356,6 @@ class CloudTestCase(test.TestCase):
for i in range(3, 7):
db.api.s3_image_create(self.context, 'ami-%d' % i)
self.stubs.UnsetAll()
self.stubs.Set(fake._FakeImageService, 'show', fake_show)
test_dia_iisb('stop', image_id='ami-3')

View File

@ -22,7 +22,7 @@ from nova import context
from nova import db
from nova import exception
from nova import flags
from nova.image import fake
from nova.tests.image import fake
from nova import log as logging
from nova.openstack.common import importutils
from nova.openstack.common import rpc
@ -50,7 +50,7 @@ class EC2ValidateTestCase(test.TestCase):
self.scheduter = self.start_service('scheduler')
self.network = self.start_service('network')
self.volume = self.start_service('volume')
self.image_service = importutils.import_object(FLAGS.image_service)
self.image_service = fake.FakeImageService()
self.user_id = 'fake'
self.project_id = 'fake'
@ -80,6 +80,7 @@ class EC2ValidateTestCase(test.TestCase):
'type': 'machine',
'image_state': 'available'}}
fake.stub_out_image_service(self.stubs)
self.stubs.Set(fake._FakeImageService, 'show', fake_show)
self.stubs.Set(fake._FakeImageService, 'show_by_name', fake_show)
@ -93,6 +94,10 @@ class EC2ValidateTestCase(test.TestCase):
db.api.s3_image_create(self.context,
'76fa36fc-c930-4bf3-8c8a-ea2a2420deb6')
def tearDown(self):
super(EC2ValidateTestCase, self).tearDown()
fake.FakeImageService_reset()
#EC2_API tests (InvalidInstanceID.Malformed)
def test_console_output(self):
for ec2_id, e in self.ec2_id_exception_map:

View File

@ -24,6 +24,7 @@ from nova.openstack.common import jsonutils
import nova.openstack.common.rpc
from nova import test
from nova.tests.api.openstack import fakes
import nova.tests.image.fake
MANUAL_INSTANCE_UUID = fakes.FAKE_UUID
@ -45,6 +46,8 @@ class DiskConfigTestCase(test.TestCase):
def setUp(self):
super(DiskConfigTestCase, self).setUp()
self.flags(verbose=True)
nova.tests.image.fake.stub_out_image_service(self.stubs)
fakes.stub_out_nw_api(self.stubs)
FAKE_INSTANCES = [
@ -120,6 +123,10 @@ class DiskConfigTestCase(test.TestCase):
self.app = compute.APIRouter()
def tearDown(self):
super(DiskConfigTestCase, self).tearDown()
nova.tests.image.fake.FakeImageService_reset()
def assertDiskConfig(self, dict_, value):
self.assert_(API_DISK_CONFIG in dict_)
self.assertEqual(dict_[API_DISK_CONFIG], value)

View File

@ -27,6 +27,7 @@ from nova import flags
from nova.openstack.common import importutils
from nova import test
from nova.tests.api.openstack import fakes
import nova.tests.image.fake
from nova import utils
@ -69,7 +70,7 @@ class ServerActionsControllerTest(test.TestCase):
fakes.stub_out_nw_api(self.stubs)
fakes.stub_out_rate_limiting(self.stubs)
fakes.stub_out_compute_api_snapshot(self.stubs)
fakes.stub_out_image_service(self.stubs)
nova.tests.image.fake.stub_out_image_service(self.stubs)
service_class = 'nova.image.glance.GlanceImageService'
self.service = importutils.import_object(service_class)
self.service.delete_all()

View File

@ -35,12 +35,12 @@ from nova.compute import vm_states
import nova.db
from nova.db.sqlalchemy import models
from nova import flags
import nova.image.fake
from nova.openstack.common import jsonutils
import nova.openstack.common.rpc
from nova import test
from nova.tests.api.openstack import fakes
from nova.tests import fake_network
import nova.tests.image.fake
from nova import utils
@ -99,7 +99,7 @@ class ServersControllerTest(test.TestCase):
self.flags(verbose=True, use_ipv6=False)
fakes.stub_out_rate_limiting(self.stubs)
fakes.stub_out_key_pair_funcs(self.stubs)
fakes.stub_out_image_service(self.stubs)
nova.tests.image.fake.stub_out_image_service(self.stubs)
return_server = fakes.fake_instance_get()
return_servers = fakes.fake_instance_get_all_by_filters()
self.stubs.Set(nova.db, 'instance_get_all_by_filters',
@ -1484,7 +1484,7 @@ class ServersControllerCreateTest(test.TestCase):
fakes.stub_out_rate_limiting(self.stubs)
fakes.stub_out_key_pair_funcs(self.stubs)
fakes.stub_out_image_service(self.stubs)
nova.tests.image.fake.stub_out_image_service(self.stubs)
fakes.stub_out_nw_api(self.stubs)
self.stubs.Set(utils, 'gen_uuid', fake_gen_uuid)
self.stubs.Set(nova.db, 'instance_add_security_group',

View File

@ -19,6 +19,7 @@ from nova import log as logging
from nova.openstack.common import jsonutils
from nova import test
from nova.tests.api.openstack import fakes
import nova.tests.image.fake
LOG = logging.getLogger(__name__)
@ -27,6 +28,11 @@ class UrlmapTest(test.TestCase):
def setUp(self):
super(UrlmapTest, self).setUp()
fakes.stub_out_rate_limiting(self.stubs)
nova.tests.image.fake.stub_out_image_service(self.stubs)
def tearDown(self):
super(UrlmapTest, self).tearDown()
nova.tests.image.fake.FakeImageService_reset()
def test_path_version_v1_1(self):
"""Test URL path specifying v1.1 returns v2 content."""

View File

@ -37,7 +37,7 @@ from nova.compute import vm_states
from nova import context
from nova.db.sqlalchemy import models
from nova import exception as exc
import nova.image.fake
import nova.image.glance
from nova.openstack.common import jsonutils
from nova.openstack.common import timeutils
from nova import quota
@ -125,14 +125,6 @@ def stub_out_key_pair_funcs(stubs, have_key_pair=True):
stubs.Set(nova.db, 'key_pair_get_all_by_user', no_key_pair)
def stub_out_image_service(stubs):
def fake_get_image_service(context, image_href):
return (nova.image.fake.FakeImageService(), image_href)
stubs.Set(nova.image, 'get_image_service', fake_get_image_service)
stubs.Set(nova.image, 'get_default_image_service',
lambda: nova.image.fake.FakeImageService())
def stub_out_rate_limiting(stubs):
def fake_rate_init(self, app):
super(limits.RateLimitingMiddleware, self).__init__(app)
@ -276,10 +268,12 @@ def stub_out_glance_add_image(stubs, sent_to_glance):
def stub_out_glance(stubs):
def fake_get_image_service():
def fake_get_remote_image_service():
client = glance_stubs.StubGlanceClient(_make_image_fixtures())
return nova.image.glance.GlanceImageService(client)
stubs.Set(nova.image, 'get_default_image_service', fake_get_image_service)
stubs.Set(nova.image.glance,
'get_default_image_service',
fake_get_remote_image_service)
class FakeToken(object):

View File

@ -39,7 +39,7 @@ from nova import context
from nova import db
from nova import exception
from nova import flags
from nova.image import fake as fake_image
from nova.tests.image import fake as fake_image
from nova import log as logging
from nova.notifier import test_notifier
from nova.openstack.common import importutils
@ -125,11 +125,13 @@ class BaseTestCase(test.TestCase):
'ramdisk_id': 'fake_ramdisk_id',
'something_else': 'meow'}}
fake_image.stub_out_image_service(self.stubs)
self.stubs.Set(fake_image._FakeImageService, 'show', fake_show)
self.stubs.Set(rpc, 'call', rpc_call_wrapper)
self.stubs.Set(rpc, 'cast', rpc_cast_wrapper)
def tearDown(self):
fake_image.FakeImageService_reset()
instances = db.instance_get_all(self.context.elevated())
for instance in instances:
db.instance_destroy(self.context.elevated(), instance['uuid'])

View File

@ -38,7 +38,6 @@ def set_defaults(conf):
conf.set_default('fake_network', True)
conf.set_default('fake_rabbit', True)
conf.set_default('flat_network_bridge', 'br100')
conf.set_default('image_service', 'nova.image.fake.FakeImageService')
conf.set_default('iscsi_num_targets', 8)
conf.set_default('network_size', 8)
conf.set_default('num_networks', 2)

View File

@ -1,6 +1,7 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2011 Justin Santa Barbara
# Copyright 2012 OpenStack LLC
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
@ -22,6 +23,7 @@ import datetime
from nova import exception
from nova import flags
import nova.image.glance
from nova import log as logging
from nova import utils
@ -41,7 +43,6 @@ class _FakeImageService(object):
# So, make sure we've got one..
timestamp = datetime.datetime(2011, 01, 01, 01, 02, 03)
# NOTE(bcwaldon): was image '123456'
image1 = {'id': '155d900f-4e14-4e4c-a73d-069cbf4541e6',
'name': 'fakeimage123456',
'created_at': timestamp,
@ -56,7 +57,6 @@ class _FakeImageService(object):
'ramdisk_id': FLAGS.null_kernel,
'architecture': 'x86_64'}}
# NOTE(bcwaldon): was image 'fake'
image2 = {'id': 'a2459075-d96c-40d5-893e-577ff92e721c',
'name': 'fakeimage123456',
'created_at': timestamp,
@ -70,7 +70,6 @@ class _FakeImageService(object):
'properties': {'kernel_id': FLAGS.null_kernel,
'ramdisk_id': FLAGS.null_kernel}}
# NOTE(bcwaldon): was image '2'
image3 = {'id': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6',
'name': 'fakeimage123456',
'created_at': timestamp,
@ -84,7 +83,6 @@ class _FakeImageService(object):
'properties': {'kernel_id': FLAGS.null_kernel,
'ramdisk_id': FLAGS.null_kernel}}
# NOTE(bcwaldon): was image '1'
image4 = {'id': 'cedef40a-ed67-4d10-800e-17455edce175',
'name': 'fakeimage123456',
'created_at': timestamp,
@ -98,7 +96,6 @@ class _FakeImageService(object):
'properties': {'kernel_id': FLAGS.null_kernel,
'ramdisk_id': FLAGS.null_kernel}}
# NOTE(bcwaldon): was image '3'
image5 = {'id': 'c905cedb-7281-47e4-8a62-f26bc5fc4c77',
'name': 'fakeimage123456',
'created_at': timestamp,
@ -113,7 +110,6 @@ class _FakeImageService(object):
'155d900f-4e14-4e4c-a73d-069cbf4541e6',
'ramdisk_id': None}}
# NOTE(sirp): was image '6'
image6 = {'id': 'a440c04b-79fa-479c-bed1-0b816eaec379',
'name': 'fakeimage6',
'created_at': timestamp,
@ -129,7 +125,6 @@ class _FakeImageService(object):
'architecture': 'x86_64',
'auto_disk_config': 'False'}}
# NOTE(sirp): was image '7'
image7 = {'id': '70a599e0-31e7-49b7-b260-868f441e862b',
'name': 'fakeimage7',
'created_at': timestamp,
@ -258,3 +253,12 @@ def FakeImageService():
def FakeImageService_reset():
global _fakeImageService
_fakeImageService = _FakeImageService()
def stub_out_image_service(stubs):
def fake_get_remote_image_service(context, image_href):
return (FakeImageService(), image_href)
stubs.Set(nova.image.glance, 'get_remote_image_service',
lambda x, y: (FakeImageService(), y))
stubs.Set(nova.image.glance, 'get_default_image_service',
lambda: FakeImageService())

View File

@ -20,15 +20,20 @@ import StringIO
from nova import context
from nova import exception
import nova.image
import nova.tests.image.fake
from nova import test
class _ImageTestCase(test.TestCase):
class FakeImageServiceTestCase(test.TestCase):
def setUp(self):
super(_ImageTestCase, self).setUp()
super(FakeImageServiceTestCase, self).setUp()
self.image_service = nova.tests.image.fake.FakeImageService()
self.context = context.get_admin_context()
def tearDown(self):
super(FakeImageServiceTestCase, self).setUp()
nova.tests.image.fake.FakeImageService_reset()
def test_index(self):
res = self.image_service.index(self.context)
for image in res:
@ -138,9 +143,3 @@ class _ImageTestCase(test.TestCase):
s2 = StringIO.StringIO()
self.image_service.get(self.context, '32', data=s2)
self.assertEquals(s2.getvalue(), blob, 'Did not get blob back intact')
class FakeImageTestCase(_ImageTestCase):
def setUp(self):
super(FakeImageTestCase, self).setUp()
self.image_service = nova.image.fake.FakeImageService()

View File

@ -24,6 +24,7 @@ import tempfile
from nova import context
import nova.db.api
from nova import exception
from nova.tests.image import fake
from nova.image import s3
from nova import test
@ -81,14 +82,19 @@ file_manifest_xml = """<?xml version="1.0" ?>
class TestS3ImageService(test.TestCase):
def setUp(self):
super(TestS3ImageService, self).setUp()
self.flags(image_service='nova.image.fake.FakeImageService')
self.image_service = s3.S3ImageService()
self.context = context.RequestContext(None, None)
# set up one fixture to test shows, should have id '1'
nova.db.api.s3_image_create(self.context,
'155d900f-4e14-4e4c-a73d-069cbf4541e6')
fake.stub_out_image_service(self.stubs)
self.image_service = s3.S3ImageService()
def tearDown(self):
super(TestS3ImageService, self).tearDown()
fake.FakeImageService_reset()
def _assertEqualList(self, list0, list1, keys):
self.assertEqual(len(list0), len(list1))
key = keys[0]
@ -183,8 +189,8 @@ class TestS3ImageService(test.TestCase):
eventlet.sleep()
translated = self.image_service._translate_id_to_uuid(context, img)
uuid = translated['id']
self.glance_service = nova.image.get_default_image_service()
updated_image = self.glance_service.update(self.context, uuid,
image_service = fake.FakeImageService()
updated_image = image_service.update(self.context, uuid,
{'is_public': True}, None,
{'x-glance-registry-purge-props': False})
self.assertTrue(updated_image['is_public'])

View File

@ -22,10 +22,10 @@ Provides common functionality for integrated unit tests
import random
import string
import nova.image.glance
from nova.log import logging
from nova import service
from nova import test # For the flags
import nova.tests.image.fake
from nova.tests.integrated.api import client
from nova import utils
@ -65,10 +65,7 @@ class _IntegratedTestBase(test.TestCase):
self.flags(**f)
self.flags(verbose=True)
def fake_get_image_service(context, image_href):
image_id = str(image_href).split('/')[-1]
return (nova.image.fake.FakeImageService(), image_id)
self.stubs.Set(nova.image, 'get_image_service', fake_get_image_service)
nova.tests.image.fake.stub_out_image_service(self.stubs)
self.flags(compute_scheduler_driver='nova.scheduler.'
'chance.ChanceScheduler')
@ -84,6 +81,7 @@ class _IntegratedTestBase(test.TestCase):
def tearDown(self):
self.osapi.stop()
nova.tests.image.fake.FakeImageService_reset()
super(_IntegratedTestBase, self).tearDown()
def _start_api_service(self):
@ -108,7 +106,6 @@ class _IntegratedTestBase(test.TestCase):
f['osapi_volume_listen_port'] = 0
f['metadata_listen_port'] = 0
f['image_service'] = 'nova.image.fake.FakeImageService'
f['fake_network'] = True
return f

View File

@ -22,12 +22,12 @@ from nova.compute import utils as compute_utils
from nova import context
from nova import db
from nova import flags
import nova.image.fake
from nova import log as logging
from nova.notifier import test_notifier
from nova.openstack.common import importutils
from nova import test
from nova.tests import fake_network
import nova.tests.image.fake
from nova import utils
@ -61,7 +61,8 @@ class UsageInfoTestCase(test.TestCase):
def fake_show(meh, context, id):
return {'id': 1, 'properties': {'kernel_id': 1, 'ramdisk_id': 1}}
self.stubs.Set(nova.image.fake._FakeImageService, 'show', fake_show)
self.stubs.Set(nova.tests.image.fake._FakeImageService,
'show', fake_show)
def _create_instance(self, params={}):
"""Create a test instance"""

View File

@ -40,6 +40,7 @@ from nova.openstack.common import jsonutils
from nova import test
from nova.tests import fake_libvirt_utils
from nova.tests import fake_network
import nova.tests.image.fake
from nova import utils
from nova.virt import driver
from nova.virt import firewall as base_firewall
@ -427,8 +428,11 @@ class LibvirtConnTestCase(test.TestCase):
self.stubs.Set(libvirt_driver.disk, 'extend', fake_extend)
nova.tests.image.fake.stub_out_image_service(self.stubs)
def tearDown(self):
libvirt_driver.libvirt_utils = libvirt_utils
nova.tests.image.fake.FakeImageService_reset()
super(LibvirtConnTestCase, self).tearDown()
test_instance = {'memory_kb': '1024000',
@ -458,7 +462,6 @@ class LibvirtConnTestCase(test.TestCase):
for key, val in kwargs.items():
fake.__setattr__(key, val)
self.flags(image_service='nova.image.fake.FakeImageService')
self.flags(libvirt_vif_driver="nova.tests.fake_network.FakeVIFDriver")
self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn')
@ -807,10 +810,8 @@ class LibvirtConnTestCase(test.TestCase):
@test.skip_if(missing_libvirt(), "Test requires libvirt")
def test_snapshot_in_ami_format(self):
self.flags(image_service='nova.image.fake.FakeImageService')
# Start test
image_service = importutils.import_object(FLAGS.image_service)
image_service = nova.tests.image.fake.FakeImageService()
# Assign different image_ref from nova/images/fakes for testing ami
test_instance = copy.deepcopy(self.test_instance)
@ -845,10 +846,8 @@ class LibvirtConnTestCase(test.TestCase):
@test.skip_if(missing_libvirt(), "Test requires libvirt")
def test_snapshot_in_raw_format(self):
self.flags(image_service='nova.image.fake.FakeImageService')
# Start test
image_service = importutils.import_object(FLAGS.image_service)
image_service = nova.tests.image.fake.FakeImageService()
# Assuming that base image already exists in image_service
instance_ref = db.instance_create(self.context, self.test_instance)
@ -879,11 +878,10 @@ class LibvirtConnTestCase(test.TestCase):
@test.skip_if(missing_libvirt(), "Test requires libvirt")
def test_snapshot_in_qcow2_format(self):
self.flags(image_service='nova.image.fake.FakeImageService')
self.flags(snapshot_image_format='qcow2')
# Start test
image_service = importutils.import_object(FLAGS.image_service)
image_service = nova.tests.image.fake.FakeImageService()
# Assuming that base image already exists in image_service
instance_ref = db.instance_create(self.context, self.test_instance)
@ -914,10 +912,8 @@ class LibvirtConnTestCase(test.TestCase):
@test.skip_if(missing_libvirt(), "Test requires libvirt")
def test_snapshot_no_image_architecture(self):
self.flags(image_service='nova.image.fake.FakeImageService')
# Start test
image_service = importutils.import_object(FLAGS.image_service)
image_service = nova.tests.image.fake.FakeImageService()
# Assign different image_ref from nova/images/fakes for
# testing different base image
@ -952,10 +948,8 @@ class LibvirtConnTestCase(test.TestCase):
@test.skip_if(missing_libvirt(), "Test requires libvirt")
def test_snapshot_no_original_image(self):
self.flags(image_service='nova.image.fake.FakeImageService')
# Start test
image_service = importutils.import_object(FLAGS.image_service)
image_service = nova.tests.image.fake.FakeImageService()
# Assign a non-existent image
test_instance = copy.deepcopy(self.test_instance)

View File

@ -25,9 +25,9 @@ from nova.compute import vm_states
from nova import context
from nova import db
from nova import flags
import nova.image.fake
from nova import log as logging
from nova import notifications
import nova.network
from nova.notifier import test_notifier
from nova import test
from nova.tests import fake_network

View File

@ -31,6 +31,7 @@ from nova.openstack.common import timeutils
from nova import quota
from nova.scheduler import driver as scheduler_driver
from nova import test
import nova.tests.image.fake
from nova import volume
@ -39,11 +40,6 @@ FLAGS = flags.FLAGS
class QuotaIntegrationTestCase(test.TestCase):
class StubImageService(object):
def show(self, *args, **kwargs):
return {"properties": {}}
def setUp(self):
super(QuotaIntegrationTestCase, self).setUp()
self.flags(compute_driver='nova.virt.fake.FakeDriver',
@ -78,6 +74,11 @@ class QuotaIntegrationTestCase(test.TestCase):
return orig_rpc_call(context, topic, msg)
self.stubs.Set(rpc, 'call', rpc_call_wrapper)
nova.tests.image.fake.stub_out_image_service(self.stubs)
def tearDown(self):
super(QuotaIntegrationTestCase, self).tearDown()
nova.tests.image.fake.FakeImageService_reset()
def _create_instance(self, cores=2):
"""Create a test instance"""
@ -173,8 +174,7 @@ class QuotaIntegrationTestCase(test.TestCase):
metadata=metadata)
def _create_with_injected_files(self, files):
self.flags(image_service='nova.image.fake.FakeImageService')
api = compute.API(image_service=self.StubImageService())
api = compute.API()
inst_type = instance_types.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
api.create(self.context, min_count=1, max_count=1,
@ -182,8 +182,7 @@ class QuotaIntegrationTestCase(test.TestCase):
injected_files=files)
def test_no_injected_files(self):
self.flags(image_service='nova.image.fake.FakeImageService')
api = compute.API(image_service=self.StubImageService())
api = compute.API()
inst_type = instance_types.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
api.create(self.context,

View File

@ -21,10 +21,10 @@ import traceback
from nova.compute.manager import ComputeManager
from nova import exception
from nova import image
from nova import log as logging
from nova.openstack.common import importutils
from nova import test
from nova.tests.image import fake as fake_image
from nova.tests import utils as test_utils
LOG = logging.getLogger(__name__)
@ -102,9 +102,11 @@ class _FakeDriverBackendTestCase(test.TestCase):
# TODO(sdague): it would be nice to do this in a way that only
# the relevant backends where replaced for tests, though this
# should not harm anything by doing it for all backends
fake_image.stub_out_image_service(self.stubs)
self._setup_fakelibvirt()
def tearDown(self):
fake_image.FakeImageService_reset()
self._teardown_fakelibvirt()
super(_FakeDriverBackendTestCase, self).tearDown()
@ -177,7 +179,7 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase):
super(_VirtDriverTestCase, self).setUp()
self.connection = importutils.import_object(self.driver_module, '')
self.ctxt = test_utils.get_test_admin_context()
self.image_service = image.get_default_image_service()
self.image_service = fake_image.FakeImageService()
def _get_running_instance(self):
instance_ref = test_utils.get_test_instance()

View File

@ -24,9 +24,8 @@ from nova import context
from nova import db
from nova import exception
from nova import flags
import nova.image.fake
from nova import test
import nova.tests.api.openstack.fakes as api_fakes
import nova.tests.image.fake
from nova.tests.vmwareapi import db_fakes
from nova.tests.vmwareapi import stubs
from nova.virt.vmwareapi import fake as vmwareapi_fake
@ -78,12 +77,12 @@ class VMWareAPIVMTestCase(test.TestCase):
'disk_format': 'vhd',
'size': 512,
}
api_fakes.stub_out_image_service(self.stubs)
nova.tests.image.fake.stub_out_image_service(self.stubs)
def tearDown(self):
super(VMWareAPIVMTestCase, self).tearDown()
vmwareapi_fake.cleanup()
nova.image.fake.FakeImageService_reset()
nova.tests.image.fake.FakeImageService_reset()
def _create_instance_in_the_db(self):
values = {'name': 1,

View File

@ -20,7 +20,6 @@
from nova import context
from nova import db
from nova import flags
import nova.image.fake
from nova import log as logging
from nova.notifier import test_notifier
from nova.openstack.common import importutils
@ -39,7 +38,7 @@ class UsageInfoTestCase(test.TestCase):
self.flags(compute_driver='nova.virt.fake.FakeDriver',
stub_network=True,
host='fake')
self.stubs.Set(nova.flags.FLAGS, 'notification_driver',
self.stubs.Set(flags.FLAGS, 'notification_driver',
'nova.notifier.test_notifier')
self.volume = importutils.import_object(FLAGS.volume_manager)
self.user_id = 'fake'

View File

@ -29,7 +29,6 @@ from nova import context
from nova import db
from nova import exception
from nova import flags
import nova.image.fake
from nova import log as logging
from nova.openstack.common import importutils
from nova.openstack.common import timeutils
@ -38,6 +37,7 @@ import nova.tests.api.openstack.fakes as api_fakes
from nova.tests.db import fakes as db_fakes
from nova.tests import fake_network
from nova.tests import fake_utils
import nova.tests.image.fake
from nova.tests.xenapi import stubs
from nova.virt.xenapi import connection as xenapi_conn
from nova.virt.xenapi import fake as xenapi_fake
@ -92,7 +92,7 @@ IMAGE_FIXTURES = {
def set_image_fixtures():
image_service = nova.image.fake.FakeImageService()
image_service = nova.tests.image.fake.FakeImageService()
image_service.delete_all()
for image_id, image_meta in IMAGE_FIXTURES.items():
image_meta = image_meta['image_meta']
@ -113,23 +113,23 @@ def stub_vm_utils_with_vdi_attached_here(function, should_return=True):
fake_dev = 'fakedev'
yield fake_dev
def fake_image_service_get(*args, **kwargs):
def fake_image_get(*args, **kwargs):
pass
def fake_is_vdi_pv(*args, **kwargs):
return should_return
orig_vdi_attached_here = vm_utils.vdi_attached_here
orig_image_service_get = nova.image.fake._FakeImageService.get
orig_image_get = nova.tests.image.fake._FakeImageService.get
orig_is_vdi_pv = vm_utils._is_vdi_pv
try:
vm_utils.vdi_attached_here = fake_vdi_attached_here
nova.image.fake._FakeImageService.get = fake_image_service_get
nova.tests.image.fake._FakeImageService.get = fake_image_get
vm_utils._is_vdi_pv = fake_is_vdi_pv
return function(self, *args, **kwargs)
finally:
vm_utils._is_vdi_pv = orig_is_vdi_pv
nova.image.fake._FakeImageService.get = orig_image_service_get
nova.tests.image.fake._FakeImageService.get = orig_image_get
vm_utils.vdi_attached_here = orig_vdi_attached_here
return decorated_function
@ -278,14 +278,14 @@ class XenAPIVMTestCase(test.TestCase):
self.context = context.RequestContext(self.user_id, self.project_id)
self.conn = xenapi_conn.XenAPIDriver(False)
api_fakes.stub_out_image_service(self.stubs)
nova.tests.image.fake.stub_out_image_service(self.stubs)
set_image_fixtures()
stubs.stubout_image_service_get(self.stubs)
stubs.stubout_stream_disk(self.stubs)
def tearDown(self):
super(XenAPIVMTestCase, self).tearDown()
nova.image.fake.FakeImageService_reset()
nova.tests.image.fake.FakeImageService_reset()
def test_init_host(self):
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass')

View File

@ -17,6 +17,7 @@
import nova.context
import nova.db
import nova.flags
from nova.image import glance
FLAGS = nova.flags.FLAGS
@ -30,7 +31,8 @@ def get_test_image_info(context, instance_ref):
context = get_test_admin_context()
image_ref = instance_ref['image_ref']
image_service, image_id = nova.image.get_image_service(context, image_ref)
image_service, image_id = glance.get_remote_image_service(context,
image_ref)
return image_service.show(context, image_id)

View File

@ -19,8 +19,8 @@ import random
from eventlet import tpool
import nova.image.fake
from nova.openstack.common import jsonutils
import nova.tests.image.fake
from nova.virt.xenapi import connection as xenapi_conn
from nova.virt.xenapi import fake
from nova.virt.xenapi import vm_utils
@ -85,7 +85,7 @@ def stubout_get_this_vm_uuid(stubs):
def stubout_image_service_get(stubs):
def fake_get(*args, **kwargs):
pass
stubs.Set(nova.image.fake._FakeImageService, 'get', fake_get)
stubs.Set(nova.tests.image.fake._FakeImageService, 'get', fake_get)
def stubout_stream_disk(stubs):

View File

@ -25,7 +25,7 @@ import os
from nova import exception
from nova import flags
import nova.image
from nova.image import glance
from nova import log as logging
from nova.openstack.common import cfg
from nova import utils
@ -48,8 +48,8 @@ def fetch(context, image_href, path, _user_id, _project_id):
# when it is added to glance. Right now there is no
# auth checking in glance, so we assume that access was
# checked before we got here.
(image_service, image_id) = nova.image.get_image_service(context,
image_href)
(image_service, image_id) = glance.get_remote_image_service(context,
image_href)
with utils.remove_path_on_error(path):
with open(path, "wb") as image_file:
metadata = image_service.get(context, image_id, image_file)

View File

@ -60,7 +60,7 @@ from nova import context as nova_context
from nova import db
from nova import exception
from nova import flags
import nova.image
from nova.image import glance
from nova import log as logging
from nova.openstack.common import cfg
from nova.openstack.common import excutils
@ -698,14 +698,14 @@ class LibvirtDriver(driver.ComputeDriver):
except exception.InstanceNotFound:
raise exception.InstanceNotRunning()
(image_service, image_id) = nova.image.get_image_service(
(image_service, image_id) = glance.get_remote_image_service(
context, instance['image_ref'])
try:
base = image_service.show(context, image_id)
except exception.ImageNotFound:
base = {}
_image_service = nova.image.get_image_service(context, image_href)
_image_service = glance.get_remote_image_service(context, image_href)
snapshot_image_service, snapshot_image_id = _image_service
snapshot = snapshot_image_service.show(context, snapshot_image_id)

View File

@ -39,7 +39,6 @@ from nova.compute import power_state
from nova import db
from nova import exception
from nova import flags
import nova.image
from nova.image import glance
from nova import log as logging
from nova.openstack.common import cfg
@ -869,7 +868,8 @@ def _fetch_image_glance_disk(context, session, instance, image_id, image_type):
else:
sr_ref = safe_find_sr(session)
image_service, image_id = nova.image.get_image_service(context, image_id)
image_service, image_id = glance.get_remote_image_service(
context, image_id)
meta = image_service.show(context, image_id)
virtual_size = int(meta['size'])
vdi_size = virtual_size