← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~adam-collard/maas-ci/+git/system-tests:vault-journal-output into ~maas-committers/maas-ci/+git/system-tests:master

 

Adam Collard has proposed merging ~adam-collard/maas-ci/+git/system-tests:vault-journal-output into ~maas-committers/maas-ci/+git/system-tests:master.

Commit message:
Log vault journal output on error.


Requested reviews:
  MAAS Committers (maas-committers)

For more details, see:
https://code.launchpad.net/~adam-collard/maas-ci/+git/system-tests/+merge/434066
-- 
Your team MAAS Committers is requested to review the proposed merge of ~adam-collard/maas-ci/+git/system-tests:vault-journal-output into ~maas-committers/maas-ci/+git/system-tests:master.
diff --git a/systemtests/fixtures.py b/systemtests/fixtures.py
index c60ef46..eb9790c 100644
--- a/systemtests/fixtures.py
+++ b/systemtests/fixtures.py
@@ -15,7 +15,7 @@ from .api import MAAS_CONTAINER_CERTS_PATH, UnauthenticatedMAASAPIClient
 from .config import ADMIN_EMAIL, ADMIN_PASSWORD, ADMIN_USER
 from .lxd import CLILXD, get_lxd
 from .region import MAASRegion
-from .vault import Vault
+from .vault import Vault, VaultNotReadyError
 
 if TYPE_CHECKING:
     from logging import Logger
@@ -292,7 +292,8 @@ def vault(maas_container: str, config: dict[str, Any]) -> Optional[Vault]:
     if not snap_channel:
         return None
 
-    lxd = get_lxd(getLogger(f"{LOG_NAME}.vault"))
+    vault_logger = getLogger(f"{LOG_NAME}.vault")
+    lxd = get_lxd(vault_logger)
     lxd.execute(maas_container, ["apt", "install", "--yes", "ssl-cert"])
     lxd.execute(
         maas_container, ["snap", "install", "vault", f"--channel={snap_channel}"]
@@ -351,7 +352,14 @@ def vault(maas_container: str, config: dict[str, Any]) -> Optional[Vault]:
         secrets_path="maas",
         lxd=lxd,
     )
-    vault.ensure_initialized()
+    try:
+        vault.ensure_initialized()
+    except VaultNotReadyError as e:
+        journalctl = lxd.execute(
+            maas_container, ["journalctl", "--unit=vault", "--no-pager"]
+        )
+        vault_logger.exception(f"{e}\n{journalctl.stdout}")
+        raise
     vault.ensure_setup()
     return vault
 
diff --git a/systemtests/vault.py b/systemtests/vault.py
index 21b15a4..9cb2848 100644
--- a/systemtests/vault.py
+++ b/systemtests/vault.py
@@ -11,6 +11,10 @@ from .lxd import CLILXD
 from .utils import retries
 
 
+class VaultNotReadyError(Exception):
+    pass
+
+
 @dataclass
 class Vault:
     """Vault CLI wrapper to be run inside a container."""
@@ -39,7 +43,7 @@ class Vault:
             with suppress(subprocess.CalledProcessError):
                 return self.status()
 
-        raise RuntimeError("Vault never became ready")
+        raise VaultNotReadyError(f"Vault at {self.addr} never became ready")
 
     def status(self) -> dict[str, Any]:
         """Return the Vault status."""

Follow ups