mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
Add support for enumNames
This commit is contained in:
parent
0d9173c57e
commit
f84c3e4fbd
@ -675,8 +675,9 @@ class BaseConfigItem(BaseItem):
|
||||
title = None
|
||||
default = None
|
||||
enum = None
|
||||
enumNames = None
|
||||
|
||||
def __init__(self, title=None, description=None, default=None, enum=None, **kwargs):
|
||||
def __init__(self, title=None, description=None, default=None, enum=None, enumNames=None, **kwargs):
|
||||
'''
|
||||
:param required:
|
||||
If the configuration item is required. Defaults to ``False``.
|
||||
@ -698,6 +699,8 @@ class BaseConfigItem(BaseItem):
|
||||
self.default = default
|
||||
if enum is not None:
|
||||
self.enum = enum
|
||||
if enumNames is not None:
|
||||
self.enumNames = enumNames
|
||||
super(BaseConfigItem, self).__init__(**kwargs)
|
||||
|
||||
def __validate_attributes__(self):
|
||||
@ -709,6 +712,18 @@ class BaseConfigItem(BaseItem):
|
||||
)
|
||||
if not isinstance(self.enum, list):
|
||||
self.enum = list(self.enum)
|
||||
if self.enumNames is not None:
|
||||
if not isinstance(self.enumNames, (list, tuple, set)):
|
||||
raise RuntimeError(
|
||||
'Only the \'list\', \'tuple\' and \'set\' python types can be used '
|
||||
'to define \'enumNames\''
|
||||
)
|
||||
if len(self.enum) != len(self.enumNames):
|
||||
raise RuntimeError(
|
||||
'The size of \'enumNames\' must match the size of \'enum\''
|
||||
)
|
||||
if not isinstance(self.enumNames, list):
|
||||
self.enumNames = list(self.enumNames)
|
||||
|
||||
def serialize(self):
|
||||
'''
|
||||
|
@ -151,6 +151,24 @@ class ConfigTestCase(TestCase):
|
||||
}
|
||||
)
|
||||
|
||||
item = config.StringConfig(title='Foo',
|
||||
description='Foo Item',
|
||||
min_length=1,
|
||||
max_length=3,
|
||||
enum=('foo', 'bar'),
|
||||
enumNames=('Foo', 'Bar'))
|
||||
self.assertDictEqual(
|
||||
item.serialize(), {
|
||||
'type': 'string',
|
||||
'title': item.title,
|
||||
'description': item.description,
|
||||
'minLength': item.min_length,
|
||||
'maxLength': item.max_length,
|
||||
'enum': ['foo', 'bar'],
|
||||
'enumNames': ['Foo', 'Bar']
|
||||
}
|
||||
)
|
||||
|
||||
item = config.StringConfig(title='Foo',
|
||||
description='Foo Item',
|
||||
pattern=r'^([\w_-]+)$')
|
||||
|
Loading…
Reference in New Issue
Block a user