This commit is contained in:
2017-07-21 18:03:34 +02:00
parent be43c95ec0
commit ddaadb0701
19 changed files with 297 additions and 154 deletions

View File

@ -36,7 +36,7 @@ StorageOptionDescription = get_storages_option('optiondescription')
name_regexp = re.compile(r'^[a-zA-Z\d\-_]*$')
import sys
if sys.version_info[0] >= 3: # pragma: optional cover
if sys.version_info[0] >= 3: # pragma: no cover
xrange = range
del(sys)
@ -141,18 +141,18 @@ class OptionDescription(BaseOption, StorageOptionDescription):
if func not in allowed_const_list and is_multi:
is_masterslaves = option.impl_is_master_slaves()
if not is_masterslaves:
raise ValueError(_('malformed consistency option "{0}" '
raise ConfigError(_('malformed consistency option "{0}" '
'must be a master/slaves').format(
option.impl_getname()))
masterslaves = option.impl_get_master_slaves()
for opt in all_cons_opts:
if func not in allowed_const_list and is_multi:
if not opt.impl_is_master_slaves():
raise ValueError(_('malformed consistency option "{0}" '
raise ConfigError(_('malformed consistency option "{0}" '
'must not be a multi for "{1}"').format(
option.impl_getname(), opt.impl_getname()))
elif masterslaves != opt.impl_get_master_slaves():
raise ValueError(_('malformed consistency option "{0}" '
raise ConfigError(_('malformed consistency option "{0}" '
'must be in same master/slaves for "{1}"').format(
option.impl_getname(), opt.impl_getname()))
_consistencies.setdefault(opt,
@ -318,8 +318,6 @@ class OptionDescription(BaseOption, StorageOptionDescription):
values = carry_out_calculation(self, context=context,
callback=callback,
callback_params=callback_params)
if isinstance(values, Exception):
raise values
if len(values) > len(set(values)):
raise ConfigError(_('DynOptionDescription callback return not unique value'))
for val in values:
@ -327,16 +325,14 @@ class OptionDescription(BaseOption, StorageOptionDescription):
raise ValueError(_("invalid suffix: {0} for option").format(val))
return values
def _impl_search_dynchild(self, name=undefined, context=undefined):
def _impl_search_dynchild(self, name, context):
ret = []
for child in self._impl_st_getchildren(context, only_dyn=True):
cname = child.impl_getname()
if name is undefined or name.startswith(cname):
if name.startswith(cname):
path = cname
for value in child._impl_get_suffixes(context):
if name is undefined:
ret.append(SynDynOptionDescription(child, cname + value, path + value, value))
elif name == cname + value:
if name == cname + value:
return SynDynOptionDescription(child, name, path + value, value)
return ret
@ -388,9 +384,6 @@ class DynOptionDescription(OptionDescription):
if isinstance(child, SymLinkOption):
raise ConfigError(_('cannot set symlinkoption in a '
'dynoptiondescription'))
if isinstance(child, SymLinkOption):
raise ConfigError(_('cannot set symlinkoption in a '
'dynoptiondescription'))
child._impl_setsubdyn(self)
self.impl_set_callback(callback, callback_params)