~0x44/nova/extdoc

« back to all changes in this revision

Viewing changes to nova/tests/api/openstack/fakes.py

  • Committer: Tarmac
  • Author(s): Brian Waldon
  • Date: 2011-09-13 15:23:15 UTC
  • mfrom: (1517.2.17 image-service-cleanup)
  • Revision ID: tarmac-20110913152315-a21jg0bvjjlyga82
- remove translation of non-recognized attributes to user metadata, now just ignored
- ensure all keys are defined in image dictionaries, defaulting to None if glance client doesn't provide one
- remove BaseImageService
- reorganize some GlanceImageService tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
from nova.auth.manager import User, Project
41
41
import nova.image.fake
42
42
from nova.image import glance
43
 
from nova.image import service
44
43
from nova.tests import fake_flags
 
44
from nova.tests.glance import stubs as glance_stubs
45
45
 
46
46
 
47
47
class Context(object):
83
83
        if fake_auth_context is not None:
84
84
            ctxt = fake_auth_context
85
85
        else:
86
 
            ctxt = context.RequestContext('fake', 'fake')
 
86
            ctxt = context.RequestContext('fake', 'fake', auth_token=True)
87
87
        api10 = openstack.FaultWrapper(api_auth.InjectContext(ctxt,
88
88
              limits.RateLimitingMiddleware(inner_app10)))
89
89
        api11 = openstack.FaultWrapper(api_auth.InjectContext(ctxt,
177
177
    stubs.Set(nova.compute.API, 'backup', backup)
178
178
 
179
179
 
 
180
def _make_image_fixtures():
 
181
    NOW_GLANCE_FORMAT = "2010-10-11T10:30:22"
 
182
 
 
183
    image_id = 123
 
184
    base_attrs = {'deleted': False}
 
185
 
 
186
    fixtures = []
 
187
 
 
188
    def add_fixture(**kwargs):
 
189
        kwargs.update(base_attrs)
 
190
        fixtures.append(kwargs)
 
191
 
 
192
    # Public image
 
193
    add_fixture(id=image_id, name='public image', is_public=True,
 
194
                status='active', properties={'key1': 'value1'})
 
195
    image_id += 1
 
196
 
 
197
    # Snapshot for User 1
 
198
    server_ref = 'http://localhost/v1.1/servers/42'
 
199
    snapshot_properties = {'instance_ref': server_ref, 'user_id': 'fake'}
 
200
    for status in ('queued', 'saving', 'active', 'killed',
 
201
                   'deleted', 'pending_delete'):
 
202
        add_fixture(id=image_id, name='%s snapshot' % status,
 
203
                    is_public=False, status=status,
 
204
                    properties=snapshot_properties)
 
205
        image_id += 1
 
206
 
 
207
    # Image without a name
 
208
    add_fixture(id=image_id, is_public=True, status='active', properties={})
 
209
 
 
210
    return fixtures
 
211
 
 
212
 
180
213
def stub_out_glance_add_image(stubs, sent_to_glance):
181
214
    """
182
215
    We return the metadata sent to glance by modifying the sent_to_glance dict
192
225
    stubs.Set(glance_client.Client, 'add_image', fake_add_image)
193
226
 
194
227
 
195
 
def stub_out_glance(stubs, initial_fixtures=None):
196
 
 
197
 
    class FakeGlanceClient:
198
 
 
199
 
        def __init__(self, initial_fixtures):
200
 
            self.fixtures = initial_fixtures or []
201
 
 
202
 
        def _filter_images(self, filters=None, marker=None, limit=None):
203
 
            found = True
204
 
            if marker:
205
 
                found = False
206
 
            if limit == 0:
207
 
                limit = None
208
 
 
209
 
            fixtures = []
210
 
            count = 0
211
 
            for f in self.fixtures:
212
 
                if limit and count >= limit:
213
 
                    break
214
 
                if found:
215
 
                    fixtures.append(f)
216
 
                    count = count + 1
217
 
                if f['id'] == marker:
218
 
                    found = True
219
 
 
220
 
            return fixtures
221
 
 
222
 
        def fake_get_images(self, filters=None, marker=None, limit=None):
223
 
            fixtures = self._filter_images(filters, marker, limit)
224
 
            return [dict(id=f['id'], name=f['name'])
225
 
                    for f in fixtures]
226
 
 
227
 
        def fake_get_images_detailed(self, filters=None,
228
 
                                     marker=None, limit=None):
229
 
            return self._filter_images(filters, marker, limit)
230
 
 
231
 
        def fake_get_image_meta(self, image_id):
232
 
            image = self._find_image(image_id)
233
 
            if image:
234
 
                return copy.deepcopy(image)
235
 
            raise glance_exc.NotFound
236
 
 
237
 
        def fake_add_image(self, image_meta, data=None):
238
 
            image_meta = copy.deepcopy(image_meta)
239
 
            image_id = ''.join(random.choice(string.letters)
240
 
                               for _ in range(20))
241
 
            image_meta['id'] = image_id
242
 
            self.fixtures.append(image_meta)
243
 
            return copy.deepcopy(image_meta)
244
 
 
245
 
        def fake_update_image(self, image_id, image_meta, data=None):
246
 
            for attr in ('created_at', 'updated_at', 'deleted_at', 'deleted'):
247
 
                if attr in image_meta:
248
 
                    del image_meta[attr]
249
 
 
250
 
            f = self._find_image(image_id)
251
 
            if not f:
252
 
                raise glance_exc.NotFound
253
 
 
254
 
            f.update(image_meta)
255
 
            return copy.deepcopy(f)
256
 
 
257
 
        def fake_delete_image(self, image_id):
258
 
            f = self._find_image(image_id)
259
 
            if not f:
260
 
                raise glance_exc.NotFound
261
 
 
262
 
            self.fixtures.remove(f)
263
 
 
264
 
        def _find_image(self, image_id):
265
 
            for f in self.fixtures:
266
 
                if str(f['id']) == str(image_id):
267
 
                    return f
268
 
            return None
269
 
 
270
 
    GlanceClient = glance_client.Client
271
 
    fake = FakeGlanceClient(initial_fixtures)
272
 
 
273
 
    stubs.Set(GlanceClient, 'get_images', fake.fake_get_images)
274
 
    stubs.Set(GlanceClient, 'get_images_detailed',
275
 
              fake.fake_get_images_detailed)
276
 
    stubs.Set(GlanceClient, 'get_image_meta', fake.fake_get_image_meta)
277
 
    stubs.Set(GlanceClient, 'add_image', fake.fake_add_image)
278
 
    stubs.Set(GlanceClient, 'update_image', fake.fake_update_image)
279
 
    stubs.Set(GlanceClient, 'delete_image', fake.fake_delete_image)
 
228
def stub_out_glance(stubs):
 
229
    def fake_get_image_service():
 
230
        client = glance_stubs.StubGlanceClient(_make_image_fixtures())
 
231
        return nova.image.glance.GlanceImageService(client)
 
232
    stubs.Set(nova.image, 'get_default_image_service', fake_get_image_service)
280
233
 
281
234
 
282
235
class FakeToken(object):