def setUp(self):
     super(TestEnum, self).setUp()
     self.field = fields.EnumField(valid_values=['foo', 'bar', 1, True])
     self.coerce_good_values = [('foo', 'foo'), (1, '1'), (True, 'True')]
     self.coerce_bad_values = ['boo', 2, False]
     self.to_primitive_values = self.coerce_good_values[0:1]
     self.from_primitive_values = self.coerce_good_values[0:1]
Esempio n. 2
0
class IPV4Classification(ClassificationBase):
    VERSION = '1.0'
    db_model = models.IPV4Classification

    fields = {
        'dscp':
        obj_fields.IntegerField(nullable=True),
        'dscp_mask':
        obj_fields.IntegerField(nullable=True),
        'ecn':
        obj_fields.EnumField(valid_values=["0", "1", "2", "3"], nullable=True),
        'length_min':
        obj_fields.IntegerField(nullable=True),
        'length_max':
        obj_fields.IntegerField(nullable=True),
        'flags':
        obj_fields.IntegerField(nullable=True),
        'flags_mask':
        obj_fields.IntegerField(nullable=True),
        'ttl_min':
        obj_fields.IntegerField(nullable=True),
        'ttl_max':
        obj_fields.IntegerField(nullable=True),
        'protocol':
        obj_fields.IntegerField(nullable=True),
        'src_addr':
        obj_fields.StringField(nullable=True),
        'dst_addr':
        obj_fields.StringField(nullable=True),
    }

    def create(self):
        with db_api.autonested_transaction(self.obj_context.session):
            super(ClassificationBase, self).create()

    @classmethod
    def get_object(cls, context, **kwargs):
        with db_api.autonested_transaction(context.session):
            obj = super(IPV4Classification, cls).get_object(context,
                                                            c_type='ipv4',
                                                            **kwargs)
            return obj
Esempio n. 3
0
class ClassificationGroup(rbac_db.NeutronRbacObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    # required by RbacNeutronMetaclass
    rbac_db_cls = ClassificationGroupRBAC
    db_model = models.ClassificationGroup

    fields = {
        'id': common_types.UUIDField(),
        'name': obj_fields.StringField(),
        'description': obj_fields.StringField(),
        'project_id': obj_fields.StringField(),
        'shared': obj_fields.BooleanField(default=False),
        'operator': obj_fields.EnumField(['AND', 'OR'], default='AND'),
    }

    fields_no_update = ['id', 'project_id']

    @classmethod
    def get_object(cls, context, **kwargs):
        # We want to get the policy regardless of its tenant id. We'll make
        # sure the tenant has permission to access the policy later on.
        admin_context = context.elevated()
        with db_api.autonested_transaction(admin_context.session):
            obj = super(ClassificationGroup,
                        cls).get_object(admin_context, **kwargs)
            if not obj or not cls.is_accessible(context, obj):
                return
            return obj

    @classmethod
    def get_bound_tenant_ids(cls, context, **kwargs):
        # If we can return the policy regardless of tenant, we don't need
        # to return the tenant id.
        pass
 def test_fingerprint(self):
     # Notes(yjiang5): make sure changing valid_value will be detected
     # in test_objects.test_versions
     field1 = fields.EnumField(valid_values=['foo', 'bar'])
     field2 = fields.EnumField(valid_values=['foo', 'bar1'])
     self.assertNotEqual(str(field1), str(field2))