summaryrefslogtreecommitdiff
path: root/cloudinit/net
diff options
context:
space:
mode:
authordermotbradley <dermot_bradley@yahoo.com>2020-11-09 17:24:55 +0000
committerGitHub <noreply@github.com>2020-11-09 12:24:55 -0500
commit57349eb7df1c422d9e9558e54b201c85778997ae (patch)
treec6371d6ebc7b4f31a9898d2e4abaa64cb3cacd4b /cloudinit/net
parent0dc2d0304a7fa33af18475b99e808fbcdcad44f2 (diff)
downloadvyos-cloud-init-57349eb7df1c422d9e9558e54b201c85778997ae.tar.gz
vyos-cloud-init-57349eb7df1c422d9e9558e54b201c85778997ae.zip
Make wakeonlan Network Config v2 setting actually work (#626)
Add code so that specifying "wakeonlan: true" actually results in relevant configuration entry appearing in /etc/network/interfaces, Netplan, and sysconfig for RHEL and OpenSuse. Add testcases for the above.
Diffstat (limited to 'cloudinit/net')
-rw-r--r--cloudinit/net/eni.py4
-rw-r--r--cloudinit/net/network_state.py6
-rw-r--r--cloudinit/net/sysconfig.py5
3 files changed, 14 insertions, 1 deletions
diff --git a/cloudinit/net/eni.py b/cloudinit/net/eni.py
index 13c041f3..0074691b 100644
--- a/cloudinit/net/eni.py
+++ b/cloudinit/net/eni.py
@@ -401,6 +401,10 @@ class Renderer(renderer.Renderer):
sections = []
subnets = iface.get('subnets', {})
accept_ra = iface.pop('accept-ra', None)
+ ethernet_wol = iface.pop('wakeonlan', None)
+ if ethernet_wol:
+ # Specify WOL setting 'g' for using "Magic Packet"
+ iface['ethernet-wol'] = 'g'
if subnets:
for index, subnet in enumerate(subnets):
ipv4_subnet_mtu = None
diff --git a/cloudinit/net/network_state.py b/cloudinit/net/network_state.py
index d9e7fd58..e8bf9e39 100644
--- a/cloudinit/net/network_state.py
+++ b/cloudinit/net/network_state.py
@@ -369,6 +369,9 @@ class NetworkStateInterpreter(metaclass=CommandHandlerMeta):
accept_ra = command.get('accept-ra', None)
if accept_ra is not None:
accept_ra = util.is_true(accept_ra)
+ wakeonlan = command.get('wakeonlan', None)
+ if wakeonlan is not None:
+ wakeonlan = util.is_true(wakeonlan)
iface.update({
'name': command.get('name'),
'type': command.get('type'),
@@ -379,7 +382,8 @@ class NetworkStateInterpreter(metaclass=CommandHandlerMeta):
'address': None,
'gateway': None,
'subnets': subnets,
- 'accept-ra': accept_ra
+ 'accept-ra': accept_ra,
+ 'wakeonlan': wakeonlan,
})
self._network_state['interfaces'].update({command.get('name'): iface})
self.dump_network_state()
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
index b0eecc44..a930e612 100644
--- a/cloudinit/net/sysconfig.py
+++ b/cloudinit/net/sysconfig.py
@@ -367,6 +367,11 @@ class Renderer(renderer.Renderer):
if new_key:
iface_cfg[new_key] = old_value
+ # only set WakeOnLan for physical interfaces
+ if ('wakeonlan' in iface and iface['wakeonlan'] and
+ iface['type'] == 'physical'):
+ iface_cfg['ETHTOOL_OPTS'] = 'wol g'
+
@classmethod
def _render_subnets(cls, iface_cfg, subnets, has_default_route, flavor):
# setting base values