From 06bc9e4eaec9c79a5896affc3a2582ad2d3f56ee Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Mon, 19 Jul 2021 14:39:26 +0200 Subject: [PATCH] bifrost-cli: fix relative paths in --extra-vars Ansible accepts YAML files via the syntax `-e @path.yaml`. Since bifrost-cli changes the working directory to "playbooks", relative paths don't work as expected. Fix that by turning them into global paths. Change-Id: I02ba2ac85c72362dbc424037c3d23231098e065b (cherry picked from commit f0f6e6aa9e725bb3b6e0db6e78a223061385c1d6) --- bifrost/cli.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/bifrost/cli.py b/bifrost/cli.py index 8c8baa7a3..3e98b40e9 100644 --- a/bifrost/cli.py +++ b/bifrost/cli.py @@ -47,6 +47,14 @@ def log(*message, only_if=True): print(*message, file=sys.stderr) +def process_extra_vars(extra_vars): + for item in extra_vars: + if item.startswith('@'): + # Make sure relative paths still work + item = '@' + os.path.abspath(item[1:]) + yield ('-e', item) + + def ansible(playbook, inventory, verbose=False, env=None, extra_vars=None, **params): extra = COMMON_PARAMS[:] @@ -55,7 +63,7 @@ def ansible(playbook, inventory, verbose=False, env=None, extra_vars=None, if pair[1] is not None)) if extra_vars: extra.extend(itertools.chain.from_iterable( - ('-e', item) for item in extra_vars)) + process_extra_vars(extra_vars))) if verbose: extra.append('-vvvv') args = [ANSIBLE, playbook, '-i', inventory] + extra