From dccb0d035b92b6b1212824bec7f63a22b590962d Mon Sep 17 00:00:00 2001 From: Martin Krizek Date: Fri, 11 May 2018 19:29:44 +0200 Subject: [PATCH] vault: check dir existence before creating a file (#40010) --- lib/ansible/parsing/vault/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/ansible/parsing/vault/__init__.py b/lib/ansible/parsing/vault/__init__.py index 7a68166d13a..9a3b7524822 100644 --- a/lib/ansible/parsing/vault/__init__.py +++ b/lib/ansible/parsing/vault/__init__.py @@ -78,6 +78,7 @@ from ansible.module_utils.six import PY3, binary_type # Note: on py2, this zip is izip not the list based zip() builtin from ansible.module_utils.six.moves import zip from ansible.module_utils._text import to_bytes, to_text, to_native +from ansible.utils.path import makedirs_safe try: from __main__ import display @@ -925,6 +926,11 @@ class VaultEditor: def create_file(self, filename, secret, vault_id=None): """ create a new encrypted file """ + dirname = os.path.dirname(filename) + if not os.path.exists(dirname): + display.warning("%s does not exist, creating..." % dirname) + makedirs_safe(dirname) + # FIXME: If we can raise an error here, we can probably just make it # behave like edit instead. if os.path.isfile(filename):