From 7aa1ae69b3974167a99dabbf12eeda6f4eafdbbc Mon Sep 17 00:00:00 2001 From: Jim Ladd Date: Tue, 21 Nov 2017 11:00:31 -0500 Subject: [PATCH] Add backwards compatibility for injecting single file --- awx/main/fields.py | 2 +- awx/main/models/credential/__init__.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/awx/main/fields.py b/awx/main/fields.py index 893051492f..005ed85362 100644 --- a/awx/main/fields.py +++ b/awx/main/fields.py @@ -696,7 +696,7 @@ class CredentialTypeInjectorField(JSONSchemaField): 'file': { 'type': 'object', 'patternProperties': { - '^template\.[a-zA-Z_]+$': {'type': 'string'}, + '^template(\.[a-zA-Z_]+)?$': {'type': 'string'}, }, 'additionalProperties': False, }, diff --git a/awx/main/models/credential/__init__.py b/awx/main/models/credential/__init__.py index 5f82c79a91..86c3930299 100644 --- a/awx/main/models/credential/__init__.py +++ b/awx/main/models/credential/__init__.py @@ -597,8 +597,6 @@ class CredentialType(CommonModelNameNotUnique): pass tower_namespace = TowerNamespace() - filename_namespace = TowerNamespace() - tower_namespace.filename = filename_namespace # maintain a normal namespace for building the ansible-playbook arguments (env and args) namespace = {'tower': tower_namespace} @@ -634,8 +632,15 @@ class CredentialType(CommonModelNameNotUnique): with open(path, 'w') as f: f.write(data) os.chmod(path, stat.S_IRUSR | stat.S_IWUSR) - file_label = file_label.split('.')[1] - setattr(namespace['tower'].filename, file_label, path) + + # determine if filename indicates single file or many + if file_label.find('.') == -1: + tower_namespace.filename = path + else: + if not hasattr(tower_namespace, 'filename'): + tower_namespace.filename = TowerNamespace() + file_label = file_label.split('.')[1] + setattr(tower_namespace.filename, file_label, path) for env_var, tmpl in self.injectors.get('env', {}).items(): if env_var.startswith('ANSIBLE_') or env_var in self.ENV_BLACKLIST: