From 91fd33cfa03aaf647669c59e802826b6cf8efca0 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Mon, 9 Nov 2020 14:58:09 +0100 Subject: [PATCH] bundles/systemd-networkd: better dhcp support --- .../systemd-networkd/files/template-dhcp.network | 14 ++++++++++++++ bundles/systemd-networkd/files/template.network | 7 ------- bundles/systemd-networkd/items.py | 7 ++++++- 3 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 bundles/systemd-networkd/files/template-dhcp.network diff --git a/bundles/systemd-networkd/files/template-dhcp.network b/bundles/systemd-networkd/files/template-dhcp.network new file mode 100644 index 0000000..65c4a67 --- /dev/null +++ b/bundles/systemd-networkd/files/template-dhcp.network @@ -0,0 +1,14 @@ +<% + from ipaddress import ip_network +%>\ +[Match] +Name=${interface} + +[Network] +DHCP=yes +IPv6AcceptRA=yes +UseHostname=no + +% if config.get('forwarding', False): +IPForward=yes +%endif diff --git a/bundles/systemd-networkd/files/template.network b/bundles/systemd-networkd/files/template.network index 03bb020..2d9d124 100644 --- a/bundles/systemd-networkd/files/template.network +++ b/bundles/systemd-networkd/files/template.network @@ -4,7 +4,6 @@ [Match] Name=${interface} - % for addr in sorted(config.get('ips', set())): [Address] <% @@ -31,14 +30,8 @@ GatewayOnLink=yes % endif [Network] -% if config.get('dhcp', False): -DHCP=yes -IPv6AcceptRA=yes -UseHostname=no -% else: DHCP=no IPv6AcceptRA=no -% endif % if config.get('forwarding', False): IPForward=yes diff --git a/bundles/systemd-networkd/items.py b/bundles/systemd-networkd/items.py index 9980ab5..448b705 100644 --- a/bundles/systemd-networkd/items.py +++ b/bundles/systemd-networkd/items.py @@ -15,8 +15,13 @@ directories = { # Don't use .get() here. We might end up with a node without a network # config! for interface, config in node.metadata['interfaces'].items(): + if config.get('dhcp', False): + template = 'template-dhcp.network' + else: + template = 'template.network' + files['/etc/systemd/network/10-{}.network'.format(interface)] = { - 'source': 'template.network', + 'source': template, 'content_type': 'mako', 'context': { 'interface': interface,