def test_vol_delete_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {"id": fake.VOLUME_ID})
     db.volume_glance_metadata_delete_by_volume(ctxt, fake.VOLUME_ID)
     db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, "key1", "value1")
     db.volume_glance_metadata_delete_by_volume(ctxt, fake.VOLUME_ID)
     self.assertRaises(exception.GlanceMetadataNotFound, db.volume_glance_metadata_get, ctxt, fake.VOLUME_ID)
Esempio n. 2
0
 def test_vol_delete_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 1})
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1')
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     self.assertRaises(exception.GlanceMetadataNotFound,
                       db.volume_glance_metadata_get, ctxt, 1)
    def _add_metadata(self, vol_meta=False, vol_glance_meta=False):
        if vol_meta:
            # Add some VolumeMetadata
            db.volume_metadata_update(self.ctxt, self.volume_id, {"fee": "fi"}, False)
            db.volume_metadata_update(self.ctxt, self.volume_id, {"fo": "fum"}, False)

        if vol_glance_meta:
            # Add some GlanceMetadata
            db.volume_glance_metadata_create(self.ctxt, self.volume_id, "disk_format", "bare")
            db.volume_glance_metadata_create(self.ctxt, self.volume_id, "container_type", "ovf")
 def test_list_detail_volumes_with_limit(self):
     ctxt = context.get_admin_context()
     db.volume_create(
         ctxt, {"id": "fake", "status": "available", "host": "test", "provider_location": "", "size": 1}
     )
     db.volume_glance_metadata_create(ctxt, "fake", "key1", "value1")
     db.volume_glance_metadata_create(ctxt, "fake", "key2", "value2")
     res = self._make_request("/v2/fake/volumes/detail?limit=1")
     self.assertEqual(200, res.status_int)
     self.assertEqual({"key1": "value1", "key2": "value2"}, self._get_image_metadata_list(res.body)[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 = 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)
Esempio n. 7
0
 def test_list_detail_volumes_with_limit(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 'fake', 'status': 'available',
                             'host': 'test', 'provider_location': '',
                             'size': 1})
     db.volume_glance_metadata_create(ctxt, 'fake', 'key1', 'value1')
     db.volume_glance_metadata_create(ctxt, 'fake', 'key2', 'value2')
     res = self._make_request('/v2/fake/volumes/detail?limit=1')
     self.assertEqual(200, res.status_int)
     self.assertEqual({'key1': 'value1', 'key2': 'value2'},
                      self._get_image_metadata_list(res.body)[0])
 def test_list_detail_volumes_with_limit(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 'fake', 'status': 'available',
                             'host': 'test', 'provider_location': '',
                             'size': 1})
     db.volume_glance_metadata_create(ctxt, 'fake', 'key1', 'value1')
     db.volume_glance_metadata_create(ctxt, 'fake', 'key2', 'value2')
     res = self._make_request('/v2/fake/volumes/detail?limit=1')
     self.assertEqual(200, res.status_int)
     self.assertEqual({'key1': 'value1', 'key2': 'value2'},
                      self._get_image_metadata_list(res.body)[0])
    def test_vol_glance_metadata_copy_from_volume_to_volume(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {"id": fake.VOLUME_ID})
        db.volume_create(ctxt, {"id": fake.VOLUME2_ID, "source_volid": fake.VOLUME_ID})
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, "key1", "value1")
        db.volume_glance_metadata_copy_from_volume_to_volume(ctxt, fake.VOLUME_ID, fake.VOLUME2_ID)

        expected_meta = {"key": "key1", "value": "value1"}

        for meta in db.volume_glance_metadata_get(ctxt, fake.VOLUME2_ID):
            for (key, value) in expected_meta.items():
                self.assertEqual(value, meta[key])
    def test_vol_glance_metadata_copy_from_volume_to_volume(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': 1})
        db.volume_create(ctxt, {'id': 100, 'source_volid': 1})
        db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1')
        db.volume_glance_metadata_copy_from_volume_to_volume(ctxt, 1, 100)

        expected_meta = {'key': 'key1', 'value': 'value1'}

        for meta in db.volume_glance_metadata_get(ctxt, 100):
            for (key, value) in expected_meta.items():
                self.assertEqual(meta[key], value)
    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 = 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_from_volume_to_volume(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {"id": 1})
        db.volume_create(ctxt, {"id": 100, "source_volid": 1})
        db.volume_glance_metadata_create(ctxt, 1, "key1", "value1")
        db.volume_glance_metadata_copy_from_volume_to_volume(ctxt, 1, 100)

        expected_meta = {"key": "key1", "value": "value1"}

        for meta in db.volume_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 = 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_vol_delete_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {
         'id': fake.VOLUME_ID,
         'volume_type_id': fake.VOLUME_TYPE_ID
     })
     db.volume_glance_metadata_delete_by_volume(ctxt, fake.VOLUME_ID)
     db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'key1',
                                      'value1')
     db.volume_glance_metadata_delete_by_volume(ctxt, fake.VOLUME_ID)
     self.assertRaises(exception.GlanceMetadataNotFound,
                       db.volume_glance_metadata_get, ctxt, fake.VOLUME_ID)
