requires could be apply to a slave and properties could be different
This commit is contained in:
@ -22,13 +22,13 @@ from copy import copy
|
||||
import re
|
||||
|
||||
|
||||
from tiramisu.i18n import _
|
||||
from tiramisu.setting import groups, undefined # , log
|
||||
from ..i18n import _
|
||||
from ..setting import groups, undefined # , log
|
||||
from .baseoption import BaseOption, SymLinkOption, allowed_character
|
||||
from . import MasterSlaves
|
||||
from tiramisu.error import ConfigError, ConflictError
|
||||
from tiramisu.storage import get_storages_option
|
||||
from tiramisu.autolib import carry_out_calculation
|
||||
from ..error import ConfigError, ConflictError
|
||||
from ..storage import get_storages_option
|
||||
from ..autolib import carry_out_calculation
|
||||
|
||||
|
||||
StorageOptionDescription = get_storages_option('optiondescription')
|
||||
@ -135,6 +135,19 @@ class OptionDescription(BaseOption, StorageOptionDescription):
|
||||
option._set_readonly()
|
||||
if isinstance(option, OptionDescription):
|
||||
option.impl_validate_options(cache_option)
|
||||
if option.impl_getrequires() != []:
|
||||
for requires in option.impl_getrequires():
|
||||
for require in requires:
|
||||
if require[0].impl_is_multi():
|
||||
if option.impl_is_master_slaves('slave') and require[0].impl_is_master_slaves():
|
||||
if option.impl_get_master_slaves() != require[0].impl_get_master_slaves():
|
||||
raise ValueError(_('malformed requirements option {0} '
|
||||
'must be in same master/slaves for {1}').format(
|
||||
require[0].impl_getname(), option.impl_getname()))
|
||||
else:
|
||||
raise ValueError(_('malformed requirements option {0} '
|
||||
'must not be a multi for {1}').format(
|
||||
require[0].impl_getname(), option.impl_getname()))
|
||||
if init:
|
||||
if len(cache_option) != len(set(cache_option)):
|
||||
for idx in xrange(1, len(cache_option) + 1):
|
||||
|
Reference in New Issue
Block a user