python 3 compatibility
remove __eq__ and __ne__ in Option
This commit is contained in:
@ -9,6 +9,7 @@ from py.test import raises
|
||||
from tiramisu.config import Config
|
||||
from tiramisu.option import IntOption, FloatOption, StrOption, ChoiceOption, \
|
||||
BoolOption, UnicodeOption, OptionDescription
|
||||
from tiramisu.error import ConflictError
|
||||
|
||||
|
||||
def make_description():
|
||||
@ -199,3 +200,14 @@ def test_values_not_setitem():
|
||||
root = OptionDescription('root', '', [d1])
|
||||
config = Config(root)
|
||||
raises(ValueError, "config.cfgimpl_get_values()[g1] = 2")
|
||||
|
||||
|
||||
def test_duplicated_option():
|
||||
g1 = IntOption('g1', '', 1)
|
||||
#in same OptionDescription
|
||||
raises(ConflictError, "d1 = OptionDescription('od', '', [g1, g1])")
|
||||
d1 = OptionDescription('od1', '', [g1])
|
||||
d2 = OptionDescription('od2', '', [g1])
|
||||
root = OptionDescription('root', '', [d1, d2])
|
||||
#in different OptionDescription
|
||||
raises(ConflictError, "config = Config(root)")
|
||||
|
@ -44,7 +44,7 @@ def test_freeze_whole_config():
|
||||
prop = []
|
||||
try:
|
||||
conf.gc.dummy = True
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
setting.remove('everything_frozen')
|
||||
@ -65,7 +65,7 @@ def test_freeze_one_option():
|
||||
prop = []
|
||||
try:
|
||||
conf.gc.dummy = True
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
|
||||
@ -82,7 +82,7 @@ def test_frozen_value():
|
||||
prop = []
|
||||
try:
|
||||
config.string = "egg"
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
|
||||
@ -99,7 +99,7 @@ def test_freeze():
|
||||
prop = []
|
||||
try:
|
||||
conf.gc.name = 'framework'
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
|
||||
@ -115,7 +115,7 @@ def test_freeze_multi():
|
||||
prop = []
|
||||
try:
|
||||
conf.boolop = [True]
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
|
||||
@ -133,7 +133,7 @@ def test_freeze_get_multi():
|
||||
prop = []
|
||||
try:
|
||||
valmulti.append(False)
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
|
||||
|
@ -2,7 +2,7 @@ import autopath
|
||||
|
||||
#from py.test import raises
|
||||
from tiramisu.config import Config, mandatory_warnings
|
||||
from tiramisu.option import StrOption, OptionDescription, UnicodeOption
|
||||
from tiramisu.option import StrOption, UnicodeOption, OptionDescription
|
||||
from tiramisu.error import PropertiesOptionError
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ def test_mandatory_ro():
|
||||
prop = []
|
||||
try:
|
||||
config.str1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
config.read_write()
|
||||
@ -61,7 +61,7 @@ def test_mandatory_default():
|
||||
prop = []
|
||||
try:
|
||||
config.str
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
|
||||
@ -76,7 +76,7 @@ def test_mandatory_none():
|
||||
prop = []
|
||||
try:
|
||||
config.str1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
|
||||
@ -90,7 +90,7 @@ def test_mandatory_empty():
|
||||
prop = []
|
||||
try:
|
||||
config.str1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
|
||||
@ -104,7 +104,7 @@ def test_mandatory_multi_none():
|
||||
prop = []
|
||||
try:
|
||||
config.str3
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
config.read_write()
|
||||
@ -114,7 +114,7 @@ def test_mandatory_multi_none():
|
||||
prop = []
|
||||
try:
|
||||
config.str3
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
|
||||
@ -128,7 +128,7 @@ def test_mandatory_multi_empty():
|
||||
prop = []
|
||||
try:
|
||||
config.str3
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
config.read_write()
|
||||
@ -138,7 +138,7 @@ def test_mandatory_multi_empty():
|
||||
prop = []
|
||||
try:
|
||||
config.str3
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'mandatory' in prop
|
||||
|
||||
@ -160,16 +160,16 @@ def test_mandatory_disabled():
|
||||
prop = []
|
||||
try:
|
||||
config.str1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert prop == ['mandatory']
|
||||
setting[descr.str1].append('disabled')
|
||||
prop = []
|
||||
try:
|
||||
config.str1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert prop == ['disabled', 'mandatory']
|
||||
assert set(prop) == set(['disabled', 'mandatory'])
|
||||
|
||||
|
||||
def test_mandatory_unicode():
|
||||
@ -180,7 +180,7 @@ def test_mandatory_unicode():
|
||||
prop = []
|
||||
try:
|
||||
config.unicode2
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert prop == ['mandatory']
|
||||
config.read_write()
|
||||
@ -189,7 +189,7 @@ def test_mandatory_unicode():
|
||||
prop = []
|
||||
try:
|
||||
config.unicode2
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert prop == ['mandatory']
|
||||
|
||||
@ -202,7 +202,7 @@ def test_mandatory_warnings_ro():
|
||||
proc = []
|
||||
try:
|
||||
config.str
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
proc = err.proptype
|
||||
assert proc == ['mandatory']
|
||||
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
||||
|
@ -6,33 +6,33 @@ import autopath
|
||||
from tiramisu.option import BoolOption, IntOption
|
||||
|
||||
|
||||
def test_option_comparison():
|
||||
"compare :class:`tiramisu.option.BoolOption`"
|
||||
dummy1 = BoolOption('dummy1', 'doc dummy')
|
||||
dummy2 = BoolOption('dummy2', 'doc dummy')
|
||||
dummy3 = BoolOption('dummy1', 'doc dummy')
|
||||
assert dummy1 != dummy2
|
||||
assert dummy1 == dummy3
|
||||
#def test_option_comparison():
|
||||
# "compare :class:`tiramisu.option.BoolOption`"
|
||||
# dummy1 = BoolOption('dummy1', 'doc dummy')
|
||||
# dummy2 = BoolOption('dummy2', 'doc dummy')
|
||||
# dummy3 = BoolOption('dummy1', 'doc dummy')
|
||||
# assert dummy1 != dummy2
|
||||
# assert dummy1 == dummy3
|
||||
|
||||
|
||||
def test_option_comparison_obj():
|
||||
"compare :class:`tiramisu.option.IntOption`"
|
||||
dummy1 = BoolOption('dummy1', 'doc dummy')
|
||||
dummy2 = IntOption('dummy1', 'doc dummy')
|
||||
assert dummy1 != dummy2
|
||||
#def test_option_comparison_obj():
|
||||
# "compare :class:`tiramisu.option.IntOption`"
|
||||
# dummy1 = BoolOption('dummy1', 'doc dummy')
|
||||
# dummy2 = IntOption('dummy1', 'doc dummy')
|
||||
# assert dummy1 != dummy2
|
||||
|
||||
|
||||
def test_option_comparison_advanced():
|
||||
dummy1 = BoolOption('dummy1', 'doc dummy')
|
||||
dummy2 = BoolOption('dummy1', 'doc dummy')
|
||||
dummy3 = BoolOption('dummy1', 'doc dummy', None)
|
||||
dummy4 = BoolOption('dummy1', 'doc dummy', True)
|
||||
dummy5 = BoolOption('dummy1', 'doc dummy', multi=True)
|
||||
dummy6 = BoolOption('dummy1', 'doc dummy', properties=tuple())
|
||||
dummy7 = BoolOption('dummy1', 'doc dummy', properties=tuple('new',))
|
||||
assert dummy1 == dummy2
|
||||
assert dummy1 == dummy3
|
||||
assert dummy1 != dummy4
|
||||
assert dummy1 != dummy5
|
||||
assert dummy1 == dummy6
|
||||
assert dummy1 != dummy7
|
||||
#def test_option_comparison_advanced():
|
||||
# dummy1 = BoolOption('dummy1', 'doc dummy')
|
||||
# dummy2 = BoolOption('dummy1', 'doc dummy')
|
||||
# dummy3 = BoolOption('dummy1', 'doc dummy', None)
|
||||
# dummy4 = BoolOption('dummy1', 'doc dummy', True)
|
||||
# dummy5 = BoolOption('dummy1', 'doc dummy', multi=True)
|
||||
# dummy6 = BoolOption('dummy1', 'doc dummy', properties=tuple())
|
||||
# dummy7 = BoolOption('dummy1', 'doc dummy', properties=tuple('new',))
|
||||
# assert dummy1 == dummy2
|
||||
# assert dummy1 == dummy3
|
||||
# assert dummy1 != dummy4
|
||||
# assert dummy1 != dummy5
|
||||
# assert dummy1 == dummy6
|
||||
# assert dummy1 != dummy7
|
||||
|
@ -71,7 +71,7 @@ def test_group_is_hidden():
|
||||
prop = []
|
||||
try:
|
||||
config.gc.dummy = False
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'hidden' in prop
|
||||
|
||||
@ -89,7 +89,7 @@ def test_group_is_hidden_multi():
|
||||
prop = []
|
||||
try:
|
||||
objspace.append('std')
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
prop = err.proptype
|
||||
assert 'hidden' in prop
|
||||
setting[obj].remove('hidden')
|
||||
|
@ -20,14 +20,14 @@ def test_permissive():
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
setting.setpermissive(('disabled',))
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
setting.append('permissive')
|
||||
@ -36,7 +36,7 @@ def test_permissive():
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -49,18 +49,18 @@ def test_permissive_mandatory():
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled', 'mandatory']
|
||||
assert set(props) == set(['disabled', 'mandatory'])
|
||||
setting.setpermissive(('mandatory', 'disabled',))
|
||||
setting.append('permissive')
|
||||
config.u1
|
||||
setting.remove('permissive')
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled', 'mandatory']
|
||||
assert set(props) == set(['disabled', 'mandatory'])
|
||||
|
||||
|
||||
def test_permissive_frozen():
|
||||
@ -71,7 +71,7 @@ def test_permissive_frozen():
|
||||
setting.setpermissive(('frozen', 'disabled',))
|
||||
try:
|
||||
config.u1 = 1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['frozen', 'disabled']
|
||||
setting.append('permissive')
|
||||
@ -80,7 +80,7 @@ def test_permissive_frozen():
|
||||
setting.remove('permissive')
|
||||
try:
|
||||
config.u1 = 1
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['frozen', 'disabled']
|
||||
|
||||
|
@ -21,7 +21,7 @@ def test_requires():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -47,14 +47,14 @@ def test_requires_same_action():
|
||||
props = []
|
||||
try:
|
||||
c.activate_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['new']
|
||||
#
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -72,7 +72,7 @@ def test_multiple_requires():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -80,7 +80,7 @@ def test_multiple_requires():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -99,7 +99,7 @@ def test_multiple_requires_inverse():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -113,7 +113,7 @@ def test_multiple_requires_inverse():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -136,14 +136,14 @@ def test_requires_transitive():
|
||||
props = []
|
||||
try:
|
||||
c.activate_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
#
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -167,14 +167,14 @@ def test_requires_transitive_bis():
|
||||
props = []
|
||||
try:
|
||||
c.activate_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
#
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -196,7 +196,7 @@ def test_requires_transitive_hidden_disabled():
|
||||
props = []
|
||||
try:
|
||||
c.activate_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['hidden']
|
||||
raises(RequirementError, 'c.ip_address_service_web')
|
||||
@ -220,7 +220,7 @@ def test_requires_not_transitive():
|
||||
props = []
|
||||
try:
|
||||
c.activate_service_web
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
#
|
||||
@ -237,7 +237,7 @@ def test_requires_None():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
c.activate_service = False
|
||||
@ -260,7 +260,7 @@ def test_requires_multi_disabled():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -271,7 +271,7 @@ def test_requires_multi_disabled():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -279,7 +279,7 @@ def test_requires_multi_disabled():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -299,7 +299,7 @@ def test_requires_multi_disabled_inverse():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -307,7 +307,7 @@ def test_requires_multi_disabled_inverse():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -315,7 +315,7 @@ def test_requires_multi_disabled_inverse():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -323,7 +323,7 @@ def test_requires_multi_disabled_inverse():
|
||||
props = []
|
||||
try:
|
||||
c.ip_address_service
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -362,7 +362,7 @@ def test_requires_multi_disabled_2():
|
||||
props = []
|
||||
try:
|
||||
cfg.z
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
for boo in list_bools:
|
||||
@ -373,7 +373,7 @@ def test_requires_multi_disabled_2():
|
||||
props = []
|
||||
try:
|
||||
cfg.z
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -407,7 +407,7 @@ def test_requires_multi_disabled_inverse_2():
|
||||
props = []
|
||||
try:
|
||||
cfg.z
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
for boo in list_bools:
|
||||
@ -418,7 +418,7 @@ def test_requires_multi_disabled_inverse_2():
|
||||
props = []
|
||||
try:
|
||||
cfg.z
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
for boo in list_bools:
|
||||
@ -426,7 +426,7 @@ def test_requires_multi_disabled_inverse_2():
|
||||
props = []
|
||||
try:
|
||||
cfg.z
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
|
@ -46,14 +46,14 @@ def test_symlink_requires():
|
||||
props = []
|
||||
try:
|
||||
config.s
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
#
|
||||
props = []
|
||||
try:
|
||||
config.c
|
||||
except PropertiesOptionError, err:
|
||||
except PropertiesOptionError as err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
@ -113,7 +113,7 @@ def test_symlink_master():
|
||||
|
||||
def test_symlink_slaves():
|
||||
a = StrOption('a', "", multi=True)
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', u"ip réseau autorisé", multi=True)
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
|
||||
netmask_admin_eth0 = SymLinkOption('netmask_admin_eth0', a)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
raises(ValueError, 'interface1.impl_set_group_type(groups.master)')
|
||||
|
Reference in New Issue
Block a user