Esempio n. 16
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)
    def test_vol_glance_metadata_copy_from_volume_to_volume(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': 1})
        db.volume_create(ctxt, {'id': 100, 'source_volid': 1})
        db.volume_glance_metadata_create(ctxt, 1, 'key1', 'value1')
        db.volume_glance_metadata_copy_from_volume_to_volume(ctxt, 1, 100)

        expected_meta = {'key': 'key1',
                         'value': 'value1'}

        for meta in db.volume_glance_metadata_get(ctxt, 100):
            for (key, value) in expected_meta.items():
                self.assertEqual(value, meta[key])
 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)
Esempio n. 19
0
    def test_vol_update_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': 1})
        db.volume_create(ctxt, {'id': 2})
        vol_metadata = db.volume_glance_metadata_create(
            ctxt, 1, 'key1', 'value1')
        vol_metadata = db.volume_glance_metadata_create(
            ctxt, 2, 'key1', 'value1')
        vol_metadata = db.volume_glance_metadata_create(
            ctxt, 2, 'key2', 'value2')
        vol_metadata = db.volume_glance_metadata_create(ctxt, 2, 'key3', 123)

        expected_metadata_1 = {
            'volume_id': '1',
            'key': 'key1',
            'value': 'value1'
        }

        metadata = db.volume_glance_metadata_get(ctxt, 1)
        self.assertEqual(len(metadata), 1)
        for key, value in expected_metadata_1.items():
            self.assertEqual(metadata[0][key], value)

        expected_metadata_2 = ({
            'volume_id': '2',
            'key': 'key1',
            'value': 'value1'
        }, {
            'volume_id': '2',
            'key': 'key2',
            'value': 'value2'
        }, {
            'volume_id': '2',
            'key': 'key3',
            'value': '123'
        })

        metadata = db.volume_glance_metadata_get(ctxt, 2)
        self.assertEqual(len(metadata), 3)
        for expected, meta in zip(expected_metadata_2, metadata):
            for key, value in expected.iteritems():
                self.assertEqual(meta[key], value)

        self.assertRaises(exception.GlanceMetadataExists,
                          db.volume_glance_metadata_create, ctxt, 1, 'key1',
                          'value1a')

        metadata = db.volume_glance_metadata_get(ctxt, 1)
        self.assertEqual(len(metadata), 1)
        for key, value in expected_metadata_1.items():
            self.assertEqual(metadata[0][key], value)
Esempio n. 20
0
    def _create_volume_and_glance_metadata(self):
        ctxt = context.get_admin_context()
        # create a bootable volume
        db.volume_create(
            ctxt, {
                'id': fake.VOLUME_ID,
                'status': 'available',
                'host': 'test',
                'provider_location': '',
                'size': 1
            })
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'image_id',
                                         fake.IMAGE_ID)
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'image_name',
                                         'fake')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'kernel_id',
                                         'somekernel')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'ramdisk_id',
                                         'someramdisk')

        # create an unbootable volume
        db.volume_create(
            ctxt, {
                'id': fake.VOLUME2_ID,
                'status': 'available',
                'host': 'test',
                'provider_location': '',
                'size': 1
            })
    def test_vol_update_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {"id": 1})
        db.volume_create(ctxt, {"id": 2})
        db.volume_glance_metadata_create(ctxt, 1, "key1", "value1")
        db.volume_glance_metadata_create(ctxt, 2, "key1", "value1")
        db.volume_glance_metadata_create(ctxt, 2, "key2", "value2")
        db.volume_glance_metadata_create(ctxt, 2, "key3", 123)

        expected_metadata_1 = {"volume_id": "1", "key": "key1", "value": "value1"}

        metadata = db.volume_glance_metadata_get(ctxt, 1)
        self.assertEqual(len(metadata), 1)
        for key, value in expected_metadata_1.items():
            self.assertEqual(metadata[0][key], value)

        expected_metadata_2 = (
            {"volume_id": "2", "key": "key1", "value": "value1"},
            {"volume_id": "2", "key": "key2", "value": "value2"},
            {"volume_id": "2", "key": "key3", "value": "123"},
        )

        metadata = db.volume_glance_metadata_get(ctxt, 2)
        self.assertEqual(len(metadata), 3)
        for expected, meta in zip(expected_metadata_2, metadata):
            for key, value in expected.items():
                self.assertEqual(meta[key], value)

        self.assertRaises(exception.GlanceMetadataExists, db.volume_glance_metadata_create, ctxt, 1, "key1", "value1a")

        metadata = db.volume_glance_metadata_get(ctxt, 1)
        self.assertEqual(len(metadata), 1)
        for key, value in expected_metadata_1.items():
            self.assertEqual(metadata[0][key], value)
Esempio n. 22
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])
Esempio n. 23
0
    def _create_volume(self, image_metadata=None, **kwargs):
        vol_type = test_utils.create_volume_type(self.project_admin_context,
                                                 name='fake_vol_type',
                                                 testcase_instance=self)

        volume = test_utils.create_volume(self.project_member_context,
                                          volume_type_id=vol_type.id,
                                          testcase_instance=self,
                                          **kwargs)

        for (k, v) in (image_metadata.items() if image_metadata else []):
            db.volume_glance_metadata_create(self.project_admin_context,
                                             volume.id, k, v)
        return volume
    def _add_metadata(self, vol_meta=False, vol_glance_meta=False):
        if vol_meta:
            # Add some VolumeMetadata
            db.volume_metadata_update(self.ctxt, self.volume_id,
                                      {'fee': 'fi'}, False)
            db.volume_metadata_update(self.ctxt, self.volume_id,
                                      {'fo': 'fum'}, False)

        if vol_glance_meta:
            # Add some GlanceMetadata
            db.volume_glance_metadata_create(self.ctxt, self.volume_id,
                                             'disk_format', 'bare')
            db.volume_glance_metadata_create(self.ctxt, self.volume_id,
                                             'container_type', 'ovf')
    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()
Esempio n. 26
0
    def _add_metadata(self, vol_meta=False, vol_glance_meta=False):
        if vol_meta:
            # Add some VolumeMetadata
            db.volume_metadata_update(self.ctxt, self.volume_id, {'fee': 'fi'},
                                      False)
            db.volume_metadata_update(self.ctxt, self.volume_id, {'fo': 'fum'},
                                      False)

        if vol_glance_meta:
            # Add some GlanceMetadata
            db.volume_glance_metadata_create(self.ctxt, self.volume_id,
                                             'disk_format', 'bare')
            db.volume_glance_metadata_create(self.ctxt, self.volume_id,
                                             'container_type', 'ovf')
 def test_list_detail_volumes_with_limit(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': fake.VOLUME_ID, 'status': 'available',
                             'host': 'test', 'provider_location': '',
                             'size': 1,
                             'volume_type_id': fake.VOLUME_TYPE_ID})
     db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID,
                                      'key1', 'value1')
     db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID,
                                      'key2', 'value2')
     res = self._make_request('/v3/%s/volumes/detail?limit=1'
                              % fake.PROJECT_ID)
     self.assertEqual(HTTPStatus.OK, res.status_int)
     self.assertEqual({'key1': 'value1', 'key2': 'value2'},
                      self._get_image_metadata_list(res.body)[0])
Esempio n. 28
0
    def test_vol_update_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': 1})
        db.volume_create(ctxt, {'id': 2})
        vol_metadata = db.volume_glance_metadata_create(ctxt, 1, 'key1',
                                                        'value1')
        vol_metadata = db.volume_glance_metadata_create(ctxt, 2, 'key1',
                                                        'value1')
        vol_metadata = db.volume_glance_metadata_create(ctxt, 2,
                                                        'key2',
                                                        'value2')
        vol_metadata = db.volume_glance_metadata_create(ctxt, 2,
                                                        'key3',
                                                        123)

        expected_metadata_1 = {'volume_id': '1',
                               'key': 'key1',
                               'value': 'value1'}

        metadata = db.volume_glance_metadata_get(ctxt, 1)
        self.assertEqual(len(metadata), 1)
        for key, value in expected_metadata_1.items():
            self.assertEqual(metadata[0][key], value)

        expected_metadata_2 = ({'volume_id': '2',
                                'key': 'key1',
                                'value': 'value1'},
                               {'volume_id': '2',
                                'key': 'key2',
                                'value': 'value2'},
                               {'volume_id': '2',
                                'key': 'key3',
                                'value': '123'})

        metadata = db.volume_glance_metadata_get(ctxt, 2)
        self.assertEqual(len(metadata), 3)
        for expected, meta in zip(expected_metadata_2, metadata):
            for key, value in expected.iteritems():
                self.assertEqual(meta[key], value)

        self.assertRaises(exception.GlanceMetadataExists,
                          db.volume_glance_metadata_create,
                          ctxt, 1, 'key1', 'value1a')

        metadata = db.volume_glance_metadata_get(ctxt, 1)
        self.assertEqual(len(metadata), 1)
        for key, value in expected_metadata_1.items():
            self.assertEqual(metadata[0][key], value)
Esempio n. 29
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()
    def test_vol_update_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {
            'id': fake.VOLUME_ID,
            'volume_type_id': fake.VOLUME_TYPE_ID
        })
        db.volume_create(ctxt, {
            'id': fake.VOLUME2_ID,
            'volume_type_id': fake.VOLUME_TYPE_ID
        })
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'key1',
                                         'value1')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, 'key1',
                                         'value1')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, 'key2',
                                         'value2')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, 'key3', 123)

        expected_metadata_1 = {
            'volume_id': fake.VOLUME_ID,
            'key': 'key1',
            'value': 'value1'
        }

        metadata = db.volume_glance_metadata_get(ctxt, fake.VOLUME_ID)
        self.assertEqual(1, len(metadata))
        for key, value in expected_metadata_1.items():
            self.assertEqual(value, metadata[0][key])

        expected_metadata_2 = ({
            'volume_id': fake.VOLUME2_ID,
            'key': 'key1',
            'value': 'value1'
        }, {
            'volume_id': fake.VOLUME2_ID,
            'key': 'key2',
            'value': 'value2'
        }, {
            'volume_id': fake.VOLUME2_ID,
            'key': 'key3',
            'value': '123'
        })

        metadata = db.volume_glance_metadata_get(ctxt, fake.VOLUME2_ID)
        self.assertEqual(3, len(metadata))
        for expected, meta in zip(expected_metadata_2, metadata):
            for key, value in expected.items():
                self.assertEqual(value, meta[key])

        self.assertRaises(exception.GlanceMetadataExists,
                          db.volume_glance_metadata_create, ctxt,
                          fake.VOLUME_ID, 'key1', 'value1a')

        metadata = db.volume_glance_metadata_get(ctxt, fake.VOLUME_ID)
        self.assertEqual(1, len(metadata))
        for key, value in expected_metadata_1.items():
            self.assertEqual(value, metadata[0][key])
 def _create_volume_and_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(
         ctxt, {"id": "fake", "status": "available", "host": "test", "provider_location": "", "size": 1}
     )
     db.volume_glance_metadata_create(ctxt, "fake", "image_id", "someid")
     db.volume_glance_metadata_create(ctxt, "fake", "image_name", "fake")
     db.volume_glance_metadata_create(ctxt, "fake", "kernel_id", "somekernel")
     db.volume_glance_metadata_create(ctxt, "fake", "ramdisk_id", "someramdisk")
    def test_vol_glance_metadata_copy_from_volume_to_volume(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': fake.VOLUME_ID})
        db.volume_create(ctxt, {
            'id': fake.VOLUME2_ID,
            'source_volid': fake.VOLUME_ID
        })
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'key1',
                                         'value1')
        db.volume_glance_metadata_copy_from_volume_to_volume(
            ctxt, fake.VOLUME_ID, fake.VOLUME2_ID)

        expected_meta = {'key': 'key1', 'value': 'value1'}

        for meta in db.volume_glance_metadata_get(ctxt, fake.VOLUME2_ID):
            for (key, value) in expected_meta.items():
                self.assertEqual(value, meta[key])
Esempio n. 33
0
 def _create_volume_and_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 'fake', 'status': 'available',
                             'host': 'test', 'provider_location': '',
                             'size': 1})
     db.volume_glance_metadata_create(ctxt, 'fake', 'image_id', 'someid')
     db.volume_glance_metadata_create(ctxt, 'fake', 'image_name', 'fake')
     db.volume_glance_metadata_create(ctxt, 'fake', 'kernel_id',
                                      'somekernel')
     db.volume_glance_metadata_create(ctxt, 'fake', 'ramdisk_id',
                                      'someramdisk')
 def _create_volume_and_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 'fake', 'status': 'available',
                             'host': 'test', 'provider_location': '',
                             'size': 1})
     db.volume_glance_metadata_create(ctxt, 'fake', 'image_id', 'someid')
     db.volume_glance_metadata_create(ctxt, 'fake', 'image_name', 'fake')
     db.volume_glance_metadata_create(ctxt, 'fake', 'kernel_id',
                                      'somekernel')
     db.volume_glance_metadata_create(ctxt, 'fake', 'ramdisk_id',
                                      'someramdisk')
 def test_vol_delete_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 1})
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     vol_metadata = db.volume_glance_metadata_create(ctxt, 1, 'key1',
                                                     'value1')
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     metadata = db.volume_glance_metadata_get(ctxt, 1)
     self.assertEqual(len(metadata), 0)
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     metadata = db.volume_glance_metadata_get(ctxt, 1)
     self.assertEqual(len(metadata), 0)
 def test_vol_delete_glance_metadata(self):
     ctxt = context.get_admin_context()
     db.volume_create(ctxt, {'id': 1})
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     vol_metadata = db.volume_glance_metadata_create(
         ctxt, 1, 'key1', 'value1')
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     metadata = db.volume_glance_metadata_get(ctxt, 1)
     self.assertEqual(len(metadata), 0)
     db.volume_glance_metadata_delete_by_volume(ctxt, 1)
     metadata = db.volume_glance_metadata_get(ctxt, 1)
     self.assertEqual(len(metadata), 0)
    def test_vols_get_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {
            'id': fake.VOLUME_ID,
            'volume_type_id': fake.VOLUME_TYPE_ID
        })
        db.volume_create(ctxt, {
            'id': fake.VOLUME2_ID,
            'volume_type_id': fake.VOLUME_TYPE_ID
        })
        db.volume_create(ctxt, {
            'id': '3',
            'volume_type_id': fake.VOLUME_TYPE_ID
        })
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'key1',
                                         'value1')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, 'key2',
                                         'value2')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, 'key22',
                                         'value22')

        metadata = db.volume_glance_metadata_get_all(ctxt)
        self.assertEqual(3, len(metadata))
        self._assert_metadata_equals(fake.VOLUME_ID, 'key1', 'value1',
                                     metadata[0])
        self._assert_metadata_equals(fake.VOLUME2_ID, 'key2', 'value2',
                                     metadata[1])
        self._assert_metadata_equals(fake.VOLUME2_ID, 'key22', 'value22',
                                     metadata[2])
Esempio n. 38
0
    def _create_volume_with_glance_metadata(self):
        basetime = timeutils.utcnow()
        td = datetime.timedelta(minutes=1)

        vol1 = db.volume_create(self.ctxt, {'display_name': 'test1',
                                            'created_at': basetime - 3 * td,
                                            'updated_at': basetime - 2 * td,
                                            'project_id':
                                            self.ctxt.project_id,
                                            'volume_type_id':
                                                fake.VOLUME_TYPE_ID,
                                            'id': fake.VOLUME_ID})
        db.volume_glance_metadata_create(self.ctxt, vol1.id, 'image_name',
                                         'imageTestOne')
        vol2 = db.volume_create(self.ctxt, {'display_name': 'test2',
                                            'created_at': basetime - td,
                                            'updated_at': basetime,
                                            'project_id':
                                            self.ctxt.project_id,
                                            'volume_type_id':
                                                fake.VOLUME_TYPE_ID,
                                            'id': fake.VOLUME2_ID})
        db.volume_glance_metadata_create(self.ctxt, vol2.id, 'image_name',
                                         'imageTestTwo')
        db.volume_glance_metadata_create(self.ctxt, vol2.id, 'disk_format',
                                         'qcow2')
        return [vol1, vol2]
    def _create_volume_and_glance_metadata(self):
        ctxt = context.get_admin_context()
        # create a bootable volume
        db.volume_create(ctxt, {'id': fake.VOLUME_ID, 'status': 'available',
                                'host': 'test', 'provider_location': '',
                                'size': 1})
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID,
                                         'image_id', fake.IMAGE_ID)
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID,
                                         'image_name', 'fake')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'kernel_id',
                                         'somekernel')
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, 'ramdisk_id',
                                         'someramdisk')

        # create an unbootable volume
        db.volume_create(ctxt, {'id': fake.VOLUME2_ID, 'status': 'available',
                                'host': 'test', 'provider_location': '',
                                'size': 1})
