def test_volume_glance_metadata_copy_to_volume(self): vol1 = db.volume_create(self.ctxt, {}) vol2 = db.volume_create(self.ctxt, {}) db.volume_glance_metadata_create(self.ctxt, vol1["id"], "m1", "v1") snapshot = db.snapshot_create(self.ctxt, {"volume_id": vol1["id"]}) db.volume_glance_metadata_copy_to_snapshot(self.ctxt, snapshot["id"], vol1["id"]) db.volume_glance_metadata_copy_to_volume(self.ctxt, vol2["id"], snapshot["id"]) metadata = db.volume_glance_metadata_get(self.ctxt, vol2["id"]) metadata = {m["key"]: m["value"] for m in metadata} self.assertEqual(metadata, {"m1": "v1"})
def test_volume_glance_metadata_copy_to_volume(self): vol1 = db.volume_create(self.ctxt, {}) vol2 = db.volume_create(self.ctxt, {}) db.volume_glance_metadata_create(self.ctxt, vol1["id"], "m1", "v1") snapshot = objects.Snapshot(self.ctxt, volume_id=vol1["id"]) snapshot.create() db.volume_glance_metadata_copy_to_snapshot(self.ctxt, snapshot.id, vol1["id"]) db.volume_glance_metadata_copy_to_volume(self.ctxt, vol2["id"], snapshot.id) metadata = db.volume_glance_metadata_get(self.ctxt, vol2["id"]) metadata = {m["key"]: m["value"] for m in metadata} self.assertEqual({"m1": "v1"}, metadata)
def test_volume_glance_metadata_copy_to_volume(self): vol1 = db.volume_create(self.ctxt, {}) vol2 = db.volume_create(self.ctxt, {}) db.volume_glance_metadata_create(self.ctxt, vol1['id'], 'm1', 'v1') snapshot = db.snapshot_create(self.ctxt, {'volume_id': vol1['id']}) db.volume_glance_metadata_copy_to_snapshot(self.ctxt, snapshot['id'], vol1['id']) db.volume_glance_metadata_copy_to_volume(self.ctxt, vol2['id'], snapshot['id']) metadata = db.volume_glance_metadata_get(self.ctxt, vol2['id']) metadata = dict([(m['key'], m['value']) for m in metadata]) self.assertEqual({'m1': 'v1'}, metadata)
def test_volume_glance_metadata_copy_to_volume(self): vol1 = db.volume_create(self.ctxt, {}) vol2 = db.volume_create(self.ctxt, {}) db.volume_glance_metadata_create(self.ctxt, vol1['id'], 'm1', 'v1') snapshot = db.snapshot_create(self.ctxt, {'volume_id': vol1['id']}) db.volume_glance_metadata_copy_to_snapshot(self.ctxt, snapshot['id'], vol1['id']) db.volume_glance_metadata_copy_to_volume(self.ctxt, vol2['id'], snapshot['id']) metadata = db.volume_glance_metadata_get(self.ctxt, vol2['id']) metadata = dict([(m['key'], m['value']) for m in metadata]) self.assertEqual(metadata, {'m1': 'v1'})
def test_vol_glance_metadata_copy_to_snapshot(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {"id": 1}) db.snapshot_create(ctxt, {"id": 100, "volume_id": 1}) db.volume_glance_metadata_create(ctxt, 1, "key1", "value1") db.volume_glance_metadata_copy_to_snapshot(ctxt, 100, 1) expected_meta = {"snapshot_id": "100", "key": "key1", "value": "value1"} for meta in db.volume_snapshot_glance_metadata_get(ctxt, 100): for (key, value) in expected_meta.items(): self.assertEqual(meta[key], value)
def test_volume_glance_metadata_copy_to_volume(self): vol1 = db.volume_create(self.ctxt, {}) vol2 = db.volume_create(self.ctxt, {}) db.volume_glance_metadata_create(self.ctxt, vol1['id'], 'm1', 'v1') snapshot = objects.Snapshot(self.ctxt, volume_id=vol1['id']) snapshot.create() db.volume_glance_metadata_copy_to_snapshot(self.ctxt, snapshot.id, vol1['id']) db.volume_glance_metadata_copy_to_volume(self.ctxt, vol2['id'], snapshot.id) metadata = db.volume_glance_metadata_get(self.ctxt, vol2['id']) metadata = {m['key']: m['value'] for m in metadata} self.assertEqual({'m1': 'v1'}, metadata)
def test_vol_glance_metadata_copy_to_snapshot(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': 1}) db.snapshot_create(ctxt, {'id': 100, 'volume_id': 1}) db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1') db.volume_glance_metadata_copy_to_snapshot(ctxt, 100, 1) expected_meta = {'snapshot_id': '100', 'key': 'key1', 'value': 'value1'} for meta in db.volume_snapshot_glance_metadata_get(ctxt, 100): for (key, value) in expected_meta.items(): self.assertEqual(value, meta[key])
def test_vol_glance_metadata_copy_to_snapshot(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {"id": fake.VOLUME_ID}) snap = objects.Snapshot(ctxt, volume_id=fake.VOLUME_ID) snap.create() db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, "key1", "value1") db.volume_glance_metadata_copy_to_snapshot(ctxt, snap.id, fake.VOLUME_ID) expected_meta = {"snapshot_id": snap.id, "key": "key1", "value": "value1"} for meta in db.volume_snapshot_glance_metadata_get(ctxt, snap.id): for (key, value) in expected_meta.items(): self.assertEqual(value, meta[key]) snap.destroy()
def test_vol_glance_metadata_copy_to_snapshot(self): ctxt = context.get_admin_context() db.volume_create(ctxt, {'id': 1}) snap = objects.Snapshot(ctxt, volume_id=1) snap.create() db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1') db.volume_glance_metadata_copy_to_snapshot(ctxt, snap.id, 1) expected_meta = {'snapshot_id': snap.id, 'key': 'key1', 'value': 'value1'} for meta in db.volume_snapshot_glance_metadata_get(ctxt, snap.id): for (key, value) in expected_meta.items(): self.assertEqual(value, meta[key]) snap.destroy()
client = LunrClient(snapshot, logger=LOG) params = { 'volume': snapshot['volume_id'] } try: client.backups.create(snapshot['id'], **params) except LunrError, e: LOG.debug(_('error creating snapshot %s'), snapshot_id) # Don't leave an error'd snapshot around, the raise here # will notify the caller of the error (See Github Issue #322) db.snapshot_destroy(context, snapshot['id']) raise vol_ref = db.volume_get(context, volume_id) if vol_ref['bootable']: db.volume_glance_metadata_copy_to_snapshot( context, snapshot_id, volume_id) return snapshot def delete_snapshot(self, context, snapshot_id): snapshot = db.snapshot_get(context, snapshot_id) context = context.elevated() LOG.debug(_("snapshot %s: deleting"), snapshot['name']) reserve_opts = {'snapshots': -1} volume = db.volume_get(context, snapshot['volume_id']) try: QUOTAS.add_volume_type_opts(context, reserve_opts, volume.get('volume_type_id')) reservations = QUOTAS.reserve(context,
snapshot = db.snapshot_get(context, snapshot_id) context = context.elevated() client = LunrClient(snapshot, logger=LOG) params = {'volume': snapshot['volume_id']} try: client.backups.create(snapshot['id'], **params) except LunrError, e: LOG.debug(_('error creating snapshot %s'), snapshot_id) # Don't leave an error'd snapshot around, the raise here # will notify the caller of the error (See Github Issue #322) db.snapshot_destroy(context, snapshot['id']) raise vol_ref = db.volume_get(context, volume_id) if vol_ref['bootable']: db.volume_glance_metadata_copy_to_snapshot(context, snapshot_id, volume_id) return snapshot def delete_snapshot(self, context, snapshot_id): snapshot = db.snapshot_get(context, snapshot_id) context = context.elevated() LOG.debug(_("snapshot %s: deleting"), snapshot['name']) reserve_opts = {'snapshots': -1} volume = db.volume_get(context, snapshot['volume_id']) try: QUOTAS.add_volume_type_opts(context, reserve_opts, volume.get('volume_type_id')) reservations = QUOTAS.reserve(context, **reserve_opts) except Exception: