From 815a375177345fa88fcc995f144cad39b9988591 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Mon, 29 Apr 2019 17:59:10 -0400 Subject: [PATCH] allow empty plays again, for now (#55878) --- changelogs/fragments/bad_empty_play.yml | 2 ++ lib/ansible/playbook/__init__.py | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/bad_empty_play.yml diff --git a/changelogs/fragments/bad_empty_play.yml b/changelogs/fragments/bad_empty_play.yml new file mode 100644 index 0000000000..a0a4b4893f --- /dev/null +++ b/changelogs/fragments/bad_empty_play.yml @@ -0,0 +1,2 @@ +bugfixes: + - re allow empty plays for now, but add deprecation msg. diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index 0321615505..74257c061b 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -69,12 +69,14 @@ class Playbook: raise AnsibleParserError("Could not read playbook (%s) due to encoding issues: %s" % (file_name, to_native(e))) # check for errors and restore the basedir in case this error is caught and handled - if not ds: + if ds is None: self._loader.set_basedir(cur_basedir) raise AnsibleParserError("Empty playbook, nothing to do", obj=ds) elif not isinstance(ds, list): self._loader.set_basedir(cur_basedir) raise AnsibleParserError("A playbook must be a list of plays, got a %s instead" % type(ds), obj=ds) + elif not ds: + display.deprecated("Empty plays will currently be skipped, in the future they will cause a syntax error", version='2.12') # Parse the playbook entries. For plays, we simply parse them # using the Play() object, and includes are parsed using the