support multiple metaconfig and prefix

This commit is contained in:
2018-09-13 17:00:52 +02:00
parent 77a77dd01c
commit f6a9b88795
3 changed files with 58 additions and 32 deletions

View File

@ -711,12 +711,12 @@ def test_meta_properties_meta_copy():
conf2 = Config(interface1, session_id='conf2')
conf1.property.read_write()
conf2.property.read_write()
meta = MetaConfig([conf1, conf2])
meta = MetaConfig([conf1, conf2], session_id='meta1')
meta.property.read_write()
conf3 = meta.config('conf1').config.copy(session_id='conf3')
meta2 = conf3.config.meta()
assert meta != meta2
meta2 = conf3.config.metaconfig()
assert meta.config.name() == meta2.config.name()
assert meta.config('conf1').value.dict() == {'ip_admin_eth0': ['192.168.1.1']}
assert meta.config('conf2').value.dict() == {'ip_admin_eth0': ['192.168.1.1']}
@ -744,7 +744,7 @@ def test_meta_properties_meta_deepcopy():
meta.permissive.set(frozenset({'hidden'}))
meta.property.read_write()
meta2 = meta.config('conf1').config.deepcopy('conf3')
meta2 = meta.config('conf1').config.deepcopy(session_id='conf3')
assert meta != meta2
assert meta.permissive.get() == meta2.permissive.get()
@ -761,6 +761,22 @@ def test_meta_properties_meta_deepcopy():
assert meta2.config('conf3').value.dict() == {'ip_admin_eth0': ['192.168.1.1']}
def test_meta_properties_submeta_deepcopy():
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')
conf1.property.read_write()
meta1 = MetaConfig([conf1], session_id='meta1')
meta2 = MetaConfig([meta1], session_id='meta2')
meta_copy = conf1.config.deepcopy(session_id='conf2',
metaconfig_prefix='copy_')
assert meta_copy.config.name() == 'copy_meta2'
assert meta_copy.config('copy_meta1').config.name() == 'copy_meta1'
assert meta_copy.config('copy_meta1').config('conf2').config.name() == 'conf2'
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',))