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)
예제 #7
0
 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)
예제 #8
0
    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()
예제 #10
0
    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()
예제 #11
0
        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,
예제 #12
0
        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: