def test_list_volume_mappings_with_filters(self, mock_ins, mock_write, mock_read): mock_ins.return_value = etcd_api.get_backend() mock_read.side_effect = etcd.EtcdKeyNotFound volume_mapping1 = utils.create_test_volume_mapping( name='volume_mapping1', uuid=uuidutils.generate_uuid(), context=self.context) volume_mapping2 = utils.create_test_volume_mapping( name='volume_mapping2', uuid=uuidutils.generate_uuid(), context=self.context, ) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult( [volume_mapping1.as_dict(), volume_mapping2.as_dict()]) res = dbapi.list_volume_mappings( self.context, filters={'uuid': volume_mapping1.uuid}) self.assertEqual([volume_mapping1.id], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'uuid': volume_mapping2.uuid}) self.assertEqual([volume_mapping2.id], [r.id for r in res]) res = dbapi.list_volume_mappings(self.context, filters={'uuid': 'unknow-uuid'}) self.assertEqual([], [r.id for r in res])
def test_list_volume_mappings_with_filters(self): volume_mapping1 = utils.create_test_volume_mapping( volume_provider='provider-one', uuid=uuidutils.generate_uuid(), context=self.context) volume_mapping2 = utils.create_test_volume_mapping( volume_provider='provider-two', uuid=uuidutils.generate_uuid(), context=self.context) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': 'provider-one'}) self.assertEqual([volume_mapping1.id], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': 'provider-two'}) self.assertEqual([volume_mapping2.id], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': 'bad-provider'}) self.assertEqual([], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': volume_mapping1.volume_provider}) self.assertEqual([volume_mapping1.id], [r.id for r in res])
def list(cls, context, limit=None, marker=None, sort_key=None, sort_dir=None, filters=None): """Return a list of VolumeMapping objects. :param context: Security context. :param limit: maximum number of resources to return in a single result. :param marker: pagination marker for large data sets. :param sort_key: column to sort results by. :param sort_dir: direction to sort. "asc" or "desc". :param filters: filters when list volume mappings. :returns: a list of :class:`VolumeMapping` object. """ db_volumes = dbapi.list_volume_mappings(context, limit=limit, marker=marker, sort_key=sort_key, sort_dir=sort_dir, filters=filters) return VolumeMapping._from_db_object_list(db_volumes, cls, context)
def test_list_volume_mappings(self): uuids = [] for i in range(1, 6): volume_mapping = utils.create_test_volume_mapping( uuid=uuidutils.generate_uuid(), context=self.context) uuids.append(six.text_type(volume_mapping['uuid'])) res = dbapi.list_volume_mappings(self.context) res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), sorted(res_uuids))
def test_list_volume_mappings_with_filters(self): volume1 = utils.create_test_volume( id=1, volume_provider='provider-one', uuid=uuidutils.generate_uuid(), context=self.context) volume_mapping1 = utils.create_test_volume_mapping( id=1, volume_id=volume1.id, uuid=uuidutils.generate_uuid(), context=self.context) volume2 = utils.create_test_volume( id=2, volume_provider='provider-two', uuid=uuidutils.generate_uuid(), context=self.context) volume_mapping2 = utils.create_test_volume_mapping( id=2, uuid=uuidutils.generate_uuid(), volume_id=volume2.id, context=self.context) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': 'provider-one'}) self.assertEqual([volume_mapping1.id], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': 'provider-two'}) self.assertEqual([volume_mapping2.id], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': 'bad-provider'}) self.assertEqual([], [r.id for r in res]) res = dbapi.list_volume_mappings( self.context, filters={'volume_provider': volume1.volume_provider}) self.assertEqual([volume_mapping1.id], [r.id for r in res])
def test_list_volume_mappings_sorted(self): uuids = [] for i in range(5): volume_mapping = utils.create_test_volume_mapping( uuid=uuidutils.generate_uuid(), context=self.context) uuids.append(six.text_type(volume_mapping.uuid)) res = dbapi.list_volume_mappings(self.context, sort_key='uuid') res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), res_uuids) self.assertRaises(exception.InvalidParameterValue, dbapi.list_volume_mappings, self.context, sort_key='foo')
def test_list_volume_mappings(self): uuids = [] for i in range(1, 6): volume = utils.create_test_volume( uuid=uuidutils.generate_uuid(), context=self.context) volume_mapping = utils.create_test_volume_mapping( uuid=uuidutils.generate_uuid(), volume_id=volume.id, context=self.context) uuids.append(six.text_type(volume_mapping['uuid'])) res = dbapi.list_volume_mappings(self.context) res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), sorted(res_uuids))
def test_list_volume_mappings(self, mock_write, mock_read): uuids = [] volume_mappings = [] mock_read.side_effect = etcd.EtcdKeyNotFound for i in range(0, 6): volume_mapping = utils.create_test_volume_mapping( uuid=uuidutils.generate_uuid(), context=self.context, name='volume_mapping' + str(i)) volume_mappings.append(volume_mapping.as_dict()) uuids.append(six.text_type(volume_mapping['uuid'])) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult( volume_mappings) res = dbapi.list_volume_mappings(self.context) res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), sorted(res_uuids))
def list(cls, context, limit=None, marker=None, sort_key=None, sort_dir=None, filters=None): """Return a list of VolumeMapping objects. :param context: Security context. :param limit: maximum number of resources to return in a single result. :param marker: pagination marker for large data sets. :param sort_key: column to sort results by. :param sort_dir: direction to sort. "asc" or "desc". :param filters: filters when list volume mappings. :returns: a list of :class:`VolumeMapping` object. """ db_volumes = dbapi.list_volume_mappings( context, limit=limit, marker=marker, sort_key=sort_key, sort_dir=sort_dir, filters=filters) return VolumeMapping._from_db_object_list(db_volumes, cls, context)
def test_list_volume_mappings_sorted(self): uuids = [] for i in range(5): volume = utils.create_test_volume( uuid=uuidutils.generate_uuid(), context=self.context) volume_mapping = utils.create_test_volume_mapping( uuid=uuidutils.generate_uuid(), volume_id=volume.id, context=self.context) uuids.append(six.text_type(volume_mapping.uuid)) res = dbapi.list_volume_mappings(self.context, sort_key='uuid') res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), res_uuids) self.assertRaises(exception.InvalidParameterValue, dbapi.list_volume_mappings, self.context, sort_key='foo')
def test_list_volume_mappings_sorted(self, mock_ins, mock_write, mock_read): uuids = [] volume_mappings = [] mock_ins.return_value = etcd_api.get_backend() mock_read.side_effect = etcd.EtcdKeyNotFound for i in range(0, 6): volume_mapping = utils.create_test_volume_mapping( uuid=uuidutils.generate_uuid(), context=self.context, name='volume_mapping' + str(i)) volume_mappings.append(volume_mapping.as_dict()) uuids.append(six.text_type(volume_mapping['uuid'])) mock_read.side_effect = lambda *args: FakeEtcdMultipleResult( volume_mappings) res = dbapi.list_volume_mappings(self.context, sort_key='uuid') res_uuids = [r.uuid for r in res] self.assertEqual(sorted(uuids), res_uuids) self.assertRaises(exception.InvalidParameterValue, dbapi.list_volume_mappings, self.context, sort_key='wrong_key')
def list_by_volume(cls, context, volume_id): filters = {'volume_id': volume_id} db_volumes = dbapi.list_volume_mappings(context, filters=filters) return VolumeMapping._from_db_object_list(db_volumes, cls, context)
def list_by_container(cls, context, container_uuid): filters = {'container_uuid': container_uuid} db_volumes = dbapi.list_volume_mappings(context, filters=filters) return VolumeMapping._from_db_object_list(db_volumes, cls, context)
def list_by_cinder_volume(cls, context, cinder_volume_id): filters = {'cinder_volume_id': cinder_volume_id} db_volumes = dbapi.list_volume_mappings(context, filters=filters) return VolumeMapping._from_db_object_list(db_volumes, cls, context)