Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions tests/integration_tests/bugs/test_gh626.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""Integration test for gh-626.

Ensure if wakeonlan is specified in the network config that it is rendered
in the /etc/network/interfaces or netplan config.
"""

import pytest
import yaml

from tests.integration_tests.clouds import ImageSpecification
from tests.integration_tests.instances import IntegrationInstance


NETWORK_CONFIG = """\
version: 2
ethernets:
eth0:
dhcp4: true
wakeonlan: true
"""

EXPECTED_ENI_END = """\
iface eth0 inet dhcp
ethernet-wol g"""


@pytest.mark.sru_2020_11
@pytest.mark.lxd_container
@pytest.mark.lxd_vm
@pytest.mark.lxd_config_dict({
'user.network-config': NETWORK_CONFIG
})
def test_wakeonlan(client: IntegrationInstance):
if ImageSpecification.from_os_image().release == 'xenial':
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking this way isn't ideal, but I see it as being short term until we come up with a better way of checking

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not even sure if this is desirable, but this would DTRT even if we haven't detected a specified image as xenial:

Suggested change
if ImageSpecification.from_os_image().release == 'xenial':
if client.execute("lsb_release --short --codename") == "xenial":

(Presumably "a better way" would be separate tests with appropriate release tagging?)

eni = client.execute('cat /etc/network/interfaces.d/50-cloud-init.cfg')
assert eni.endswith(EXPECTED_ENI_END)
return

netplan_cfg = client.execute('cat /etc/netplan/50-cloud-init.yaml')
netplan_yaml = yaml.safe_load(netplan_cfg)
assert 'wakeonlan' in netplan_yaml['network']['ethernets']['eth0']
assert netplan_yaml['network']['ethernets']['eth0']['wakeonlan'] is True