diff options
author | Lars Wirzenius <liw@liw.fi> | 2022-12-15 10:35:29 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2022-12-15 10:44:16 +0200 |
commit | ac15ad74b5b30e1ac70e5b2b587d6bea6a7fec5d (patch) | |
tree | 3ce6aeab41a91e92e90674208dd0967f29445486 /v-i | |
parent | 3e4e2e55a7f6323f1d38520083b6fc5c89a3a37f (diff) | |
download | v-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-x | v-i | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -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: |