Esempio n. 40
0
 def _create_volume_with_glance_metadata(self):
     vol1 = db.volume_create(self.ctxt, {'display_name': 'test1',
                                         'project_id':
                                         self.ctxt.project_id})
     db.volume_glance_metadata_create(self.ctxt, vol1.id, 'image_name',
                                      'imageTestOne')
     vol2 = db.volume_create(self.ctxt, {'display_name': 'test2',
                                         'project_id':
                                         self.ctxt.project_id})
     db.volume_glance_metadata_create(self.ctxt, vol2.id, 'image_name',
                                      'imageTestTwo')
     db.volume_glance_metadata_create(self.ctxt, vol2.id, 'disk_format',
                                      'qcow2')
     return [vol1, vol2]
    def test_vols_get_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': '1'})
        db.volume_create(ctxt, {'id': '2'})
        db.volume_create(ctxt, {'id': '3'})
        db.volume_glance_metadata_create(ctxt, '1', 'key1', 'value1')
        db.volume_glance_metadata_create(ctxt, '2', 'key2', 'value2')
        db.volume_glance_metadata_create(ctxt, '2', 'key22', 'value22')

        metadata = db.volume_glance_metadata_get_all(ctxt)
        self.assertEqual(3, len(metadata))
        self._assert_metadata_equals('1', 'key1', 'value1', metadata[0])
        self._assert_metadata_equals('2', 'key2', 'value2', metadata[1])
        self._assert_metadata_equals('2', 'key22', 'value22', metadata[2])
    def test_vols_get_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {"id": "1"})
        db.volume_create(ctxt, {"id": "2"})
        db.volume_create(ctxt, {"id": "3"})
        db.volume_glance_metadata_create(ctxt, "1", "key1", "value1")
        db.volume_glance_metadata_create(ctxt, "2", "key2", "value2")
        db.volume_glance_metadata_create(ctxt, "2", "key22", "value22")

        metadata = db.volume_glance_metadata_get_all(ctxt)
        self.assertEqual(len(metadata), 3)
        self._assert_metadata_equals("1", "key1", "value1", metadata[0])
        self._assert_metadata_equals("2", "key2", "value2", metadata[1])
        self._assert_metadata_equals("2", "key22", "value22", metadata[2])
Esempio n. 43
0
    def test_vols_get_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {'id': '1'})
        db.volume_create(ctxt, {'id': '2'})
        db.volume_create(ctxt, {'id': '3'})
        db.volume_glance_metadata_create(ctxt, '1', 'key1', 'value1')
        db.volume_glance_metadata_create(ctxt, '2', 'key2', 'value2')
        db.volume_glance_metadata_create(ctxt, '2', 'key22', 'value22')

        metadata = db.volume_glance_metadata_get_all(ctxt)
        self.assertEqual(3, len(metadata))
        self._assert_metadata_equals('1', 'key1', 'value1', metadata[0])
        self._assert_metadata_equals('2', 'key2', 'value2', metadata[1])
        self._assert_metadata_equals('2', 'key22', 'value22', metadata[2])
