Skia has proposed merging ~hyask/autopkgtest-cloud:skia/reactive_charm_status into autopkgtest-cloud:master.
Requested reviews: Canonical's Ubuntu QA (canonical-ubuntu-qa) For more details, see: https://code.launchpad.net/~hyask/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/461531 -- Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~hyask/autopkgtest-cloud:skia/reactive_charm_status into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py b/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py index 2e8f376..b00037f 100644 --- a/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py +++ b/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py @@ -52,12 +52,16 @@ RABBITMQ_CRED_PATH = os.path.expanduser("~ubuntu/rabbitmq.cred") @when_not("autopkgtest.autopkgtest_cloud_symlinked") def symlink_autopkgtest_cloud(): + status.maintenance("Creating symlink to charmed autopkgtest-cloud code") with UnixUser("ubuntu"): try: autopkgtest_cloud = os.path.join(charm_dir(), "autopkgtest-cloud") os.symlink(autopkgtest_cloud, AUTOPKGTEST_CLOUD_LOCATION) except FileExistsError: pass + status.maintenance( + "Done creating symlink to charmed autopkgtest-cloud code" + ) set_flag("autopkgtest.autopkgtest_cloud_symlinked") @@ -97,7 +101,9 @@ def clone_autopkgtest_package_configs(): @when("autopkgtest.autodep8_cloned") @when_not("autopkgtest.autodep8_installed") def initially_install_autodep8(): + status.maintenance("Installing autodep8") install_autodep8(AUTODEP8_LOCATION) + status.maintenance("Done installing autodep8") set_flag("autopkgtest.autodep8_installed") @@ -125,6 +131,7 @@ def clone_autopkgtest(): "autopkgtest.influx-creds-written", ) def set_up_systemd_units(): + status.maintenance("Installing systemd units") for unit in glob.glob(os.path.join(charm_dir(), "units", "*")): base = os.path.basename(unit) dest = os.path.join(os.path.sep, "etc", "systemd", "system", base) @@ -141,30 +148,39 @@ def set_up_systemd_units(): if not os.path.islink(dest): os.unlink(dest) link_and_enable() + status.maintenance("Done installing systemd units") set_flag("autopkgtest.systemd_units_linked_and_enabled") @when("autopkgtest.systemd_units_linked_and_enabled") @when_not("autopkgtest.target_running") def start(): + status.maintenance("Enabling and starting autopkgtest systemd target") subprocess.check_call( ["systemctl", "enable", "--now", "autopkgtest.target"] ) + status.maintenance("Done enabling and starting autopkgtest systemd target") set_flag("autopkgtest.target_running") @hook("stop") @when("autopkgtest.target_running") def stop(): + status.maintenance("Disabling and stopping autopkgtest systemd target") subprocess.check_call( ["systemctl", "disable", "--now", "autopkgtest.target"] ) + status.maintenance( + "Done disabling and stopping autopkgtest systemd target" + ) clear_flag("autopkgtest.target_running") @when_all("autopkgtest.target-restart-needed", "autopkgtest.target_running") def restart_target(): + status.maintenance("Restarting autopkgtest systemd target") subprocess.check_call(["systemctl", "restart", "autopkgtest.target"]) + status.maintenance("Done restarting autopkgtest systemd target") clear_flag("autopkgtest.target-restart-needed") @@ -180,7 +196,9 @@ def is_active(): ) @hook("upgrade-charm") def daemon_reload(): + status.maintenance("Reloading systemd configuration after change") subprocess.check_call(["systemctl", "daemon-reload"]) + status.maintenance("Done reloading systemd configuration after change") clear_flag("autopkgtest.daemon-reload-needed") @@ -193,6 +211,7 @@ def install_apt_packages(): @hook("install") def enable_persistent_journal(): + status.maintenance("Enabling persistent journal") try: journal_dir = os.path.join(os.path.sep, "var", "log", "journal") os.makedirs(journal_dir) @@ -202,6 +221,7 @@ def enable_persistent_journal(): subprocess.check_call(["systemctl", "restart", "systemd-journald"]) except FileExistsError: pass + status.maintenance("Done enabling persistent journal") @when("amqp.connected") @@ -237,16 +257,19 @@ def set_up_rabbitmq(rabbitmq): @when_not("amqp.available") def clear_rabbitmq(): + status.maintenance("clearing rabbitmq configuration") try: log("rabbitmq not available, deleting credentials file") os.unlink(RABBITMQ_CRED_PATH) clear_flag("autopkgtest.rabbitmq-configured") except FileNotFoundError: pass + status.maintenance("Done clearing rabbitmq configuration") @when("config.changed.nova-rcs") def update_nova_rcs(): + status.maintenance("Updating nova rc files") # pylint: disable=import-outside-toplevel import base64 from io import BytesIO @@ -268,10 +291,12 @@ def update_nova_rcs(): log("...got {}".format(", ".join(tar.getnames())), "INFO") tar.extractall(os.path.expanduser("~ubuntu/cloudrcs/")) + status.maintenance("Done updating nova rc files") @when("config.default.nova-rcs") def clear_old_rcs(): + status.maintenance("Cleaning old nova rc files") rcfiles = glob.glob(os.path.expanduser("~ubuntu/cloudrcs/*.rc")) if not rcfiles: @@ -284,6 +309,7 @@ def clear_old_rcs(): os.unlink(rcfile) log("...done", "INFO") + status.maintenance("Done cleaning old nova rc files") @when_all( @@ -327,6 +353,8 @@ def enable_disable_units(): nworkers_yaml or {}, lxdremotes_yaml or {}, releases.split() ) + status.maintenance("Done enabling and starting worker units") + set_flag("autopkgtest.reload-needed") set_flag("autopkgtest.daemon-reload-needed") set_flag("autopkgtest.target-restart-needed") @@ -339,7 +367,9 @@ def enable_disable_units(): ) @when_not("autopkgtest.ubuntu_added_to_lxd_group") def add_ubuntu_user_to_lxd_group(): + status.maintenance("Adding ubuntu user to lxd group") subprocess.check_call(["adduser", "ubuntu", "lxd"]) + status.maintenance("Done adding ubuntu user to lxd group") set_flag("autopkgtest.ubuntu_added_to_lxd_group") @@ -405,6 +435,7 @@ def write_v2_config(): def write_swift_config(): + status.maintenance("Writing swift configuration") with open( os.path.expanduser("~ubuntu/swift-password.cred"), "w" ) as swift_password_file: @@ -416,6 +447,7 @@ def write_swift_config(): str(config()[key]).strip(), ) ) + status.maintenance("Done writing swift configuration") @when_any( @@ -432,6 +464,8 @@ def write_swift_config(): ) @when_any("config.set.nova-rcs", "config.set.lxd-remotes") def write_worker_config(): + status.maintenance("Writing worker configuration") + # pylint: disable=import-outside-toplevel import configparser @@ -523,23 +557,28 @@ def write_worker_config(): conf["autopkgtest"]["architectures"] = arch write(conf_file) + status.maintenance("Done writing worker configuration") set_flag("autopkgtest.daemon-reload-needed") set_flag("autopkgtest.reload-needed") @when("config.changed.net-name") def write_net_name(): + status.maintenance("Writing net-name configuration") clear_flag("autopkgtest.net-name-written") with open(os.path.expanduser("~ubuntu/net-name.rc"), "w") as f: f.write('NET_NAME="{}"\n'.format(config().get("net-name"))) + status.maintenance("Done writing net-name configuration") set_flag("autopkgtest.net-name-written") set_flag("autopkgtest.reload-needed") @when("config.changed.mirror") def write_mirror(): + status.maintenance("Writing mirror configuration") with open(os.path.expanduser("~ubuntu/mirror.rc"), "w") as f: f.write('MIRROR="{}"\n'.format(config().get("mirror"))) + status.maintenance("Done writing mirror configuration") set_flag("autopkgtest.reload-needed") @@ -555,6 +594,7 @@ def reload_systemd_units(): @hook("tmp-storage-attached") def fix_tmp_permissions(): + status.maintenance("Fixing tmp permissions") storageids = storage_list("tmp") if not storageids: status.blocked("Cannot locate attached storage") @@ -564,6 +604,7 @@ def fix_tmp_permissions(): mount = storage_get("location", storageid) os.chmod(mount, 0o777) + status.maintenance("Done fixing tmp permissions") @when_any( @@ -583,6 +624,7 @@ def fix_tmp_permissions(): "config.set.influxdb-context", ) def write_influx_creds(): + status.maintenance("Writing influxdb credentials") influxdb_hostname = config().get("influxdb-hostname") influxdb_port = config().get("influxdb-port") influxdb_username = config().get("influxdb-username") @@ -603,6 +645,7 @@ def write_influx_creds(): """ ) ) + status.maintenance("Done writing influxdb credentials") set_flag("autopkgtest.influx-creds-written") @@ -615,8 +658,10 @@ def write_influx_creds(): "config.set.influxdb-context", ) def unset_influx_creds(): + status.maintenance("Deleting influxdb credentials") try: os.unlink(os.path.expanduser("~ubuntu/influx.cred")) except FileNotFoundError: pass + status.maintenance("Done deleting influxdb credentials") clear_flag("autopkgtest.influx-creds-written") diff --git a/charms/focal/autopkgtest-web/reactive/autopkgtest_web.py b/charms/focal/autopkgtest-web/reactive/autopkgtest_web.py index 6920fc1..d0c33a7 100644 --- a/charms/focal/autopkgtest-web/reactive/autopkgtest_web.py +++ b/charms/focal/autopkgtest-web/reactive/autopkgtest_web.py @@ -37,12 +37,14 @@ def install_apt_packages(): @when_not("autopkgtest-web.autopkgtest_web_symlinked") def symlink_autopkgtest_cloud(): + status.maintenance("Creating symlink to charmed autopkgtest-web code") try: autopkgtest_cloud = os.path.join(charm_dir(), "webcontrol") os.symlink(autopkgtest_cloud, os.path.expanduser("~ubuntu/webcontrol")) - set_flag("autopkgtest-web.autopkgtest_web_symlinked") except FileExistsError: pass + status.maintenance("Done creating symlink to charmed autopkgtest-web code") + set_flag("autopkgtest-web.autopkgtest_web_symlinked") @when("amqp.connected") @@ -60,6 +62,7 @@ def setup_rabbitmq(rabbitmq): "config.set.indexed-packages-fp", ) def write_autopkgtest_cloud_conf(rabbitmq): + status.waiting("Writing autopkgtest-cloud config") swiftinternal = config().get("storage-url-internal") hostname = config().get("hostname") cookies = config().get("cookies") @@ -87,6 +90,7 @@ def write_autopkgtest_cloud_conf(rabbitmq): ) ) os.rename(f"{AUTOPKGTEST_CLOUD_CONF}.new", AUTOPKGTEST_CLOUD_CONF) + status.waiting("Done writing autopkgtest-cloud config") set_flag("autopkgtest-web.config-written") @@ -95,6 +99,7 @@ def write_autopkgtest_cloud_conf(rabbitmq): "autopkgtest-web.config-written", ) def set_up_systemd_units(): + status.waiting("Setting up systemd units") any_changed = False for unit in glob.glob(os.path.join(charm_dir(), "units", "*")): base = os.path.basename(unit) @@ -114,7 +119,7 @@ def set_up_systemd_units(): if "NeedDaemonReload=yes" in p.stdout: # any_changed is true here because the systemd unit has changed on disk any_changed = True - status.maintenance("Installing systemd units") + status.maintenance(f"Installing systemd unit {base}") subprocess.check_call(["systemctl", "enable", base]) if any_changed: @@ -149,6 +154,7 @@ def initially_configure_website(website): "autopkgtest-web.website-initially-configured", ) def set_up_web_config(apache): + status.maintenance("Setting up web config (apache)") webcontrol_dir = os.path.join(charm_dir(), "webcontrol") sn = config().get("hostname") https_proxy = config().get("https-proxy") @@ -231,6 +237,7 @@ def set_up_web_config(apache): ) ) ) + status.maintenance("Done setting up web config (apache)") set_flag("autopkgtest-web.website-initially-configured") apache.send_ports([80]) # haproxy is doing SSL termination apache.send_enabled() @@ -238,6 +245,7 @@ def set_up_web_config(apache): @when_all("config.changed.github-secrets", "config.set.github-secrets") def write_github_secrets(): + status.maintenance("Writing github secrets") github_secrets = config().get("github-secrets") with open(GITHUB_SECRETS_PATH, "w") as f: @@ -250,10 +258,12 @@ def write_github_secrets(): ) except FileExistsError: pass + status.maintenance("Done writing github secrets") @when_not("config.set.github-secrets") def clear_github_secrets(): + status.maintenance("Clearing github secrets") try: os.unlink(GITHUB_SECRETS_PATH) except FileNotFoundError: @@ -263,12 +273,14 @@ def clear_github_secrets(): os.unlink(os.path.expanduser("~www-data/github-secrets.json")) except FileNotFoundError: pass + status.maintenance("Done clearing github secrets") @when_all( "config.changed.swift-web-credentials", "config.set.swift-web-credentials" ) def write_swift_web_credentials(): + status.maintenance("Writing swift web credentials") swift_credentials = config().get("swift-web-credentials") with open(SWIFT_WEB_CREDENTIALS_PATH, "w") as f: @@ -281,18 +293,22 @@ def write_swift_web_credentials(): ) except FileExistsError: pass + status.maintenance("Done writing swift web credentials") @when_all("config.changed.public-swift-creds", "config.set.public-swift-creds") def write_openstack_creds(): + status.maintenance("Writing openstack credentials") public_swift_creds = config().get("public-swift-creds") with open(PUBLIC_SWIFT_CREDS_PATH, "w") as f: f.write(public_swift_creds) + status.maintenance("Done writing openstack credentials") @when_not("config.set.swift-web-credentials") def clear_swift_web_credentials(): + status.maintenance("Clearing swift web credentials") try: os.unlink(SWIFT_WEB_CREDENTIALS_PATH) except FileNotFoundError: @@ -302,6 +318,7 @@ def clear_swift_web_credentials(): os.unlink(os.path.expanduser("~www-data/swift-web-credentials.conf")) except FileNotFoundError: pass + status.maintenance("Done clearing swift web credentials") @when_all( @@ -309,6 +326,7 @@ def clear_swift_web_credentials(): "config.set.github-status-credentials", ) def write_github_status_credentials(): + status.maintenance("Writing github status credentials") github_status_credentials = config().get("github-status-credentials") with open(GITHUB_STATUS_CREDENTIALS_PATH, "w") as f: @@ -321,10 +339,12 @@ def write_github_status_credentials(): ) except FileExistsError: pass + status.maintenance("Done writing github status credentials") @when_not("config.set.github-status-credentials") def clear_github_status_credentials(): + status.maintenance("Clearing github status credentials") try: os.unlink(GITHUB_STATUS_CREDENTIALS_PATH) except FileNotFoundError: @@ -336,18 +356,22 @@ def clear_github_status_credentials(): ) except FileNotFoundError: pass + status.maintenance("Done clearing github status credentials") @when_not("autopkgtest-web.runtime-dir-created") def make_runtime_tmpfiles(): + status.maintenance("Making runtime tmpfiles") with open("/etc/tmpfiles.d/autopkgtest-web-runtime.conf", "w") as r: r.write("D %t/autopkgtest_webcontrol 0755 www-data www-data\n") subprocess.check_call(["systemd-tmpfiles", "--create"]) + status.maintenance("Done making runtime tmpfiles") set_flag("autopkgtest-web.runtime-dir-created") @when_not("autopkgtest-web.running-json-symlinked") def symlink_running(): + status.maintenance("Creating symlink to running.json") try: os.symlink( os.path.join( @@ -355,6 +379,7 @@ def symlink_running(): ), os.path.join(charm_dir(), "webcontrol", "static", "running.json"), ) + status.maintenance("Done creating symlink to running.json") set_flag("autopkgtest-web.running-json-symlinked") except FileExistsError: pass @@ -362,6 +387,7 @@ def symlink_running(): @when_not("autopkgtest-web.public-db-symlinked") def symlink_public_db(): + status.maintenance("Creating symlink for public database") try: publicdir = os.path.expanduser("~ubuntu/public/") os.makedirs(publicdir) @@ -372,6 +398,7 @@ def symlink_public_db(): charm_dir(), "webcontrol", "static", "autopkgtest.db" ), ) + status.maintenance("Done creating symlink for public database") set_flag("autopkgtest-web.public-db-symlinked") except FileExistsError: pass @@ -380,15 +407,19 @@ def symlink_public_db(): @when("leadership.is_leader") @when_not("autopkgtest-cloud.leadership_flag_written") def write_leadership_flag(): + status.maintenance("Setting leader") with open("/run/autopkgtest-web-is-leader", "w") as _: + status.maintenance("Done setting leader") set_flag("autopkgtest-cloud.leadership_flag_written") @when_not("leadership.is_leader") @when("autopkgtest-cloud.leadership_flag_written") def clear_leadership_flag(): + status.maintenance("Clearing leader") try: os.unlink("/run/autopkgtest-web-is-leader") except FileNotFoundError: pass + status.maintenance("Done clearing leader") clear_flag("autopkgtest-cloud.leadership_flag_written")
-- Mailing list: https://launchpad.net/~canonical-ubuntu-qa Post to : canonical-ubuntu-qa@lists.launchpad.net Unsubscribe : https://launchpad.net/~canonical-ubuntu-qa More help : https://help.launchpad.net/ListHelp