add CIDR support
This commit is contained in:
@ -3,8 +3,8 @@ do_autopath()
|
||||
|
||||
import warnings
|
||||
from py.test import raises
|
||||
from tiramisu import Config ,IPOption, NetworkOption, NetmaskOption, \
|
||||
PortOption, BroadcastOption, OptionDescription
|
||||
from tiramisu import Config, IPOption, NetworkOption, NetmaskOption, \
|
||||
PortOption, BroadcastOption, OptionDescription
|
||||
from tiramisu.error import ValueWarning
|
||||
from tiramisu.storage import list_sessions
|
||||
|
||||
@ -38,6 +38,21 @@ def test_ip():
|
||||
assert len(w) == 1
|
||||
|
||||
|
||||
def test_ip_cidr():
|
||||
b = IPOption('b', '', private_only=True, cidr=True)
|
||||
c = IPOption('c', '', private_only=True)
|
||||
warnings.simplefilter("always", ValueWarning)
|
||||
od = OptionDescription('od', '', [b, c])
|
||||
config = Config(od)
|
||||
raises(ValueError, "config.option('b').value.set('192.168.1.1')")
|
||||
config.option('b').value.set('192.168.1.1/24')
|
||||
raises(ValueError, "config.option('b').value.set('192.168.1.1/32')")
|
||||
#
|
||||
config.option('c').value.set('192.168.1.1')
|
||||
raises(ValueError, "config.option('c').value.set('192.168.1.1/24')")
|
||||
raises(ValueError, "config.option('c').value.set('192.168.1.1/32')")
|
||||
|
||||
|
||||
def test_ip_default():
|
||||
a = IPOption('a', '', '88.88.88.88')
|
||||
od = OptionDescription('od', '', [a])
|
||||
@ -79,6 +94,18 @@ def test_network():
|
||||
assert len(w) == 1
|
||||
|
||||
|
||||
def test_network_cidr():
|
||||
a = NetworkOption('a', '', cidr=True)
|
||||
od = OptionDescription('od', '', [a])
|
||||
cfg = Config(od)
|
||||
cfg.option('a').value.set('192.168.1.1/32')
|
||||
cfg.option('a').value.set('192.168.1.0/24')
|
||||
cfg.option('a').value.set('88.88.88.88/32')
|
||||
cfg.option('a').value.set('0.0.0.0/0')
|
||||
raises(ValueError, "cfg.option('a').value.set('192.168.1.1')")
|
||||
raises(ValueError, "cfg.option('a').value.set('192.168.1.1/24')")
|
||||
|
||||
|
||||
def test_network_invalid():
|
||||
raises(ValueError, "NetworkOption('a', '', default='toto')")
|
||||
|
||||
|
@ -913,8 +913,9 @@ def test_consistency_ip_netmask_dyndescription():
|
||||
cfg.option('dodval1.aval1').value.set('192.168.1.1')
|
||||
cfg.option('dodval1.bval1').value.set('255.255.255.0')
|
||||
cfg.option('dodval2.aval2').value.set('192.168.1.2')
|
||||
cfg.option('dodval2.bval2').value.set('255.255.255.255')
|
||||
cfg.option('dodval2.bval2').value.set('255.255.255.128')
|
||||
cfg.option('dodval2.bval2').value.set('255.255.255.0')
|
||||
raises(ValueError, "cfg.option('dodval2.bval2').value.set('255.255.255.255')")
|
||||
|
||||
|
||||
def test_consistency_ip_in_network_dyndescription():
|
||||
|
@ -500,7 +500,7 @@ def test_consistency_ip_netmask():
|
||||
api.option('a').value.set('192.168.1.1')
|
||||
api.option('b').value.set('255.255.255.0')
|
||||
api.option('a').value.set('192.168.1.2')
|
||||
api.option('b').value.set('255.255.255.255')
|
||||
api.option('b').value.set('255.255.255.128')
|
||||
api.option('b').value.set('255.255.255.0')
|
||||
raises(ValueError, "api.option('a').value.set('192.168.1.0')")
|
||||
raises(ValueError, "api.option('a').value.set('192.168.1.255')")
|
||||
@ -567,6 +567,25 @@ def test_consistency_ip_in_network():
|
||||
assert len(w) == 1
|
||||
|
||||
|
||||
def test_consistency_ip_in_network_cidr():
|
||||
a = NetworkOption('a', '', cidr=True)
|
||||
c = IPOption('c', '')
|
||||
d = IPOption('d', '')
|
||||
od = OptionDescription('od', '', [a, c, d])
|
||||
c.impl_add_consistency('in_network', a)
|
||||
d.impl_add_consistency('in_network', a, warnings_only=True)
|
||||
warnings.simplefilter("always", ValueWarning)
|
||||
api = Config(od)
|
||||
api.option('a').value.set('192.168.1.0/24')
|
||||
api.option('c').value.set('192.168.1.1')
|
||||
raises(ValueError, "api.option('c').value.set('192.168.2.1')")
|
||||
raises(ValueError, "api.option('c').value.set('192.168.1.0')")
|
||||
raises(ValueError, "api.option('c').value.set('192.168.1.255')")
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
api.option('d').value.set('192.168.2.1')
|
||||
assert len(w) == 1
|
||||
|
||||
|
||||
def test_consistency_ip_in_network_invalid():
|
||||
a = NetworkOption('a', '')
|
||||
b = NetmaskOption('b', '')
|
||||
@ -593,7 +612,7 @@ def test_consistency_ip_netmask_multi():
|
||||
api.option('a.a').value.set(['192.168.1.1'])
|
||||
api.option('a.b', 0).value.set('255.255.255.0')
|
||||
api.option('a.a').value.set(['192.168.1.2'])
|
||||
api.option('a.b', 0).value.set('255.255.255.255')
|
||||
api.option('a.b', 0).value.set('255.255.255.128')
|
||||
api.option('a.b', 0).value.set('255.255.255.0')
|
||||
raises(ValueError, "api.option('a.a').value.set(['192.168.1.0'])")
|
||||
#
|
||||
@ -722,7 +741,7 @@ def test_consistency_ip_netmask_multi_leader():
|
||||
api.option('a.a').value.set(['192.168.1.1'])
|
||||
api.option('a.b', 0).value.set('255.255.255.0')
|
||||
api.option('a.a').value.set(['192.168.1.2'])
|
||||
api.option('a.b', 0).value.set('255.255.255.255')
|
||||
api.option('a.b', 0).value.set('255.255.255.128')
|
||||
api.option('a.b', 0).value.set('255.255.255.0')
|
||||
raises(ValueError, "api.option('a.a').value.set(['192.168.1.0'])")
|
||||
api.option('a.a').value.set(['192.168.1.128'])
|
||||
|
Reference in New Issue
Block a user