diff options
author | Alberto Contreras <alberto.contreras@canonical.com> | 2022-11-12 21:13:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-12 13:13:26 -0700 |
commit | 1f43a83e15fd47fa2a6b5d3836bf6e055b956b89 (patch) | |
tree | 15fd82543c67d22426264bf017a7bb8979c12f73 | |
parent | f5b0930665ac36e853f254c3db681b6f4368e691 (diff) | |
download | cloud-init-git-1f43a83e15fd47fa2a6b5d3836bf6e055b956b89.tar.gz |
tests: activate Ubuntu Pro tests (only on Jenkins) (#1777)
tests: activate Ubuntu Pro tests (only on Jenkins)
-rw-r--r-- | tests/integration_tests/modules/test_ubuntu_advantage.py | 82 |
1 files changed, 42 insertions, 40 deletions
diff --git a/tests/integration_tests/modules/test_ubuntu_advantage.py b/tests/integration_tests/modules/test_ubuntu_advantage.py index 7e241836..1d99faff 100644 --- a/tests/integration_tests/modules/test_ubuntu_advantage.py +++ b/tests/integration_tests/modules/test_ubuntu_advantage.py @@ -1,4 +1,5 @@ import json +import logging import os import pytest @@ -12,6 +13,8 @@ from tests.integration_tests.instances import ( ) from tests.integration_tests.util import verify_clean_log +LOG = logging.getLogger("integration_testing.test_ubuntu_advantage") + CLOUD_INIT_UA_TOKEN = os.environ.get("CLOUD_INIT_UA_TOKEN") ATTACH_FALLBACK = """\ @@ -30,17 +33,9 @@ ubuntu_advantage: - esm-infra """ -# bootcmd disables UA daemon on gce -UA_DAILY = """\ +PRO_DAEMON_DISABLED = """\ #cloud-config -apt: - sources: - ua-daily: - source: 'ppa:ua-client/daily' -package_update: true -package_upgrade: true -packages: -- ubuntu-advantage-tools +# Disable UA daemon (only needed in GCE) bootcmd: - sudo systemctl mask ubuntu-advantage.service """ @@ -129,58 +124,65 @@ class TestUbuntuAdvantage: assert is_attached(client) -def install_ua_daily(session_cloud: IntegrationCloud): - """Install `ubuntu-advantage-tools` from ppa:ua-client/daily in an - Ubuntu Pro image. - - TODO: Remove this after UA releases v28.0. - """ +def maybe_install_cloud_init(session_cloud: IntegrationCloud): cfg_image_spec = ImageSpecification.from_os_image() + source = get_validated_source(session_cloud) + + launch_kwargs = { + "image_id": session_cloud.cloud_instance.daily_image( + cfg_image_spec.image_id, image_type=ImageType.PRO + ) + } + + if source is CloudInitSource.NONE: + LOG.info( + "No need to customize cloud-init version. Return without spawning" + " an extra instance" + ) + return launch_kwargs + + user_data = ( + PRO_DAEMON_DISABLED + if session_cloud.settings.PLATFORM == "gce" + else None + ) + with session_cloud.launch( - user_data=UA_DAILY, - launch_kwargs={ - "image_id": session_cloud.cloud_instance.daily_image( - cfg_image_spec.image_id, image_type=ImageType.PRO - ) - }, + user_data=user_data, + launch_kwargs=launch_kwargs, ) as client: log = client.read_from_file("/var/log/cloud-init.log") verify_clean_log(log) + client.execute("sudo pro detach --assume-yes") # Force detach assert not is_attached( client ), "Test precondition error. Instance is auto-attached." - source = get_validated_source(session_cloud) - if source is CloudInitSource.NONE: - # Confirm cloud-init now supports auto-attach customization - client.write_to_file("/tmp/auto-attach.cfg", ATTACH_FALLBACK) - result = client.execute( - "cloud-init schema -c /tmp/auto-attach.cfg" - ) - assert result.ok, ( - "cloud-init in image doesn't support custom auto-attach." - " Try CLOUD_INIT_SOURCE=ppa:cloud-init-dev/daily." - ) - else: - client.install_new_cloud_init(source) + LOG.info( + "Restore `ubuntu-advantage.service` original status for next boot" + ) + assert client.execute( + "sudo systemctl unmask ubuntu-advantage.service" + ).ok + source = get_validated_source(session_cloud) + client.install_new_cloud_init(source) client.destroy() + return {"image_id": session_cloud.snapshot_id} + -@pytest.mark.adhoc @pytest.mark.azure @pytest.mark.ec2 @pytest.mark.gce @pytest.mark.ubuntu class TestUbuntuAdvantagePro: def test_custom_services(self, session_cloud: IntegrationCloud): - install_ua_daily(session_cloud) + launch_kwargs = maybe_install_cloud_init(session_cloud) with session_cloud.launch( user_data=AUTO_ATTACH_CUSTOM_SERVICES, - launch_kwargs={ - "image_id": session_cloud.snapshot_id, - }, + launch_kwargs=launch_kwargs, ) as client: log = client.read_from_file("/var/log/cloud-init.log") verify_clean_log(log) |