From 8e022ef00a6476f9540c5775d7007ce1bca91f9d Mon Sep 17 00:00:00 2001 From: Sam Doooran Date: Thu, 17 Dec 2020 14:14:58 -0500 Subject: [PATCH] import_playbook - change additional params to deprecation (#72987) * import_playbook - change additional params to deprecation I incorrectly recommended this be set as a warning when it should have been a deprecation. * Fix deprecation sanity test to not required a collection name when not inside a collection --- .../72745-import_playbook-deprecation-extra-params.yml | 2 ++ lib/ansible/modules/import_playbook.py | 4 ++++ lib/ansible/playbook/playbook_include.py | 3 ++- test/integration/targets/include_import/runme.sh | 2 +- .../ansible_test/_data/sanity/pylint/plugins/deprecated.py | 2 +- 5 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 changelogs/fragments/72745-import_playbook-deprecation-extra-params.yml diff --git a/changelogs/fragments/72745-import_playbook-deprecation-extra-params.yml b/changelogs/fragments/72745-import_playbook-deprecation-extra-params.yml new file mode 100644 index 00000000000..7d23f674cfe --- /dev/null +++ b/changelogs/fragments/72745-import_playbook-deprecation-extra-params.yml @@ -0,0 +1,2 @@ +bugfixes: + - import_playbook - change warning about extra parameters to deprecation (https://github.com/ansible/ansible/issues/72745) diff --git a/lib/ansible/modules/import_playbook.py b/lib/ansible/modules/import_playbook.py index 51ef23fae4d..767a8a450f3 100644 --- a/lib/ansible/modules/import_playbook.py +++ b/lib/ansible/modules/import_playbook.py @@ -42,6 +42,10 @@ EXAMPLES = r''' - name: Include a play after another play import_playbook: otherplays.yaml +- name: Set variables on an imported playbook + import_playbook: otherplays.yml + vars: + service: httpd - name: This DOES NOT WORK hosts: all diff --git a/lib/ansible/playbook/playbook_include.py b/lib/ansible/playbook/playbook_include.py index e38f2cfa77f..5b966902550 100644 --- a/lib/ansible/playbook/playbook_include.py +++ b/lib/ansible/playbook/playbook_include.py @@ -172,7 +172,8 @@ class PlaybookInclude(Base, Conditional, Taggable): else: new_ds['import_playbook'] = items[0].strip() if len(items) > 1: - display.warning('Additional parameters in import_playbook statements are not supported. This will be an error in version 2.14') + display.deprecated("Additional parameters in import_playbook statements are deprecated. " + "Use 'vars' instead. See 'import_playbook' documentation for examples.", version='2.14') # rejoin the parameter portion of the arguments and # then use parse_kv() to get a dict of params back params = parse_kv(" ".join(items[1:])) diff --git a/test/integration/targets/include_import/runme.sh b/test/integration/targets/include_import/runme.sh index e00abdb24c9..f2633032083 100755 --- a/test/integration/targets/include_import/runme.sh +++ b/test/integration/targets/include_import/runme.sh @@ -17,7 +17,7 @@ ansible -m include_role -a name=role1 localhost ## Import (static) # Playbook -test "$(ansible-playbook -i ../../inventory playbook/test_import_playbook.yml "$@" 2>&1 | grep -c '\[WARNING\]: Additional parameters in import_playbook')" = 1 +test "$(ANSIBLE_DEPRECATION_WARNINGS=1 ansible-playbook -i ../../inventory playbook/test_import_playbook.yml "$@" 2>&1 | grep -c '\[DEPRECATION WARNING\]: Additional parameters in import_playbook')" = 1 ANSIBLE_STRATEGY='linear' ansible-playbook playbook/test_import_playbook_tags.yml -i inventory "$@" --tags canary1,canary22,validate --skip-tags skipme diff --git a/test/lib/ansible_test/_data/sanity/pylint/plugins/deprecated.py b/test/lib/ansible_test/_data/sanity/pylint/plugins/deprecated.py index 68910cb8504..337ccd75c71 100644 --- a/test/lib/ansible_test/_data/sanity/pylint/plugins/deprecated.py +++ b/test/lib/ansible_test/_data/sanity/pylint/plugins/deprecated.py @@ -242,7 +242,7 @@ class AnsibleDeprecatedChecker(BaseChecker): this_collection = collection_name == (self.collection_name or 'ansible.builtin') if not this_collection: self.add_message('wrong-collection-deprecated', node=node, args=(collection_name,)) - else: + elif self.collection_name is not None: self.add_message('ansible-deprecated-no-collection-name', node=node) if date: