Added readonly attribute to a schema
A readonly schema is only expected to be read by users. It cannot be changed and it cannot be included in profile/policy creation. Change-Id: I6d87643f48661cdf95c3202d9aa66a6604861f99
This commit is contained in:
parent
2274d61716
commit
31bc235d2b
@ -46,10 +46,10 @@ class Schema(collections.Mapping):
|
||||
|
||||
KEYS = (
|
||||
TYPE, DESCRIPTION, DEFAULT, REQUIRED, SCHEMA, UPDATABLE,
|
||||
CONSTRAINTS,
|
||||
CONSTRAINTS, READONLY,
|
||||
) = (
|
||||
'type', 'description', 'default', 'required', 'schema', 'updatable',
|
||||
'constraints',
|
||||
'constraints', 'readonly',
|
||||
)
|
||||
|
||||
TYPES = (
|
||||
@ -60,7 +60,7 @@ class Schema(collections.Mapping):
|
||||
|
||||
def __init__(self, description=None, default=None,
|
||||
required=False, schema=None, updatable=False,
|
||||
constraints=None):
|
||||
readonly=False, constraints=None):
|
||||
|
||||
if schema is not None:
|
||||
if type(self) not in (List, Map):
|
||||
@ -78,6 +78,7 @@ class Schema(collections.Mapping):
|
||||
self.required = required
|
||||
self.updatable = updatable
|
||||
self.constraints = constraints or []
|
||||
self.readonly = readonly
|
||||
self._len = None
|
||||
|
||||
def has_default(self):
|
||||
@ -135,6 +136,8 @@ class Schema(collections.Mapping):
|
||||
return dict((n, dict(s)) for n, s in self.schema.items())
|
||||
elif key == self.REQUIRED:
|
||||
return self.required
|
||||
elif key == self.READONLY:
|
||||
return self.readonly
|
||||
elif key == self.CONSTRAINTS:
|
||||
if self.constraints:
|
||||
return [dict(c) for c in self.constraints]
|
||||
|
@ -42,13 +42,14 @@ class PolicyTypeTest(base.SenlinTestCase):
|
||||
'spec': {
|
||||
'KEY1': {
|
||||
'type': 'String',
|
||||
'required': False,
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
'description': 'key1',
|
||||
'default': 'default1',
|
||||
},
|
||||
'KEY2': {
|
||||
'type': 'Integer',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
'description': 'key2',
|
||||
'default': 1,
|
||||
|
@ -42,12 +42,14 @@ class ProfileTypeTest(base.SenlinTestCase):
|
||||
'spec': {
|
||||
'INT': {
|
||||
'type': 'Integer',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
'description': 'int property',
|
||||
'default': 0,
|
||||
},
|
||||
'STR': {
|
||||
'type': 'String',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
'description': 'string property',
|
||||
'default': 'a string',
|
||||
@ -55,11 +57,13 @@ class ProfileTypeTest(base.SenlinTestCase):
|
||||
'LIST': {
|
||||
'type': 'List',
|
||||
'description': 'list property',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
'schema': {
|
||||
'*': {
|
||||
'type': 'String',
|
||||
'description': 'list item',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
},
|
||||
},
|
||||
@ -68,16 +72,19 @@ class ProfileTypeTest(base.SenlinTestCase):
|
||||
'MAP': {
|
||||
'type': 'Map',
|
||||
'description': 'map property',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
'schema': {
|
||||
'KEY1': {
|
||||
'type': 'Integer',
|
||||
'description': 'key1',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
},
|
||||
'KEY2': {
|
||||
'type': 'String',
|
||||
'description': 'key2',
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
},
|
||||
},
|
||||
|
@ -34,6 +34,7 @@ class SchemaTest(testtools.TestCase):
|
||||
'type': 'String',
|
||||
'description': 'A string',
|
||||
'default': 'wibble',
|
||||
'readonly': False,
|
||||
'required': True,
|
||||
'constraints': [{
|
||||
'constraint': ['foo', 'bar'],
|
||||
@ -54,6 +55,7 @@ class SchemaTest(testtools.TestCase):
|
||||
'type': 'String',
|
||||
'description': 'A string',
|
||||
'default': 'wibble',
|
||||
'readonly': False,
|
||||
'required': True,
|
||||
'constraints': [{
|
||||
'constraint': ['foo', 'bar'],
|
||||
@ -61,6 +63,7 @@ class SchemaTest(testtools.TestCase):
|
||||
}]
|
||||
}
|
||||
},
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
}
|
||||
c = constraints.AllowedValues(['foo', 'bar'])
|
||||
@ -78,6 +81,7 @@ class SchemaTest(testtools.TestCase):
|
||||
'type': 'String',
|
||||
'description': 'A string',
|
||||
'default': 'wibble',
|
||||
'readonly': False,
|
||||
'required': True,
|
||||
'constraints': [{
|
||||
'type': 'AllowedValues',
|
||||
@ -85,6 +89,7 @@ class SchemaTest(testtools.TestCase):
|
||||
}]
|
||||
}
|
||||
},
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
}
|
||||
c = constraints.AllowedValues(['foo', 'bar'])
|
||||
@ -106,6 +111,7 @@ class SchemaTest(testtools.TestCase):
|
||||
'type': 'String',
|
||||
'description': 'A string',
|
||||
'default': 'wibble',
|
||||
'readonly': False,
|
||||
'required': True,
|
||||
'constraints': [{
|
||||
'type': 'AllowedValues',
|
||||
@ -113,9 +119,11 @@ class SchemaTest(testtools.TestCase):
|
||||
}]
|
||||
}
|
||||
},
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
}
|
||||
},
|
||||
'readonly': False,
|
||||
'required': False,
|
||||
}
|
||||
c = constraints.AllowedValues(['foo', 'bar'])
|
||||
|
Loading…
Reference in New Issue
Block a user