Esempio n. 44
0
 def _create_volume_with_glance_metadata(self):
     vol1 = db.volume_create(self.ctxt, {'display_name': 'test1',
                                         'project_id':
                                         self.ctxt.project_id})
     db.volume_glance_metadata_create(self.ctxt, vol1.id, 'image_name',
                                      'imageTestOne')
     vol2 = db.volume_create(self.ctxt, {'display_name': 'test2',
                                         'project_id':
                                         self.ctxt.project_id})
     db.volume_glance_metadata_create(self.ctxt, vol2.id, 'image_name',
                                      'imageTestTwo')
     db.volume_glance_metadata_create(self.ctxt, vol2.id, 'disk_format',
                                      'qcow2')
     return [vol1, vol2]
    def test_vols_get_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {"id": fake.VOLUME_ID})
        db.volume_create(ctxt, {"id": fake.VOLUME2_ID})
        db.volume_create(ctxt, {"id": "3"})
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, "key1", "value1")
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, "key2", "value2")
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, "key22", "value22")

        metadata = db.volume_glance_metadata_get_all(ctxt)
        self.assertEqual(3, len(metadata))
        self._assert_metadata_equals(fake.VOLUME_ID, "key1", "value1", metadata[0])
        self._assert_metadata_equals(fake.VOLUME2_ID, "key2", "value2", metadata[1])
        self._assert_metadata_equals(fake.VOLUME2_ID, "key22", "value22", metadata[2])
    def test_vol_update_glance_metadata(self):
        ctxt = context.get_admin_context()
        db.volume_create(ctxt, {"id": fake.VOLUME_ID})
        db.volume_create(ctxt, {"id": fake.VOLUME2_ID})
        db.volume_glance_metadata_create(ctxt, fake.VOLUME_ID, "key1", "value1")
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, "key1", "value1")
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, "key2", "value2")
        db.volume_glance_metadata_create(ctxt, fake.VOLUME2_ID, "key3", 123)

        expected_metadata_1 = {"volume_id": fake.VOLUME_ID, "key": "key1", "value": "value1"}

        metadata = db.volume_glance_metadata_get(ctxt, fake.VOLUME_ID)
        self.assertEqual(1, len(metadata))
        for key, value in expected_metadata_1.items():
            self.assertEqual(value, metadata[0][key])

        expected_metadata_2 = (
            {"volume_id": fake.VOLUME2_ID, "key": "key1", "value": "value1"},
            {"volume_id": fake.VOLUME2_ID, "key": "key2", "value": "value2"},
            {"volume_id": fake.VOLUME2_ID, "key": "key3", "value": "123"},
        )

        metadata = db.volume_glance_metadata_get(ctxt, fake.VOLUME2_ID)
        self.assertEqual(3, len(metadata))
        for expected, meta in zip(expected_metadata_2, metadata):
            for key, value in expected.items():
                self.assertEqual(value, meta[key])

        self.assertRaises(
            exception.GlanceMetadataExists, db.volume_glance_metadata_create, ctxt, fake.VOLUME_ID, "key1", "value1a"
        )

        metadata = db.volume_glance_metadata_get(ctxt, fake.VOLUME_ID)
        self.assertEqual(1, len(metadata))
        for key, value in expected_metadata_1.items():
            self.assertEqual(value, metadata[0][key])
