Skip to content
Merged
Show file tree
Hide file tree
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
38 changes: 38 additions & 0 deletions tests/integration_tests/bugs/test_gh570.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Integration test for #570.

Test that we can add optional vendor-data to the seedfrom file in a
NoCloud environment
"""

from tests.integration_tests.instances import IntegrationInstance
import pytest

VENDOR_DATA = """\
#cloud-config
runcmd:
- touch /var/tmp/seeded_vendordata_test_file
"""


# Only running on LXD because we need NoCloud for this test
@pytest.mark.sru_2020_11
@pytest.mark.lxd_container
@pytest.mark.lxd_vm
def test_nocloud_seedfrom_vendordata(client: IntegrationInstance):
seed_dir = '/var/tmp/test_seed_dir'
result = client.execute(
"mkdir {seed_dir} && "
"touch {seed_dir}/user-data && "
"touch {seed_dir}/meta-data && "
"echo 'seedfrom: {seed_dir}/' > "
"/var/lib/cloud/seed/nocloud-net/meta-data".format(seed_dir=seed_dir)
)
assert result.return_code == 0

client.write_to_file(
'{}/vendor-data'.format(seed_dir),
VENDOR_DATA,
)
client.execute('cloud-init clean --logs')
client.restart(raise_on_cloudinit_failure=True)
assert 'seeded_vendordata_test_file' in client.execute('ls /var/tmp')
2 changes: 1 addition & 1 deletion tests/integration_tests/bugs/test_lp1900837.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def test_permissions_unchanged(self, client):
assert "600" == _get_log_perms(client)

# Reboot
client.restart()
client.restart(raise_on_cloudinit_failure=True)

# Check that permissions are not reset on reboot
assert "600" == _get_log_perms(client)
6 changes: 4 additions & 2 deletions tests/integration_tests/instances.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def __init__(self, cloud: 'IntegrationCloud', instance: BaseInstance,
def destroy(self):
self.instance.delete()

def restart(self):
def restart(self, raise_on_cloudinit_failure=False):
"""Restart this instance (via cloud mechanism) and wait for boot.

This wraps pycloudlib's `BaseInstance.restart` to pass
Expand All @@ -44,7 +44,9 @@ def restart(self):
"""
self.instance.restart(wait=False)
log.info("Instance restarted; waiting for boot")
self.instance.wait(raise_on_cloudinit_failure=False)
self.instance.wait(
raise_on_cloudinit_failure=raise_on_cloudinit_failure
)

def execute(self, command, *, use_sudo=True) -> Result:
if self.instance.username == 'root' and use_sudo is False:
Expand Down