summaryrefslogtreecommitdiff
path: root/v-i
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2022-12-15 10:35:29 +0200
committerLars Wirzenius <liw@liw.fi>2022-12-15 10:44:16 +0200
commitac15ad74b5b30e1ac70e5b2b587d6bea6a7fec5d (patch)
tree3ce6aeab41a91e92e90674208dd0967f29445486 /v-i
parent3e4e2e55a7f6323f1d38520083b6fc5c89a3a37f (diff)
downloadv-i-ac15ad74b5b30e1ac70e5b2b587d6bea6a7fec5d.tar.gz
feat: check that files referred to by spec file exist, at start
This will find problems earlier. Sponsored-by: author
Diffstat (limited to 'v-i')
-rwxr-xr-xv-i27
1 files changed, 25 insertions, 2 deletions
diff --git a/v-i b/v-i
index d4f9efd..0b25fec 100755
--- a/v-i
+++ b/v-i
@@ -20,6 +20,12 @@ def log(msg):
logging.info(msg)
+def error(msg):
+ if verbose:
+ print("INSTALLER ERROR:", msg)
+ logging.error(msg)
+
+
def run(argv, **kwargs):
log(f"RUN: {argv} {kwargs}")
return subprocess.run(argv, **kwargs)
@@ -415,9 +421,23 @@ class SystemSpec:
setattr(self, key, self._obj[key])
del self._obj
+ self._check()
+
def __repr__(self):
- r = {key: getattr(self, key) for key in dir(self) if not key.startswith("_")}
- return repr(r)
+ return repr(
+ {key: getattr(self, key) for key in dir(self) if not key.startswith("_")}
+ )
+
+ def _check(self):
+ try:
+ for filename in self.extra_playbooks + self.ansible_vars_files:
+ if not os.path.exists(filename):
+ raise Exception(
+ f"spec refers to file {filename} which does not exist"
+ )
+ except Exception as e:
+ error(e)
+ sys.exit("problem with spec file")
def main():
@@ -443,6 +463,9 @@ def main():
system = SystemSpec(args.spec)
log(f"spec: {system!r}")
+ print("OK")
+ return
+
ansible_vars = dict(system.ansible_vars)
ansible_vars["hostname"] = system.hostname
for filename in system.ansible_vars_files: