mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Adding support to manage networks on Debian/Ubuntu systems.
This commit is contained in:
parent
7442158364
commit
e30bd1673e
9 changed files with 1287 additions and 7 deletions
1206
salt/modules/debian_ip.py
Normal file
1206
salt/modules/debian_ip.py
Normal file
File diff suppressed because it is too large
Load diff
|
@ -887,7 +887,7 @@ def build_interface(iface, iface_type, enabled, **settings):
|
|||
return ''
|
||||
ifcfg = template.render(opts)
|
||||
|
||||
if settings['test']:
|
||||
if 'test' in settings and settings['test']:
|
||||
return _read_temp(ifcfg)
|
||||
|
||||
_write_file_iface(iface, ifcfg, _RH_NETWORK_SCRIPT_DIR, 'ifcfg-{0}')
|
||||
|
|
|
@ -158,6 +158,9 @@ from salt.loader import _create_loader
|
|||
# Define the module's virtual name
|
||||
__virtualname__ = 'network'
|
||||
|
||||
# Set up logging
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
def __virtual__():
|
||||
'''
|
||||
|
@ -197,13 +200,15 @@ def managed(name, type, enabled=True, **kwargs):
|
|||
'result': True,
|
||||
'comment': 'Interface {0} is up to date.'.format(name),
|
||||
}
|
||||
kwargs['test'] = __opts__['test']
|
||||
#kwargs['test'] = __opts__['test']
|
||||
if not kwargs.has_key('test'):
|
||||
kwargs['test'] = False
|
||||
|
||||
# Build interface
|
||||
try:
|
||||
old = __salt__['ip.get_interface'](name)
|
||||
new = __salt__['ip.build_interface'](name, type, enabled, **kwargs)
|
||||
if __opts__['test']:
|
||||
if kwargs['test']:
|
||||
if old == new:
|
||||
pass
|
||||
if not old and new:
|
||||
|
@ -218,9 +223,13 @@ def managed(name, type, enabled=True, **kwargs):
|
|||
ret['changes']['interface'] = ''.join(diff)
|
||||
else:
|
||||
if not old and new:
|
||||
ret['comment'] = 'Interface {0} ' \
|
||||
'added.'.format(name)
|
||||
ret['changes']['interface'] = 'Added network interface.'
|
||||
elif old != new:
|
||||
diff = difflib.unified_diff(old, new)
|
||||
ret['comment'] = 'Interface {0} ' \
|
||||
'updated.'.format(name)
|
||||
ret['changes']['interface'] = ''.join(diff)
|
||||
except AttributeError as error:
|
||||
ret['result'] = False
|
||||
|
@ -232,7 +241,7 @@ def managed(name, type, enabled=True, **kwargs):
|
|||
try:
|
||||
old = __salt__['ip.get_bond'](name)
|
||||
new = __salt__['ip.build_bond'](name, **kwargs)
|
||||
if __opts__['test']:
|
||||
if kwargs['test']:
|
||||
if old == new:
|
||||
pass
|
||||
if not old and new:
|
||||
|
@ -247,9 +256,13 @@ def managed(name, type, enabled=True, **kwargs):
|
|||
ret['changes']['bond'] = ''.join(diff)
|
||||
else:
|
||||
if not old and new:
|
||||
ret['comment'] = 'Bond interface {0} ' \
|
||||
'added.'.format(name)
|
||||
ret['changes']['bond'] = 'Added bond {0}.'.format(name)
|
||||
elif old != new:
|
||||
diff = difflib.unified_diff(old, new)
|
||||
ret['comment'] = 'Bond interface {0} ' \
|
||||
'updated.'.format(name)
|
||||
ret['changes']['bond'] = ''.join(diff)
|
||||
except AttributeError as error:
|
||||
#TODO Add a way of reversing the interface changes.
|
||||
|
@ -257,7 +270,7 @@ def managed(name, type, enabled=True, **kwargs):
|
|||
ret['comment'] = error.message
|
||||
return ret
|
||||
|
||||
if __opts__['test']:
|
||||
if kwargs['test']:
|
||||
return ret
|
||||
|
||||
# Bring up/shutdown interface
|
||||
|
@ -295,12 +308,15 @@ def routes(name, **kwargs):
|
|||
'comment': 'Interface {0} routes are up to date.'.format(name),
|
||||
}
|
||||
apply_routes = False
|
||||
kwargs['test'] = __opts__['test']
|
||||
#kwargs['test'] = __opts__['test']
|
||||
if not kwargs.has_key('test'):
|
||||
kwargs['test'] = False
|
||||
|
||||
# Build interface routes
|
||||
try:
|
||||
old = __salt__['ip.get_routes'](name)
|
||||
new = __salt__['ip.build_routes'](name, **kwargs)
|
||||
if __opts__['test']:
|
||||
if kwargs['test']:
|
||||
if old == new:
|
||||
return ret
|
||||
if not old and new:
|
||||
|
@ -315,10 +331,12 @@ def routes(name, **kwargs):
|
|||
return ret
|
||||
if not old and new:
|
||||
apply_routes = True
|
||||
ret['comment'] = 'Interface {0} routes added.'.format(name)
|
||||
ret['changes']['network_routes'] = 'Added interface {0} routes.'.format(name)
|
||||
elif old != new:
|
||||
diff = difflib.unified_diff(old, new)
|
||||
apply_routes = True
|
||||
ret['comment'] = 'Interface {0} routes updated.'.format(name)
|
||||
ret['changes']['network_routes'] = ''.join(diff)
|
||||
except AttributeError as error:
|
||||
ret['result'] = False
|
||||
|
|
3
salt/templates/debian_ip/conf.jinja
Normal file
3
salt/templates/debian_ip/conf.jinja
Normal file
|
@ -0,0 +1,3 @@
|
|||
alias {{name}} bonding
|
||||
options {{name}} {% for item in bonding %}{{item}}={{bonding[item]}} {%endfor%}
|
||||
|
28
salt/templates/debian_ip/debian_eth.jinja
Normal file
28
salt/templates/debian_ip/debian_eth.jinja
Normal file
|
@ -0,0 +1,28 @@
|
|||
{% if data.enabled %}auto {{name}}
|
||||
{%endif%}{% if data.hotplug %}allow-hotplug {{name}}
|
||||
{%endif%}{% for interface in data.data %}iface {{name}} {{interface.inet_type}} {{interface.proto}}
|
||||
{% if interface.address %} address {{interface.address}}
|
||||
{%endif%}{% if interface.netmask %} netmask {{interface.netmask}}
|
||||
{%endif%}{% if interface.broadcast %} broadcast {{interface.broadcast}}
|
||||
{%endif%}{% if interface.gateway %} gateway {{interface.gateway}}
|
||||
{%endif%}{% if interface.addr %} hwaddress {{interface.addr}}
|
||||
{%endif%}{% if interface.vlan_raw_device %} vlan-raw-device {{interface.vlan_raw_device}}
|
||||
{%endif%}{%if interface.ethtool %}{%for item in interface.ethtool_keys %} {{item}} {{interface.ethtool[item]}}
|
||||
{%endfor%}{%endif%}{%if data.bonding %}{%for item in data.bonding %} bond_{{item}} {{data.bonding[item]}}
|
||||
{%endfor%}{%endif%}{% if interface.bridge_options -%}
|
||||
{% if interface.bridge_options.ports %} bridge_ports {{interface.bridge_options.ports}}
|
||||
{%endif-%}
|
||||
{%endif%}{% if interface.up_cmds %}{% for cmd in interface.up_cmds %} up {{ cmd }}
|
||||
{%endfor-%}
|
||||
{%endif%}{% if interface.down_cmds %}{% for cmd in interface.down_cmds %} down {{ cmd }}
|
||||
{%endfor-%}
|
||||
{%endif%}{% if interface.pre_up_cmds %}{% for cmd in interface.pre_up_cmds %} pre-up {{ cmd }}
|
||||
{%endfor-%}
|
||||
{%endif%}{% if interface.post_up_cmds %}{% for cmd in interface.post_up_cmds %} post-up {{ cmd }}
|
||||
{%endfor-%}
|
||||
{%endif%}{% if interface.pre_down_cmds %}{% for cmd in interface.pre_down_cmds %} pre-down {{ cmd }}
|
||||
{%endfor-%}
|
||||
{%endif%}{% if interface.post_down_cmds %}{% for cmd in interface.post_down_cmds %} post-down {{ cmd }}
|
||||
{%endfor-%}
|
||||
{%endif%}
|
||||
{%endfor%}
|
15
salt/templates/debian_ip/debian_eth.jinja.orig
Normal file
15
salt/templates/debian_ip/debian_eth.jinja.orig
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% for adapter in adapters %}{% if adapters[adapter].enabled %}auto {{adapter}}
|
||||
{%endif%}{% if adapters[adapter].hotplug %}allow-hotplug {{adapter}}
|
||||
{%endif%}{% for interface in adapters[adapter]['data'] %}iface {{adapter}} {{interface.inet_type}} {{interface.proto}}
|
||||
{% if interface.address %} address {{interface.address}}
|
||||
{%endif%}{% if interface.netmask %} netmask {{interface.netmask}}
|
||||
{%endif%}{% if interface.broadcast %} brodcast {{interface.broadcast}}
|
||||
{%endif%}{% if interface.gateway %} gateway {{interface.gateway}}
|
||||
{%endif%}{% if interface.addr %} hwaddress {{interface.addr}}
|
||||
{%endif%}{% if interface.up_cmds %} up {{interface.up_cmds}}
|
||||
{%endif%}{% if interface.down_cmds %} down {{interface.down_cmds}}
|
||||
{%endif%}{% if interface.pre_up_cmds %} pre-up {{interface.pre_up_cmds}}
|
||||
{%endif%}{% if interface.pre_down_cmds %} hwaddress {{interface.pre_down_cmds}}
|
||||
{%endif%}
|
||||
{%endfor%}
|
||||
{%endfor%}
|
5
salt/templates/debian_ip/route_eth.jinja
Normal file
5
salt/templates/debian_ip/route_eth.jinja
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
# {{route_type}}
|
||||
{% for route in routes %}{% if route.name %}# {{route.name}}
|
||||
{%endif%}route {{route_type}} -net {% if route.ipaddr %}{{route.ipaddr}}{%endif%} {% if route.netmask %}netmask {{route.netmask}}{%endif%} {% if route.gateway %}gateway {{route.gateway}}{%endif%}
|
||||
{% endfor %}
|
4
salt/templates/debian_ip/route_eth.jinja.old
Normal file
4
salt/templates/debian_ip/route_eth.jinja.old
Normal file
|
@ -0,0 +1,4 @@
|
|||
{% for route in routes %}
|
||||
{% if route.name %}# {{route.name}}
|
||||
{%endif%}{% if route.ipaddr %}{{route.ipaddr}} {%endif%}{% if route.netmask %}{{route.netmask}} {%endif%}{% if route.gateway %}{{route.gateway}} {%endif%}{% if iface %}{{iface}}{%endif%}
|
||||
{% endfor %}
|
1
setup.py
1
setup.py
|
@ -433,6 +433,7 @@ SETUP_KWARGS = {'name': NAME,
|
|||
],
|
||||
'package_data': {'salt.templates': [
|
||||
'rh_ip/*.jinja',
|
||||
'debian_ip/*.jinja',
|
||||
'virt/*.jinja'
|
||||
],
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue