slave's requires with multi is different than slave's requires with non multi option

This commit is contained in:
2016-11-14 21:14:45 +01:00
parent b3fcf1986f
commit fb16dd2a79
6 changed files with 72 additions and 62 deletions

View File

@ -185,51 +185,48 @@ class MasterSlaves(object):
master_is_meta = values._is_meta(master, masterp, session)
multi = values._get_multi(opt, path)
#if masterlen is [], test properties (has no value, don't get any value)
if masterlen == 0:
if validate_properties:
props = context.cfgimpl_get_settings().validate_properties(opt, False,
False,
value=multi,
path=path,
force_permissive=force_permissive,
setting_properties=setting_properties)
if props:
return props
#if masterlen == 0:
if validate_properties:
props = context.cfgimpl_get_settings().validate_properties(opt, False,
False,
value=multi,
path=path,
force_permissive=force_permissive,
setting_properties=setting_properties)
if props:
return props
#else:
if index is None:
indexes = range(0, masterlen)
else:
one_has_value = False
if index is None:
indexes = range(0, masterlen)
else:
indexes = [index]
for idx in indexes:
value = values._get_cached_value(opt, path, validate,
force_permissive,
trusted_cached_properties,
validate_properties,
with_meta=master_is_meta,
index=idx,
# not self_properties,
# depends to index
#self_properties=self_properties,
setting_properties=setting_properties,
masterlen=masterlen,
from_masterslave=True)
if isinstance(value, Exception):
if isinstance(value, PropertiesOptionError):
err = value
indexes = [index]
for idx in indexes:
value = values._get_cached_value(opt, path, validate,
force_permissive,
trusted_cached_properties,
validate_properties,
with_meta=master_is_meta,
index=idx,
# not self_properties,
# depends to index
#self_properties=self_properties,
setting_properties=setting_properties,
masterlen=masterlen,
from_masterslave=True)
if isinstance(value, Exception):
if isinstance(value, PropertiesOptionError):
err = value
if index is None:
multi.append_properties_error(value)
else:
return value
elif index is None:
multi.append(value, setitem=False, force=True, validate=validate,
force_permissive=force_permissive)
one_has_value = True
multi = value
else:
multi = value
one_has_value = True
if not one_has_value:
#raise last err
return err
return value
elif index is None:
multi.append(value, setitem=False, force=True, validate=validate,
force_permissive=force_permissive)
else:
multi = value
return multi
def validate(self, values, opt, value, path, session):