diff --git a/bundles/systemd-networkd/files/template-iface-dhcp.network b/bundles/systemd-networkd/files/template-iface-dhcp.network deleted file mode 100644 index 19fd0d8..0000000 --- a/bundles/systemd-networkd/files/template-iface-dhcp.network +++ /dev/null @@ -1,27 +0,0 @@ -<% - from ipaddress import ip_network -%>\ -[Match] -Name=${interface} - -[Network] -DHCP=yes -IPv6AcceptRA=yes - -[DHCPv4] -UseDomains=${str(config.get('use_dhcp_domains', False)).lower()} -UseHostname=no -UseMTU=${str(config.get('use_dhcp_mtu', True)).lower()} -UseNTP=${str(config.get('use_dhcp_ntp', False)).lower()} -UseTimezone=no - -% if config.get('send_hostname', True): -SendHostname=yes -Hostname=${node.name.split('.')[-1]} -% else: -SendHostname=no -% endif - -% if config.get('forwarding', False): -IPForward=yes -%endif diff --git a/bundles/systemd-networkd/files/template-iface-nodhcp.network b/bundles/systemd-networkd/files/template-iface.network similarity index 62% rename from bundles/systemd-networkd/files/template-iface-nodhcp.network rename to bundles/systemd-networkd/files/template-iface.network index 59c2d91..cbb10b6 100644 --- a/bundles/systemd-networkd/files/template-iface-nodhcp.network +++ b/bundles/systemd-networkd/files/template-iface.network @@ -25,30 +25,47 @@ Destination=${route} GatewayOnlink=yes % endfor -% if 'gateway4' in config: +% if not config.get('dhcp', False): +% if 'gateway4' in config: [Route] Gateway=${config['gateway4']} GatewayOnlink=yes -% endif -% if 'gateway6' in config: +% endif +% if 'gateway6' in config: [Route] Gateway=${config['gateway6']} GatewayOnlink=yes +% endif % endif [Network] -DHCP=no -% if config.get('ipv6_accept_ra', False): +% if config.get('ipv6_accept_ra', False) or config.get('dhcp', False): IPv6AcceptRA=yes % else: IPv6AcceptRA=no % endif +% if config.get('dhcp', False): +DHCP=yes +IPv6AcceptRA=yes -% if config.get('forwarding', False): -IPForward=yes -%endif +[DHCPv4] +UseDomains=false +UseHostname=no +UseMTU=true +UseNTP=false +UseTimezone=no + +SendHostname=no +% else: +DHCP=no +% endif % for vlan in sorted(config.get('vlans', set())): VLAN=${interface}.${vlan} % endfor +% if 'activation_policy' in config: + +[Link] +ActivationPolicy=${config['activation_policy']} +% endif diff --git a/bundles/systemd-networkd/items.py b/bundles/systemd-networkd/items.py index 969c3e2..7bd0808 100644 --- a/bundles/systemd-networkd/items.py +++ b/bundles/systemd-networkd/items.py @@ -40,9 +40,7 @@ for interface, config in node.metadata.get('interfaces').items(): if config.get('dhcp', False): if 'vlans' in config: raise BundleError(f'{node.name} interface {interface} cannot use vlans and dhcp!') - template = 'template-iface-dhcp.network' else: - template = 'template-iface-nodhcp.network' all_interfaces_use_dhcp = False if '.' in interface: @@ -80,7 +78,7 @@ for interface, config in node.metadata.get('interfaces').items(): if not config.get('ignore', False): files[f'/etc/systemd/network/{interface}.network'] = { - 'source': template, + 'source': 'template-iface.network', 'content_type': 'mako', 'context': { 'interface': interface,