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]
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
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))