In Config, name and session_id was quite equal, remove name
session_id is now validate set_value return Configs with error add new_config to MetaConfig
This commit is contained in:
parent
90a2072fc5
commit
be43c95ec0
12 changed files with 224 additions and 140 deletions
|
@ -26,6 +26,22 @@ def return_error():
|
|||
raise Exception('test')
|
||||
|
||||
|
||||
def test_choiceoption():
|
||||
ch = ChoiceOption('ch', '', values=('val1', 'val2'))
|
||||
od = OptionDescription('od', '', [ch])
|
||||
cfg = Config(od)
|
||||
cfg.read_write()
|
||||
owner = cfg.cfgimpl_get_settings().getowner()
|
||||
assert cfg.getowner(ch) == owners.default
|
||||
cfg.ch = 'val1'
|
||||
assert cfg.getowner(ch) == owner
|
||||
del(cfg.ch)
|
||||
assert cfg.getowner(ch) == owners.default
|
||||
raises(ValueError, "cfg.ch='no'")
|
||||
assert cfg.getowner(ch) == owners.default
|
||||
assert ch.impl_get_values(cfg) == ('val1', 'val2')
|
||||
|
||||
|
||||
def test_choiceoption_function():
|
||||
ch = ChoiceOption('ch', '', values=return_list)
|
||||
od = OptionDescription('od', '', [ch])
|
||||
|
|
|
@ -52,9 +52,9 @@ def make_description():
|
|||
def test_base_config_name():
|
||||
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
||||
descr = OptionDescription('tiramisu', '', [gcdummy])
|
||||
cfg = Config(descr, name='cfg')
|
||||
cfg = Config(descr, session_id='cfg')
|
||||
cfg.impl_getname() == 'cfg'
|
||||
raises(ValueError, "Config(descr, name='unvalid name')")
|
||||
raises(ValueError, "Config(descr, session_id='unvalid name')")
|
||||
|
||||
|
||||
def test_not_config():
|
||||
|
@ -403,6 +403,6 @@ def test_config_subconfig():
|
|||
i4 = IntOption('i4', '', default=2)
|
||||
od1 = OptionDescription('od1', '', [i1, i2, i3, i4])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2, name='conf1')
|
||||
conf1 = Config(od2, session_id='conf1')
|
||||
conf1
|
||||
raises(ConfigError, "conf2 = Config(od1, name='conf2')")
|
||||
raises(ConfigError, "conf2 = Config(od1, session_id='conf2')")
|
||||
|
|
|
@ -1306,9 +1306,9 @@ def test_state_config():
|
|||
od = OptionDescription('od', '', [st])
|
||||
od2 = OptionDescription('od', '', [od, od1])
|
||||
try:
|
||||
cfg = Config(od2, persistent=True, session_id='29090938')
|
||||
cfg = Config(od2, persistent=True, session_id='c29090938')
|
||||
except ValueError:
|
||||
cfg = Config(od2, session_id='29090938')
|
||||
cfg = Config(od2, session_id='c29090938')
|
||||
cfg._impl_test = True
|
||||
a = dumps(cfg)
|
||||
q = loads(a)
|
||||
|
@ -1316,7 +1316,7 @@ def test_state_config():
|
|||
_diff_conf(cfg, q)
|
||||
|
||||
try:
|
||||
delete_session('config', '29090938')
|
||||
delete_session('config', 'c29090938')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ from py.test import raises
|
|||
from tiramisu.setting import groups, owners
|
||||
from tiramisu.config import Config, GroupConfig, MetaConfig
|
||||
from tiramisu.option import IntOption, StrOption, NetworkOption, NetmaskOption, OptionDescription
|
||||
from tiramisu.error import ConfigError, ConflictError
|
||||
from tiramisu.error import ConfigError, ConflictError, PropertiesOptionError
|
||||
|
||||
owners.addowner('meta')
|
||||
|
||||
|
@ -28,9 +28,9 @@ def make_description():
|
|||
i6 = IntOption('i6', '', properties=('disabled',))
|
||||
od1 = OptionDescription('od1', '', [i1, i2, i3, i4, i5, i6])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2, name='conf1')
|
||||
conf2 = Config(od2, name='conf2')
|
||||
meta = MetaConfig([conf1, conf2], name='meta')
|
||||
conf1 = Config(od2, session_id='conf3')
|
||||
conf2 = Config(od2, session_id='conf4')
|
||||
meta = MetaConfig([conf1, conf2], session_id='meta')
|
||||
meta.read_write()
|
||||
meta.cfgimpl_get_settings().setowner(owners.meta)
|
||||
return meta
|
||||
|
@ -184,28 +184,32 @@ def test_not_meta():
|
|||
i1 = IntOption('i1', '')
|
||||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2, name='conf1')
|
||||
conf2 = Config(od2, name='conf2')
|
||||
conf1 = Config(od2, session_id='conf1')
|
||||
conf2 = Config(od2, session_id='conf2')
|
||||
conf3 = Config(od2)
|
||||
conf4 = Config(od2, name='conf2')
|
||||
conf3, conf4
|
||||
raises(ValueError, "GroupConfig(conf1)")
|
||||
#same name
|
||||
raises(ConflictError, "GroupConfig([conf2, conf4])")
|
||||
grp = GroupConfig([conf1, conf2])
|
||||
raises(ConfigError, 'grp.od1.i1')
|
||||
conf1, conf2 = grp.cfgimpl_get_children()
|
||||
grp.set_value('od1.i1', 7)
|
||||
assert grp.conf1.od1.i1 == conf2.od1.i1 == 7
|
||||
assert grp.conf1.getowner(grp.conf1.unwrap_from_path('od1.i1')) is grp.conf2.getowner(grp.conf2.unwrap_from_path('od1.i1')) is owners.user
|
||||
try:
|
||||
conf4 = Config(od2, session_id='conf2')
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
conf3, conf4
|
||||
raises(ValueError, "GroupConfig(conf1)")
|
||||
#same name
|
||||
raises(ConflictError, "GroupConfig([conf2, conf4])")
|
||||
grp = GroupConfig([conf1, conf2])
|
||||
raises(ConfigError, 'grp.od1.i1')
|
||||
conf1, conf2 = grp.cfgimpl_get_children()
|
||||
grp.set_value('od1.i1', 7)
|
||||
assert grp.conf1.od1.i1 == conf2.od1.i1 == 7
|
||||
assert grp.conf1.getowner(grp.conf1.unwrap_from_path('od1.i1')) is grp.conf2.getowner(grp.conf2.unwrap_from_path('od1.i1')) is owners.user
|
||||
|
||||
|
||||
def test_group_find_firsts():
|
||||
i1 = IntOption('i1', '')
|
||||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2, name='conf1')
|
||||
conf2 = Config(od2, name='conf2')
|
||||
conf1 = Config(od2, session_id='conf1')
|
||||
conf2 = Config(od2, session_id='conf2')
|
||||
grp = GroupConfig([conf1, conf2])
|
||||
assert [conf1, conf2] == grp.find_firsts(byname='i1').cfgimpl_get_children()
|
||||
|
||||
|
@ -214,15 +218,13 @@ def test_group_group():
|
|||
i1 = IntOption('i1', '')
|
||||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2, name='conf1')
|
||||
conf2 = Config(od2, name='conf2')
|
||||
grp = GroupConfig([conf1, conf2])
|
||||
raises(ValueError, "GroupConfig([grp])")
|
||||
conf1 = Config(od2, session_id='conf9')
|
||||
conf2 = Config(od2, session_id='conf10')
|
||||
grp = GroupConfig([conf1, conf2], 'grp')
|
||||
grp2 = GroupConfig([grp])
|
||||
grp2.set_value('od1.i1', 2)
|
||||
assert grp2.grp.conf1.od1.i1 == 2
|
||||
assert grp2.grp.conf1.getowner(i1) == owners.user
|
||||
assert grp2.grp.conf9.od1.i1 == 2
|
||||
assert grp2.grp.conf9.getowner(i1) == owners.user
|
||||
|
||||
|
||||
def test_meta_path():
|
||||
|
@ -239,10 +241,10 @@ def test_meta_unconsistent():
|
|||
od1 = OptionDescription('od1', '', [i1, i2, i3, i4])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
od3 = OptionDescription('od3', '', [od1])
|
||||
conf1 = Config(od2, name='conf1')
|
||||
conf2 = Config(od2, name='conf2')
|
||||
conf3 = Config(od2, name='conf3')
|
||||
conf4 = Config(od3, name='conf4')
|
||||
conf1 = Config(od2, session_id='conf5')
|
||||
conf2 = Config(od2, session_id='conf6')
|
||||
conf3 = Config(od2, session_id='conf7')
|
||||
conf4 = Config(od3, session_id='conf8')
|
||||
conf3, conf4
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.cfgimpl_get_settings().setowner(owners.meta)
|
||||
|
@ -251,7 +253,7 @@ def test_meta_unconsistent():
|
|||
raises(ValueError, "MetaConfig([conf1, conf3])")
|
||||
#not same descr
|
||||
raises(ValueError, "MetaConfig([conf3, conf4])")
|
||||
raises(ConfigError, "meta.conf1.read_only()")
|
||||
raises(ConfigError, "meta.conf5.read_only()")
|
||||
|
||||
|
||||
def test_meta_master_slaves():
|
||||
|
@ -259,8 +261,8 @@ def test_meta_master_slaves():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_only()
|
||||
assert [conf1, conf2] == meta.find_firsts(byname='netmask_admin_eth0').cfgimpl_get_children()
|
||||
|
@ -277,8 +279,8 @@ def test_meta_master_slaves_value():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.conf1.ip_admin_eth0 = ['192.168.1.1']
|
||||
assert meta.conf1.netmask_admin_eth0 == [None]
|
||||
|
@ -299,8 +301,8 @@ def test_meta_master_slaves_value_default():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
assert meta.conf1.netmask_admin_eth0 == [None]
|
||||
meta.ip_admin_eth0 = ['192.168.1.1']
|
||||
|
@ -318,8 +320,8 @@ def test_meta_master_slaves_owners():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.cfgimpl_get_settings().setowner(owners.meta)
|
||||
assert meta.conf1.getowner(ip_admin_eth0) == owners.default
|
||||
|
@ -349,9 +351,9 @@ def test_meta_force_default():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -382,9 +384,9 @@ def test_meta_force_dont_change_value():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -410,9 +412,9 @@ def test_meta_force_default_if_same():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -452,9 +454,9 @@ def test_meta_force_default_if_same_and_dont_change():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -494,9 +496,9 @@ def test_meta_force_default_and_dont_change():
|
|||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "mask", multi=True, properties=('hidden',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -510,9 +512,9 @@ def test_meta_properties_meta():
|
|||
netmask_admin_eth0.impl_add_consistency('network_netmask', ip_admin_eth0)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -525,9 +527,9 @@ def test_meta_exception_meta():
|
|||
netmask_admin_eth0.impl_add_consistency('network_netmask', ip_admin_eth0)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
conf1 = Config(interface1, name='conf1')
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(interface1, name='conf2')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
@ -541,7 +543,7 @@ def test_meta_callback():
|
|||
val4 = StrOption('val4', "", callback=return_value, callback_params={'value': ((val1, False),)})
|
||||
val5 = StrOption('val5', "", callback=return_value, callback_params={'value': ('yes',)})
|
||||
maconfig = OptionDescription('rootconfig', '', [val1, val2, val3, val4, val5])
|
||||
cfg = Config(maconfig, name='cfg')
|
||||
cfg = Config(maconfig, session_id='cfg')
|
||||
meta = MetaConfig([cfg])
|
||||
meta.read_write()
|
||||
assert meta.cfg.make_dict() == {'val3': 'yes', 'val2': 'val', 'val1': 'val', 'val5': 'yes', 'val4': 'val'}
|
||||
|
@ -567,7 +569,7 @@ def test_meta_callback_slave():
|
|||
interface1 = OptionDescription('val1', '', [val1, val3, val4])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
maconfig = OptionDescription('rootconfig', '', [val, interface1])
|
||||
cfg = Config(maconfig, name='cfg')
|
||||
cfg = Config(maconfig, session_id='cfg')
|
||||
meta = MetaConfig([cfg])
|
||||
meta.read_write()
|
||||
assert meta.cfg.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
|
||||
|
@ -599,3 +601,42 @@ def test_meta_callback_slave():
|
|||
assert meta.cfg.make_dict() == {'val1.val2': ['val2', 'rah'], 'val1.val1': ['val3', 'rah'], 'val1.val3': ['val3', 'rah'], 'val': 'val'}
|
||||
meta.val1.val1 = ['val4']
|
||||
assert meta.cfg.make_dict() == {'val1.val2': ['val2', 'rah'], 'val1.val1': ['val3', 'rah'], 'val1.val3': ['val3', 'rah'], 'val': 'val'}
|
||||
|
||||
|
||||
def test_meta_properties_meta_set_value():
|
||||
ip_admin_eth0 = NetworkOption('ip_admin_eth0', "ip", multi=True, default=['192.168.1.1'])
|
||||
netmask_admin_eth0 = NetmaskOption('netmask_admin_eth0', "mask", multi=True, properties=('disabled',))
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
conf1 = Config(interface1, session_id='conf1')
|
||||
conf2 = Config(interface1, session_id='conf2')
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
assert conf1.make_dict() == {'ip_admin_eth0': ['192.168.1.1']}
|
||||
ret = meta.set_value('netmask_admin_eth0', ['255.255.255.255'], only_config=True)
|
||||
assert len(ret) == 2
|
||||
assert isinstance(ret[0], PropertiesOptionError)
|
||||
assert isinstance(ret[1], PropertiesOptionError)
|
||||
ret = meta.set_value('netmask_admin_eth0', ['255.255.255.255'], force_default=True)
|
||||
assert len(ret) == 1
|
||||
assert isinstance(ret[0], PropertiesOptionError)
|
||||
ret = meta.set_value('netmask_admin_eth0', ['255.255.255.255'], force_dont_change_value=True)
|
||||
assert len(ret) == 3
|
||||
assert isinstance(ret[0], PropertiesOptionError)
|
||||
assert isinstance(ret[1], PropertiesOptionError)
|
||||
assert isinstance(ret[2], PropertiesOptionError)
|
||||
ret = meta.set_value('netmask_admin_eth0', ['255.255.255.255'], force_default_if_same=True)
|
||||
assert len(ret) == 1
|
||||
assert isinstance(ret[0], PropertiesOptionError)
|
||||
ret = meta.set_value('ip_admin_eth0', '255.255.255.255', only_config=True)
|
||||
assert len(ret) == 2
|
||||
assert isinstance(ret[0], ValueError)
|
||||
assert isinstance(ret[1], ValueError)
|
||||
ret = meta.set_value('ip_admin_eth0', '255.255.255.255', force_default=True)
|
||||
assert len(ret) == 1
|
||||
assert isinstance(ret[0], ValueError)
|
||||
ret = meta.set_value('ip_admin_eth0', '255.255.255.255', force_dont_change_value=True)
|
||||
assert len(ret) == 1
|
||||
assert isinstance(ret[0], ValueError)
|
||||
ret = meta.set_value('ip_admin_eth0', '255.255.255.255', force_default_if_same=True)
|
||||
assert len(ret) == 1
|
||||
assert isinstance(ret[0], ValueError)
|
||||
|
|
|
@ -207,6 +207,9 @@ def _diff_conf(cfg1, cfg2):
|
|||
elif attr == '_impl_children':
|
||||
for index, _opt in enumerate(val1):
|
||||
_diff_conf(_opt, val2[index])
|
||||
elif attr == '_impl_name':
|
||||
#FIXME
|
||||
pass
|
||||
else:
|
||||
assert val1 == val2
|
||||
|
||||
|
@ -256,9 +259,9 @@ def test_diff_information_config():
|
|||
o = OptionDescription('o', '', [b])
|
||||
o1 = OptionDescription('o1', '', [o])
|
||||
try:
|
||||
cfg = Config(o1, persistent=True, session_id='29090938')
|
||||
cfg = Config(o1, persistent=True, session_id='c29090938')
|
||||
except ValueError:
|
||||
cfg = Config(o1, session_id='29090938')
|
||||
cfg = Config(o1, session_id='c29090938')
|
||||
cfg._impl_test = True
|
||||
cfg.impl_set_information('info', 'oh')
|
||||
|
||||
|
@ -269,7 +272,7 @@ def test_diff_information_config():
|
|||
assert cfg.impl_get_information('info') == 'oh'
|
||||
assert q.impl_get_information('info') == 'oh'
|
||||
try:
|
||||
delete_session('config', '29090938')
|
||||
delete_session('config', 'c29090938')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -341,16 +344,16 @@ def test_state_config():
|
|||
val1 = BoolOption('val1', "")
|
||||
maconfig = OptionDescription('rootconfig', '', [val1])
|
||||
try:
|
||||
cfg = Config(maconfig, persistent=True, session_id='29090931')
|
||||
cfg = Config(maconfig, persistent=True, session_id='c29090931')
|
||||
except ValueError:
|
||||
cfg = Config(maconfig, session_id='29090931')
|
||||
cfg = Config(maconfig, session_id='c29090931')
|
||||
cfg._impl_test = True
|
||||
a = dumps(cfg)
|
||||
q = loads(a)
|
||||
_diff_opts(cfg.cfgimpl_get_description(), q.cfgimpl_get_description())
|
||||
_diff_conf(cfg, q)
|
||||
try:
|
||||
delete_session('config', '29090931')
|
||||
delete_session('config', 'c29090931')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -370,16 +373,16 @@ def test_state_config2():
|
|||
od = OptionDescription('od', '', [st])
|
||||
od2 = OptionDescription('od', '', [od, od1])
|
||||
try:
|
||||
cfg = Config(od2, persistent=True, session_id='29090939')
|
||||
cfg = Config(od2, persistent=True, session_id='c29090939')
|
||||
except ValueError:
|
||||
cfg = Config(od2, session_id='29090939')
|
||||
cfg = Config(od2, session_id='c29090939')
|
||||
cfg._impl_test = True
|
||||
a = dumps(cfg)
|
||||
q = loads(a)
|
||||
_diff_opts(cfg.cfgimpl_get_description(), q.cfgimpl_get_description())
|
||||
_diff_conf(cfg, q)
|
||||
try:
|
||||
delete_session('config', '29090939')
|
||||
delete_session('config', 'c29090939')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -391,9 +394,9 @@ def test_diff_opt_value():
|
|||
o = OptionDescription('o', '', [b, u, s])
|
||||
o1 = OptionDescription('o1', '', [o])
|
||||
try:
|
||||
cfg = Config(o1, persistent=True, session_id='29090941')
|
||||
cfg = Config(o1, persistent=True, session_id='c29090941')
|
||||
except ValueError:
|
||||
cfg = Config(o1, session_id='29090941')
|
||||
cfg = Config(o1, session_id='c29090941')
|
||||
cfg._impl_test = True
|
||||
|
||||
a = dumps(cfg)
|
||||
|
@ -401,7 +404,7 @@ def test_diff_opt_value():
|
|||
_diff_opts(cfg.cfgimpl_get_description(), q.cfgimpl_get_description())
|
||||
_diff_conf(cfg, q)
|
||||
try:
|
||||
delete_session('config', '29090941')
|
||||
delete_session('config', 'c29090941')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -416,9 +419,9 @@ def test_diff_opt_config():
|
|||
o = OptionDescription('o', '', [b, u, s])
|
||||
o1 = OptionDescription('o1', '', [o])
|
||||
try:
|
||||
cfg = Config(o1, persistent=True, session_id='29090940')
|
||||
cfg = Config(o1, persistent=True, session_id='c29090940')
|
||||
except ValueError:
|
||||
cfg = Config(o1, session_id='29090940')
|
||||
cfg = Config(o1, session_id='c29090940')
|
||||
cfg._impl_test = True
|
||||
|
||||
a = dumps(cfg)
|
||||
|
@ -426,7 +429,7 @@ def test_diff_opt_config():
|
|||
_diff_opts(cfg.cfgimpl_get_description(), q.cfgimpl_get_description())
|
||||
_diff_conf(cfg, q)
|
||||
try:
|
||||
delete_session('config', '29090940')
|
||||
delete_session('config', 'c29090940')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -435,9 +438,9 @@ def test_state_properties():
|
|||
val1 = BoolOption('val1', "")
|
||||
maconfig = OptionDescription('rootconfig', '', [val1])
|
||||
try:
|
||||
cfg = Config(maconfig, persistent=True, session_id='29090932')
|
||||
cfg = Config(maconfig, persistent=True, session_id='c29090932')
|
||||
except ValueError:
|
||||
cfg = Config(maconfig, session_id='29090932')
|
||||
cfg = Config(maconfig, session_id='c29090932')
|
||||
cfg._impl_test = True
|
||||
cfg.read_write()
|
||||
cfg.cfgimpl_get_settings()[val1].append('test')
|
||||
|
@ -445,7 +448,7 @@ def test_state_properties():
|
|||
q = loads(a)
|
||||
_diff_conf(cfg, q)
|
||||
try:
|
||||
delete_session('config', '29090932')
|
||||
delete_session('config', 'c29090932')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -454,9 +457,9 @@ def test_state_values():
|
|||
val1 = BoolOption('val1', "")
|
||||
maconfig = OptionDescription('rootconfig', '', [val1])
|
||||
try:
|
||||
cfg = Config(maconfig, persistent=True, session_id='29090933')
|
||||
cfg = Config(maconfig, persistent=True, session_id='c29090933')
|
||||
except ValueError:
|
||||
cfg = Config(maconfig, session_id='29090933')
|
||||
cfg = Config(maconfig, session_id='c29090933')
|
||||
cfg._impl_test = True
|
||||
cfg.val1 = True
|
||||
a = dumps(cfg)
|
||||
|
@ -466,7 +469,7 @@ def test_state_values():
|
|||
assert cfg.val1 is True
|
||||
assert q.val1 is False
|
||||
try:
|
||||
delete_session('config', '29090933')
|
||||
delete_session('config', 'c29090933')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -475,9 +478,9 @@ def test_state_values_owner():
|
|||
val1 = BoolOption('val1', "")
|
||||
maconfig = OptionDescription('rootconfig', '', [val1])
|
||||
try:
|
||||
cfg = Config(maconfig, persistent=True, session_id='29090934')
|
||||
cfg = Config(maconfig, persistent=True, session_id='c29090934')
|
||||
except ValueError:
|
||||
cfg = Config(maconfig, session_id='29090934')
|
||||
cfg = Config(maconfig, session_id='c29090934')
|
||||
cfg._impl_test = True
|
||||
owners.addowner('newowner')
|
||||
cfg.cfgimpl_get_settings().setowner(owners.newowner)
|
||||
|
@ -489,7 +492,7 @@ def test_state_values_owner():
|
|||
nval1 = q.cfgimpl_get_description().val1
|
||||
assert q.getowner(nval1) == owners.newowner
|
||||
try:
|
||||
delete_session('config', '29090934')
|
||||
delete_session('config', 'c29090934')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -499,17 +502,17 @@ def test_state_metaconfig():
|
|||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
try:
|
||||
cfg = Config(od2, persistent=True, session_id='29090935')
|
||||
cfg = Config(od2, persistent=True, session_id='c29090935')
|
||||
except ValueError:
|
||||
conf1 = Config(od2, session_id='29090935')
|
||||
conf1 = Config(od2, session_id='c29090935')
|
||||
conf1._impl_test = True
|
||||
conf2 = Config(od2, session_id='29090936')
|
||||
conf2 = Config(od2, session_id='c29090936')
|
||||
conf2._impl_test = True
|
||||
meta = MetaConfig([conf1, conf2], session_id='29090937')
|
||||
meta = MetaConfig([conf1, conf2], session_id='c29090937')
|
||||
meta._impl_test = True
|
||||
raises(ConfigError, "dumps(meta)")
|
||||
try:
|
||||
delete_session('config', '29090935')
|
||||
delete_session('config', 'c29090935')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
@ -519,19 +522,19 @@ def test_state_groupconfig():
|
|||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
try:
|
||||
cfg = Config(od2, persistent=True, session_id='29090938')
|
||||
cfg = Config(od2, persistent=True, session_id='c29090938')
|
||||
except ValueError:
|
||||
conf1 = Config(od2, session_id='29090938')
|
||||
conf1 = Config(od2, session_id='c29090938')
|
||||
conf1._impl_test = True
|
||||
conf2 = Config(od2, session_id='29090939')
|
||||
conf2 = Config(od2, session_id='c29090939')
|
||||
conf2._impl_test = True
|
||||
meta = GroupConfig([conf1, conf2], session_id='29090940')
|
||||
meta = GroupConfig([conf1, conf2], session_id='c29090940')
|
||||
meta._impl_test = True
|
||||
a = dumps(meta)
|
||||
q = loads(a)
|
||||
_diff_conf(meta, q)
|
||||
try:
|
||||
delete_session('config', '29090938')
|
||||
delete_session('config', 'c29090938')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
|
|
@ -684,9 +684,9 @@ def test_submulti_unique():
|
|||
def test_multi_submulti_meta():
|
||||
multi = StrOption('multi', '', multi=submulti)
|
||||
od = OptionDescription('od', '', [multi])
|
||||
conf1 = Config(od, name='conf1')
|
||||
conf1 = Config(od, session_id='conf1')
|
||||
conf1.read_write()
|
||||
conf2 = Config(od, name='conf2')
|
||||
conf2 = Config(od, session_id='conf2')
|
||||
conf2.read_write()
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.read_write()
|
||||
|
|
|
@ -317,11 +317,13 @@ class SubConfig(object):
|
|||
_commit=_commit)
|
||||
else:
|
||||
subpath = self._get_subpath(name)
|
||||
self.cfgimpl_get_values().setitem(child, value, subpath,
|
||||
force_permissive=force_permissive,
|
||||
not_raises=not_raises, index=index,
|
||||
_setting_properties=_setting_properties,
|
||||
_commit=_commit)
|
||||
ret = self.cfgimpl_get_values().setitem(child, value, subpath,
|
||||
force_permissive=force_permissive,
|
||||
not_raises=not_raises, index=index,
|
||||
_setting_properties=_setting_properties,
|
||||
_commit=_commit)
|
||||
if ret is not None:
|
||||
return ret
|
||||
|
||||
def __delattr__(self, name):
|
||||
context = self._cfgimpl_get_context()
|
||||
|
@ -781,8 +783,8 @@ class Config(_CommonConfig):
|
|||
__slots__ = ('__weakref__', '_impl_test', '_impl_name')
|
||||
|
||||
def __init__(self, descr, session_id=None, persistent=False,
|
||||
name=undefined, force_values=None, force_settings=None,
|
||||
_duplicate=False, mandatory_name=False, _force_store_values=True):
|
||||
force_values=None, force_settings=None,
|
||||
_duplicate=False, _force_store_values=True):
|
||||
""" Configuration option management master class
|
||||
|
||||
:param descr: describes the configuration schema
|
||||
|
@ -802,15 +804,9 @@ class Config(_CommonConfig):
|
|||
self._impl_settings = force_settings
|
||||
self._impl_values = Values(self, force_values)
|
||||
else:
|
||||
properties, permissives, values = get_storages(self, session_id, persistent)
|
||||
if name is undefined:
|
||||
name = 'config'
|
||||
if session_id is not None:
|
||||
name += session_id
|
||||
if mandatory_name and name is None:
|
||||
raise ValueError(_("name is mandatory for the config").format(name))
|
||||
if name is not None and not valid_name(name): # pragma: optional cover
|
||||
raise ValueError(_("invalid name: {0} for config").format(name))
|
||||
properties, permissives, values, session_id = get_storages(self, session_id, persistent)
|
||||
if not valid_name(session_id): # pragma: optional cover
|
||||
raise ValueError(_("invalid session ID: {0} for config").format(session_id))
|
||||
self._impl_settings = Settings(self, properties, permissives)
|
||||
self._impl_values = Values(self, values)
|
||||
super(Config, self).__init__(descr, weakref.ref(self))
|
||||
|
@ -819,7 +815,7 @@ class Config(_CommonConfig):
|
|||
self._impl_test = False
|
||||
if _duplicate is False and (force_settings is None or force_values is None):
|
||||
self._impl_build_all_caches(_force_store_values)
|
||||
self._impl_name = name
|
||||
self._impl_name = session_id
|
||||
|
||||
def impl_getname(self):
|
||||
return self._impl_name
|
||||
|
@ -832,7 +828,7 @@ class GroupConfig(_CommonConfig):
|
|||
__slots__ = ('__weakref__', '_impl_children', '_impl_name')
|
||||
|
||||
def __init__(self, children, session_id=None, persistent=False,
|
||||
_descr=None, name=undefined):
|
||||
_descr=None):
|
||||
if not isinstance(children, list):
|
||||
raise ValueError(_("groupconfig's children must be a list"))
|
||||
names = []
|
||||
|
@ -850,16 +846,14 @@ class GroupConfig(_CommonConfig):
|
|||
raise ConflictError(_('config name must be uniq in '
|
||||
'groupconfig for {0}').format(name))
|
||||
self._impl_children = children
|
||||
properties, permissives, values = get_storages(self, session_id, persistent)
|
||||
properties, permissives, values, session_id = get_storages(self, session_id, persistent)
|
||||
self._impl_settings = Settings(self, properties, permissives)
|
||||
self._impl_values = Values(self, values)
|
||||
super(GroupConfig, self).__init__(_descr, weakref.ref(self))
|
||||
self._impl_meta = None
|
||||
#undocumented option used only in test script
|
||||
self._impl_test = False
|
||||
if name is undefined:
|
||||
name = session_id
|
||||
self._impl_name = name
|
||||
self._impl_name = session_id
|
||||
|
||||
def cfgimpl_get_children(self):
|
||||
return self._impl_children
|
||||
|
@ -877,15 +871,19 @@ class GroupConfig(_CommonConfig):
|
|||
def set_value(self, path, value, _commit=True):
|
||||
"""Setattr not in current GroupConfig, but in each children
|
||||
"""
|
||||
ret = []
|
||||
for child in self._impl_children:
|
||||
if isinstance(child, MetaConfig):
|
||||
child.set_value(path, value, only_config=True, _commit=False)
|
||||
ret.extend(child.set_value(path, value, only_config=True, _commit=False))
|
||||
elif isinstance(child, GroupConfig):
|
||||
child.set_value(path, value, _commit=False)
|
||||
ret.extend(child.set_value(path, value, _commit=False))
|
||||
else:
|
||||
child.setattr(path, value, not_raises=True, _commit=False)
|
||||
childret = child.setattr(path, value, not_raises=True, _commit=False)
|
||||
if childret is not None:
|
||||
ret.append(childret)
|
||||
if _commit:
|
||||
self.cfgimpl_get_values()._p_.commit()
|
||||
return ret
|
||||
|
||||
|
||||
def find_firsts(self, byname=None, bypath=undefined, byoption=undefined,
|
||||
|
@ -953,7 +951,7 @@ class MetaConfig(GroupConfig):
|
|||
__slots__ = tuple()
|
||||
|
||||
def __init__(self, children, session_id=None, persistent=False,
|
||||
name=undefined, optiondescription=None):
|
||||
optiondescription=None):
|
||||
descr = None
|
||||
if optiondescription is not None:
|
||||
new_children = []
|
||||
|
@ -977,7 +975,7 @@ class MetaConfig(GroupConfig):
|
|||
child._impl_meta = weakref.ref(self)
|
||||
|
||||
super(MetaConfig, self).__init__(children, session_id, persistent,
|
||||
descr, name)
|
||||
descr)
|
||||
|
||||
def set_value(self, path, value, force_default=False,
|
||||
force_dont_change_value=False, force_default_if_same=False,
|
||||
|
@ -991,6 +989,7 @@ class MetaConfig(GroupConfig):
|
|||
'force_dont_change_value cannot be set with'
|
||||
' only_config'))
|
||||
return super(MetaConfig, self).set_value(path, value, _commit=_commit)
|
||||
ret = []
|
||||
if force_default or force_default_if_same or force_dont_change_value:
|
||||
if force_default and force_dont_change_value:
|
||||
raise ValueError(_('force_default and force_dont_change_value'
|
||||
|
@ -1005,18 +1004,40 @@ class MetaConfig(GroupConfig):
|
|||
else:
|
||||
child_value = child.getattr(path)
|
||||
if force_default or value == child_value:
|
||||
child.cfgimpl_get_values().reset(opt, path=path,
|
||||
validate=False,
|
||||
_setting_properties=setting_properties,
|
||||
_commit=False)
|
||||
childret = child.cfgimpl_get_values().reset(opt, path=path,
|
||||
validate=False,
|
||||
_setting_properties=setting_properties,
|
||||
_commit=False)
|
||||
if childret is not None:
|
||||
ret.append(childret)
|
||||
continue
|
||||
if force_dont_change_value:
|
||||
child_value = child.getattr(path, _setting_properties=setting_properties)
|
||||
if value != child_value:
|
||||
child.setattr(path, child_value, _commit=False)
|
||||
child_value = child.getattr(path, _setting_properties=setting_properties,
|
||||
returns_raise=True)
|
||||
if isinstance(child_value, Exception):
|
||||
ret.append(child_value)
|
||||
elif value != child_value:
|
||||
childret = child.setattr(path, child_value, _commit=False, not_raises=True)
|
||||
if childret is not None:
|
||||
ret.append(childret)
|
||||
|
||||
self.setattr(path, value, _commit=_commit)
|
||||
setret = self.setattr(path, value, _commit=_commit, not_raises=True)
|
||||
if setret is not None:
|
||||
ret.append(setret)
|
||||
return ret
|
||||
|
||||
def new_config(self, session_id=None, persistent=False, name=undefined):
|
||||
return Config(self._impl_descr, _duplicate=True, session_id=session_id, name=name,
|
||||
persistent=persistent, mandatory_name=True)
|
||||
def reset(self, path):
|
||||
opt = self.cfgimpl_get_description().impl_get_opt_by_path(path)
|
||||
setting_properties = self.cfgimpl_get_settings()._getproperties(read_write=False)
|
||||
for child in self._impl_children:
|
||||
child.cfgimpl_get_values().reset(opt, path=path,
|
||||
validate=False,
|
||||
_setting_properties=setting_properties,
|
||||
_commit=False)
|
||||
self.cfgimpl_get_values().reset(opt, path=path,
|
||||
validate=False,
|
||||
_setting_properties=setting_properties)
|
||||
|
||||
def new_config(self, session_id=None, persistent=False):
|
||||
return Config(self._impl_descr, session_id=session_id,
|
||||
persistent=persistent)
|
||||
|
|
|
@ -34,6 +34,8 @@ def display_list(lst, separator='and'):
|
|||
ret = str(ret)
|
||||
return ret
|
||||
else:
|
||||
if isinstance(lst, tuple):
|
||||
lst = list(lst)
|
||||
lst.sort()
|
||||
lst_ = []
|
||||
for l in lst[:-1]:
|
||||
|
|
|
@ -42,7 +42,7 @@ if sys.version_info[0] >= 3: # pragma: no cover
|
|||
|
||||
StorageBase = get_storages_option('base')
|
||||
submulti = 2
|
||||
name_regexp = re.compile(r'^[a-z][a-zA-Z\d\-_]*$')
|
||||
name_regexp = re.compile(r'^[a-z][a-zA-Z\d_]*$')
|
||||
forbidden_names = frozenset(['iter_all', 'iter_group', 'find', 'find_first',
|
||||
'make_dict', 'unwrap_from_path', 'read_only',
|
||||
'read_write', 'getowner', 'set_contexts'])
|
||||
|
|
|
@ -127,7 +127,7 @@ def get_storage(type_, session_id, persistent, test): # pragma: optional cover
|
|||
|
||||
def get_storages(context, session_id, persistent):
|
||||
def gen_id(config):
|
||||
return str(id(config)) + str(time()) + str(randint(0, 500))
|
||||
return 'c' + str(id(config)) + str(int(time())) + str(randint(0, 500))
|
||||
|
||||
if session_id is None:
|
||||
session_id = gen_id(context)
|
||||
|
@ -136,7 +136,7 @@ def get_storages(context, session_id, persistent):
|
|||
properties = imp.Properties(storage)
|
||||
permissives = imp.Permissives(storage)
|
||||
values = imp.Values(storage)
|
||||
return properties, permissives, values
|
||||
return properties, permissives, values, session_id
|
||||
|
||||
|
||||
def get_storages_option(type_):
|
||||
|
|
|
@ -93,7 +93,6 @@ class Storage(object):
|
|||
self.execute(permissives_table)
|
||||
|
||||
def commit(self):
|
||||
#print('ca commit')
|
||||
self._conn.commit()
|
||||
|
||||
def execute(self, sql, params=None, commit=True):
|
||||
|
|
|
@ -429,10 +429,12 @@ class Values(object):
|
|||
session=session, not_raises=not_raises,
|
||||
index=index)
|
||||
if props and not_raises:
|
||||
return
|
||||
return props
|
||||
err = opt.impl_validate(value, fake_context, display_warnings=False, force_index=index,
|
||||
setting_properties=_setting_properties)
|
||||
if err:
|
||||
if not_raises:
|
||||
return err
|
||||
raise err
|
||||
opt.impl_validate(value, fake_context, display_error=False,
|
||||
setting_properties=_setting_properties)
|
||||
|
|
Loading…
Reference in a new issue