library: add 'rule_append_only' setting

It works like 'route_append_only' and can be used to prevent
the role from deleting rule files. That makes especaily sense,
because the role currently doesn't support routing rules.

Also, NetworkManager still doesn't support routing rules either.
One day, the role (and maybe NetworkManager) will support rules,
and at that point it will start configuring them. That is the
reason why the new option already defaults to 'False'. Because,
once we add support for rules, we want the role to manage them
by default.
This commit is contained in:
Thomas Haller 2017-11-17 13:23:28 +01:00
parent 936b5c93cc
commit 9740d8d024
2 changed files with 22 additions and 0 deletions

View file

@ -723,6 +723,7 @@ class ArgValidator_DictIP(ArgValidatorDict):
default_value = list,
),
ArgValidatorBool('route_append_only'),
ArgValidatorBool('rule_append_only'),
ArgValidatorList('dns',
nested = ArgValidatorIP('dns[?]', plain_address=False),
default_value = list,
@ -743,6 +744,7 @@ class ArgValidator_DictIP(ArgValidatorDict):
'address': [],
'route': [],
'route_append_only': False,
'rule_append_only': False,
'dns': [],
'dns_search': [],
},
@ -1247,6 +1249,10 @@ class IfcfgUtil:
ip['route_append_only'] and content_current,
content_current['route6'] if content_current else None)
if ip['rule_append_only'] and content_current:
rule4_file = content_current['rule']
rule6_file = content_current['rule6']
for key in list(ifcfg.keys()):
v = ifcfg[key]
if v is None:

View file

@ -242,6 +242,7 @@ class TestValidator(unittest.TestCase):
'dhcp4': True,
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'route_metric6': None,
'dhcp4_send_hostname': None,
@ -290,6 +291,7 @@ class TestValidator(unittest.TestCase):
'dhcp4': True,
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'dns': [],
'dns_search': [],
@ -360,6 +362,7 @@ class TestValidator(unittest.TestCase):
}
],
'route_append_only': False,
'rule_append_only': False,
'route': [],
},
'state': 'up',
@ -415,6 +418,7 @@ class TestValidator(unittest.TestCase):
}
],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'route_metric6': None,
'route_metric4': None,
@ -466,6 +470,7 @@ class TestValidator(unittest.TestCase):
},
],
'route_append_only': False,
'rule_append_only': False,
'route': [
{
'family': socket.AF_INET,
@ -519,6 +524,7 @@ class TestValidator(unittest.TestCase):
},
],
'route_append_only': False,
'rule_append_only': False,
'route': [
{
'network': '192.168.5.0',
@ -547,6 +553,7 @@ class TestValidator(unittest.TestCase):
'dns': [],
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
},
'mac': None,
@ -573,6 +580,7 @@ class TestValidator(unittest.TestCase):
'auto6': True,
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'route_metric6': None,
'route_metric4': None,
@ -637,6 +645,7 @@ class TestValidator(unittest.TestCase):
'dns': [],
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
},
'mac': None,
@ -686,6 +695,7 @@ class TestValidator(unittest.TestCase):
'dns': [],
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
},
'mac': None,
@ -731,6 +741,7 @@ class TestValidator(unittest.TestCase):
'ip': {
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'auto6': True,
'dhcp4': True,
@ -782,6 +793,7 @@ class TestValidator(unittest.TestCase):
'dhcp4': True,
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'dns': [],
'dns_search': [ ],
@ -826,6 +838,7 @@ class TestValidator(unittest.TestCase):
'dhcp4': True,
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [],
'dns': [],
'dns_search': [ ],
@ -872,6 +885,7 @@ class TestValidator(unittest.TestCase):
'dhcp4': True,
'address': [],
'route_append_only': False,
'rule_append_only': False,
'route': [
{
'family': socket.AF_INET,
@ -962,6 +976,7 @@ class TestValidator(unittest.TestCase):
'dhcp4': True,
'address': [],
'route_append_only': True,
'rule_append_only': False,
'route': [
{
'family': socket.AF_INET,
@ -1011,6 +1026,7 @@ class TestValidator(unittest.TestCase):
'ip': {
'dns_search': [ 'aa', 'bb' ],
'route_append_only': True,
'rule_append_only': False,
'route': [
{
'network': '192.168.45.0',