Esempio n. 47
0
    def create_volume(self,
                      context,
                      volume_id,
                      snapshot_id=None,
                      image_id=None,
                      source_volid=None,
                      **kwargs):
        context = context.elevated()
        volume = db.volume_get(context, volume_id)
        LOG.info(_("volume %s: creating"), volume['name'])
        model_update = {'host': 'lunr'}
        volume['host'] = 'lunr'
        try:
            # Try to get the volume type name, else use the default volume type
            volume_type_name = volume['volume_type']['name']
        except (KeyError, TypeError):
            volume_type_name = CONF.lunr_default_volume_type
            # Using the default volume type name,
            # ask the db for the volume type id
            vtype_id = self._get_volume_type_id(volume_type_name)
            model_update['volume_type_id'] = vtype_id
            volume['volume_type_id'] = vtype_id

        db.volume_update(context, volume['id'], model_update)

        params = {
            'name': volume['id'],
            'size': volume['size'],
            'volume_type_name': volume_type_name,
        }

        # Copy image to volume!
        if image_id:
            params['image_id'] = image_id
            image_service, image_id = glance.get_remote_image_service(
                context, image_id)
            image_meta = image_service.show(context, image_id)
            if image_meta:
                db.volume_glance_metadata_create(context, volume['id'],
                                                 'image_id', image_id)
                name = image_meta.get('name', None)
                if name:
                    db.volume_glance_metadata_create(context, volume['id'],
                                                     'image_name', name)
                image_properties = image_meta.get('properties', {})
                for key, value in image_properties.items():
                    db.volume_glance_metadata_create(context, volume['id'],
                                                     key, value)

        # If this is a snapshot request, add the backup param
        if snapshot_id:
            params['backup'] = snapshot_id
            snapshot_ref = db.snapshot_get(context, snapshot_id)
            original_vref = db.volume_get(context, snapshot_ref['volume_id'])
            if original_vref['bootable']:
                db.volume_glance_metadata_copy_to_volume(
                    context, volume_id, snapshot_id)
                db.volume_update(context, volume_id, {'bootable': True})

        # If this is a clone request, add the source_volume_id param
        if source_volid:
            params['source_volume'] = source_volid
            source_vref = db.volume_get(context, source_volid)
            if source_vref['bootable']:
                db.volume_glance_metadata_copy_from_volume_to_volume(
                    context, source_volid, volume_id)
                db.volume_update(context, volume_id, {'bootable': True})

        try:
            resp = LunrClient(volume, logger=LOG).volumes.create(
                volume['id'], **params)
        except LunrError, e:
            LOG.debug('error creating volume %s', volume['id'])
            # Don't leave an error'd volume around, the raise here
            # will notify the caller of the error (See Github Issue #343)
            # Also, in Havana, TaskFlow will revert the quota increase.
            db.volume_destroy(context, volume['id'])
            raise e
Esempio n. 48
0
    def create_volume(self, context, volume_id, snapshot_id=None,
                      image_id=None, source_volid=None, **kwargs):
        context = context.elevated()
        volume = db.volume_get(context, volume_id)
        LOG.info(_("volume %s: creating"), volume['name'])
        model_update = {'host': 'lunr'}
        volume['host'] = 'lunr'
        try:
            # Try to get the volume type name, else use the default volume type
            volume_type_name = volume['volume_type']['name']
        except (KeyError, TypeError):
            volume_type_name = CONF.lunr_default_volume_type
            # Using the default volume type name,
            # ask the db for the volume type id
            vtype_id = self._get_volume_type_id(volume_type_name)
            model_update['volume_type_id'] = vtype_id
            volume['volume_type_id'] = vtype_id

        db.volume_update(context, volume['id'], model_update)

        params = {
            'name': volume['id'],
            'size': volume['size'],
            'volume_type_name': volume_type_name,
        }

        # Copy image to volume!
        if image_id:
            params['image_id'] = image_id
            image_service, image_id = glance.get_remote_image_service(context,
                                                                      image_id)
            image_meta = image_service.show(context, image_id)
            if image_meta:
                db.volume_glance_metadata_create(context, volume['id'],
                                                 'image_id', image_id)
                name = image_meta.get('name', None)
                if name:
                    db.volume_glance_metadata_create(context, volume['id'],
                                                     'image_name', name)
                image_properties = image_meta.get('properties', {})
                for key, value in image_properties.items():
                    db.volume_glance_metadata_create(context, volume['id'],
                                                     key, value)

        # If this is a snapshot request, add the backup param
        if snapshot_id:
            params['backup'] = snapshot_id
            snapshot_ref = db.snapshot_get(context, snapshot_id)
            original_vref = db.volume_get(context, snapshot_ref['volume_id'])
            if original_vref['bootable']:
                db.volume_glance_metadata_copy_to_volume(
                    context, volume_id, snapshot_id)
                db.volume_update(context, volume_id, {'bootable': True})

        # If this is a clone request, add the source_volume_id param
        if source_volid:
            params['source_volume'] = source_volid
            source_vref = db.volume_get(context, source_volid)
            if source_vref['bootable']:
                db.volume_glance_metadata_copy_from_volume_to_volume(
                    context, source_volid, volume_id)
                db.volume_update(context, volume_id, {'bootable': True})

        try:
            resp = LunrClient(volume, logger=LOG).volumes.create(
                volume['id'], **params)
        except LunrError, e:
            LOG.debug('error creating volume %s', volume['id'])
            # Don't leave an error'd volume around, the raise here
            # will notify the caller of the error (See Github Issue #343)
            # Also, in Havana, TaskFlow will revert the quota increase.
            db.volume_destroy(context, volume['id'])
            raise e