summaryrefslogtreecommitdiff
path: root/v-i
diff options
context:
space:
mode:
Diffstat (limited to 'v-i')
-rwxr-xr-xv-i43
1 files changed, 34 insertions, 9 deletions
diff --git a/v-i b/v-i
index c4772fc..9f34eea 100755
--- a/v-i
+++ b/v-i
@@ -2,6 +2,7 @@
import argparse
import glob
+import json
import logging
import os
import shutil
@@ -32,8 +33,27 @@ def error(msg):
def run(argv, **kwargs):
- log(f"RUN: {argv} {kwargs}")
- return subprocess.run(argv, **kwargs)
+ log(f"RUN: {argv[0]}")
+ for arg in argv:
+ log(f"RUN: - {arg!r}")
+ for key in kwargs:
+ log(f"RUN: - {key}={kwargs[key]!r}")
+ check = False
+ if kwargs.get("check"):
+ check = True
+ del kwargs["check"]
+ if "capture_output" not in kwargs:
+ kwargs["capture_output"] = True
+ p = subprocess.run(argv, **kwargs)
+ if check and p.returncode != 0:
+ stdout = indent(p.stdout.decode())
+ stderr = indent(p.stderr.decode())
+ error(f"Ran command that failed: {argv}")
+ error(f"Exit code {p.returncode}")
+ error(f"Stdout:\n{stdout}")
+ error(f"Stderr:\n{stderr}")
+ sys.exit("command failed")
+ return p
def physical_volumes():
@@ -427,7 +447,7 @@ class SystemSpec:
"ansible_vars": {},
"ansible_vars_files": [],
"luks": "",
- "debian_release": "bullseye",
+ "debian_release": "stable",
"root_fstype": "ext4",
}
with open(filename) as f:
@@ -455,14 +475,17 @@ class SystemSpec:
for key in self._obj:
setattr(self, key, self._obj[key])
- del self._obj
self._check()
def __repr__(self):
- return repr(
- {key: getattr(self, key) for key in dir(self) if not key.startswith("_")}
- )
+ return repr(self.as_dict())
+
+ def as_dict(self):
+ return {key: self._obj[key] for key in self._obj}
+
+ def as_json(self):
+ return json.dumps(self.as_dict(), indent=4)
def _check(self):
try:
@@ -514,7 +537,8 @@ def main():
log("v-i starts")
system = SystemSpec(args.spec)
- log(f"spec: {system!r}")
+ spec_json = system.as_json()
+ log(f"formatted spec:\n{spec_json}")
cache = args.cache or cache_name(system)
log(f"cache: {cache}")
@@ -526,7 +550,8 @@ def main():
with open(filename) as f:
vars_dict = yaml.safe_load(f)
ansible_vars.update(vars_dict)
- log(f"ansible_vars: {ansible_vars!r}")
+ ansible_vars_json = json.dumps(ansible_vars, indent=4)
+ log(f"ansible_vars:\n{ansible_vars_json}")
timings.reached("read configuration")
clean_up_disks([system.drive] + system.extra_drives)