deb-glare/glare/tests/sample_artifact.py

132 lines
5.9 KiB
Python

# Copyright (c) 2016 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Sample artifact object for testing purposes"""
from oslo_versionedobjects import fields
from glare.objects import base as base_artifact
from glare.objects.meta import attribute
from glare.objects.meta import fields as glare_fields
from glare.objects.meta import validators
Field = attribute.Attribute.init
Dict = attribute.DictAttribute.init
List = attribute.ListAttribute.init
Blob = attribute.BlobAttribute.init
BlobDict = attribute.BlobDictAttribute.init
class SampleArtifact(base_artifact.BaseArtifact):
VERSION = '1.0'
fields = {
'blob': Blob(required_on_activate=False, mutable=True,
description="I am Blob"),
'small_blob': Blob(max_blob_size=10, required_on_activate=False,
mutable=True),
'link1': Field(glare_fields.Link,
required_on_activate=False),
'link2': Field(glare_fields.Link,
required_on_activate=False),
'bool1': Field(fields.FlexibleBooleanField,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,),
default=False),
'bool2': Field(fields.FlexibleBooleanField,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,),
default=False),
'int1': Field(fields.IntegerField,
required_on_activate=False,
sortable=True),
'int2': Field(fields.IntegerField,
sortable=True,
required_on_activate=False),
'float1': Field(fields.FloatField,
sortable=True,
required_on_activate=False),
'float2': Field(fields.FloatField,
sortable=True,
required_on_activate=False),
'str1': Field(fields.StringField,
sortable=True,
required_on_activate=False),
'list_of_str': List(fields.String,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,
attribute.FILTER_IN)),
'list_of_int': List(fields.Integer,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,
attribute.FILTER_IN)),
'dict_of_str': Dict(fields.String,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,
attribute.FILTER_IN)),
'dict_of_int': Dict(fields.Integer,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,
attribute.FILTER_IN)),
'dict_of_links': Dict(glare_fields.LinkFieldType,
mutable=True,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,)),
'list_of_links': List(glare_fields.LinkFieldType,
mutable=True,
required_on_activate=False,
filter_ops=(attribute.FILTER_EQ,)),
'dict_of_blobs': BlobDict(required_on_activate=False,
validators=[
validators.MaxDictKeyLen(1000)]),
'string_mutable': Field(fields.StringField,
required_on_activate=False,
mutable=True),
'string_required': Field(fields.StringField,
required_on_activate=True),
'string_validators': Field(fields.StringField,
required_on_activate=False,
validators=[
validators.AllowedValues(
['aa', 'bb', 'c' * 11]),
validators.MaxStrLen(10)
]),
'int_validators': Field(fields.IntegerField,
required_on_activate=False,
validators=[
validators.MinNumberSize(10),
validators.MaxNumberSize(20)
]),
'list_validators': List(fields.String,
required_on_activate=False,
filter_ops=[],
max_size=3,
validators=[validators.Unique()]),
'dict_validators': Dict(fields.String,
required_on_activate=False,
default=None,
filter_ops=[],
validators=[
validators.AllowedDictKeys([
'abc', 'def', 'ghi', 'jkl'])],
max_size=3),
'system_attribute': Field(fields.StringField,
system=True, sortable=True,
default="default")
}
@classmethod
def get_type_name(cls):
return "sample_artifact"