177
177
stubs.Set(nova.compute.API, 'backup', backup)
180
def _make_image_fixtures():
181
NOW_GLANCE_FORMAT = "2010-10-11T10:30:22"
184
base_attrs = {'deleted': False}
188
def add_fixture(**kwargs):
189
kwargs.update(base_attrs)
190
fixtures.append(kwargs)
193
add_fixture(id=image_id, name='public image', is_public=True,
194
status='active', properties={'key1': 'value1'})
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)
207
# Image without a name
208
add_fixture(id=image_id, is_public=True, status='active', properties={})
180
213
def stub_out_glance_add_image(stubs, sent_to_glance):
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)
195
def stub_out_glance(stubs, initial_fixtures=None):
197
class FakeGlanceClient:
199
def __init__(self, initial_fixtures):
200
self.fixtures = initial_fixtures or []
202
def _filter_images(self, filters=None, marker=None, limit=None):
211
for f in self.fixtures:
212
if limit and count >= limit:
217
if f['id'] == marker:
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'])
227
def fake_get_images_detailed(self, filters=None,
228
marker=None, limit=None):
229
return self._filter_images(filters, marker, limit)
231
def fake_get_image_meta(self, image_id):
232
image = self._find_image(image_id)
234
return copy.deepcopy(image)
235
raise glance_exc.NotFound
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)
241
image_meta['id'] = image_id
242
self.fixtures.append(image_meta)
243
return copy.deepcopy(image_meta)
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:
250
f = self._find_image(image_id)
252
raise glance_exc.NotFound
255
return copy.deepcopy(f)
257
def fake_delete_image(self, image_id):
258
f = self._find_image(image_id)
260
raise glance_exc.NotFound
262
self.fixtures.remove(f)
264
def _find_image(self, image_id):
265
for f in self.fixtures:
266
if str(f['id']) == str(image_id):
270
GlanceClient = glance_client.Client
271
fake = FakeGlanceClient(initial_fixtures)
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)
282
235
class FakeToken(object):