コード例 #1
0
    def test_get_values(self):
        ctxt = context.get_admin_context()
        fake_field = 'fake_field'

        with mock.patch.object(
                model_query, 'get_values') as get_values:
            api.get_values(FakeObj, ctxt, fake_field)
        get_values.assert_called_with(
            ctxt, FakeObj.db_model, fake_field, filters={})
コード例 #2
0
ファイル: test_api.py プロジェクト: igordcard/neutron
    def test_get_values(self):
        ctxt = context.get_admin_context()
        fake_field = 'fake_field'

        with mock.patch.object(
                model_query, 'get_values') as get_values:
            api.get_values(FakeObj, ctxt, fake_field)
        get_values.assert_called_with(
            ctxt, FakeObj.db_model, fake_field, filters={})
コード例 #3
0
    def get_values(cls, context, field, validate_filters=True, **kwargs):
        """Fetch a list of values of a specific object's field

        Fetch a specific column from DB.

        :param context:
        :param field: a specific field of the object
        :param validate_filters: Raises an error in case of passing an unknown
                                 filter
        :param kwargs: multiple keys defined by key=value pairs
        :return: list of objects of NeutronDbObject class or empty list
        """
        cls._validate_field(field)
        db_field = cls.fields_need_translation.get(field, field)
        if validate_filters:
            cls.validate_filters(**kwargs)
        with cls.db_context_reader(context):
            db_values = obj_db_api.get_values(
                cls, context, db_field, **cls.modify_fields_to_db(kwargs))
            obj = cls(context)
            values = []
            for db_value in db_values:
                value = cls.modify_fields_from_db({
                    db_field: db_value
                }).get(field)
                value = cls.fields[field].coerce(obj, field, value)
                values.append(value)

            return values
コード例 #4
0
ファイル: base.py プロジェクト: openstack/neutron
    def get_values(cls, context, field, validate_filters=True, **kwargs):
        """Fetch a list of values of a specific object's field

        Fetch a specific column from DB.

        :param context:
        :param field: a specific field of the object
        :param validate_filters: Raises an error in case of passing an unknown
                                 filter
        :param kwargs: multiple keys defined by key=value pairs
        :return: list of objects of NeutronDbObject class or empty list
        """
        cls._validate_field(field)
        db_field = cls.fields_need_translation.get(field, field)
        if validate_filters:
            cls.validate_filters(**kwargs)
        with cls.db_context_reader(context):
            db_values = obj_db_api.get_values(
                cls, context, db_field, **cls.modify_fields_to_db(kwargs))
            obj = cls(context)
            values = []
            for db_value in db_values:
                value = cls.modify_fields_from_db({
                    db_field: db_value}).get(field)
                value = cls.fields[field].coerce(obj, field, value)
                values.append(value)

            return values
コード例 #5
0
 def test_get_values_with_None_value_in_filters(self):
     api.create_object(self.obj_cls, self.ctxt, {'name': 'foo'})
     values = api.get_values(self.obj_cls,
                             self.ctxt,
                             'name',
                             name='foo',
                             status=None)
     self.assertEqual('foo', values[0])
コード例 #6
0
    def test_get_values_with_string_matching_filters_ends(self):
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj1_end'})
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj2_end'})
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj_3'})

        values = api.get_values(
            self.obj_cls, self.ctxt, 'name', name=obj_utils.StringEnds('end'))
        self.assertEqual(2, len(values))
        self.assertIn('obj1_end', values)
        self.assertIn('obj2_end', values)
        self.assertNotIn('obj_3', values)
コード例 #7
0
ファイル: test_api.py プロジェクト: igordcard/neutron
    def test_get_values_with_string_matching_filters_ends(self):
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj1_end'})
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj2_end'})
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj_3'})

        values = api.get_values(
            self.obj_cls, self.ctxt, 'name', name=obj_utils.StringEnds('end'))
        self.assertEqual(2, len(values))
        self.assertIn('obj1_end', values)
        self.assertIn('obj2_end', values)
        self.assertNotIn('obj_3', values)
コード例 #8
0
    def test_get_values_with_string_matching_filters_contains(self):
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj_con_1'})
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj_con_2'})
        api.create_object(self.obj_cls, self.ctxt, {'name': 'obj_3'})

        values = api.get_values(self.obj_cls,
                                self.ctxt,
                                'name',
                                name=obj_utils.StringContains('con'))
        self.assertEqual(2, len(values))
        self.assertIn('obj_con_1', values)
        self.assertIn('obj_con_2', values)
        self.assertNotIn('obj_3', values)
コード例 #9
0
ファイル: test_api.py プロジェクト: igordcard/neutron
    def test_get_values_with_string_matching_filters_contains(self):
        api.create_object(
            self.obj_cls, self.ctxt, {'name': 'obj_con_1'})
        api.create_object(
            self.obj_cls, self.ctxt, {'name': 'obj_con_2'})
        api.create_object(
            self.obj_cls, self.ctxt, {'name': 'obj_3'})

        values = api.get_values(
            self.obj_cls, self.ctxt, 'name',
            name=obj_utils.StringContains('con'))
        self.assertEqual(2, len(values))
        self.assertIn('obj_con_1', values)
        self.assertIn('obj_con_2', values)
        self.assertNotIn('obj_3', values)
コード例 #10
0
ファイル: test_api.py プロジェクト: igordcard/neutron
 def test_get_values_with_None_value_in_filters(self):
     api.create_object(self.obj_cls, self.ctxt, {'name': 'foo'})
     values = api.get_values(
         self.obj_cls, self.ctxt, 'name', name='foo', status=None)
     self.assertEqual('foo', values[0])