diff --git a/lib/ansible/executor/playbook_executor.py b/lib/ansible/executor/playbook_executor.py index 9f295cbe1e..0b3d7f0db7 100644 --- a/lib/ansible/executor/playbook_executor.py +++ b/lib/ansible/executor/playbook_executor.py @@ -227,7 +227,10 @@ class PlaybookExecutor: serial_pct = int(play.serial.replace("%","")) serial = int((serial_pct/100.0) * len(all_hosts)) else: - serial = int(play.serial) + if play.serial is None: + serial = -1 + else: + serial = int(play.serial) # if the serial count was not specified or is invalid, default to # a list of all hosts, otherwise split the list of hosts into chunks diff --git a/lib/ansible/playbook/base.py b/lib/ansible/playbook/base.py index 6e0e3b5738..6b6fdf3fae 100644 --- a/lib/ansible/playbook/base.py +++ b/lib/ansible/playbook/base.py @@ -300,7 +300,7 @@ class Base: # if this evaluated to the omit value, set the value back to # the default specified in the FieldAttribute and move on if omit_value is not None and value == omit_value: - value = attribute.default + setattr(self, name, attribute.default) continue # and make sure the attribute is of the type it should be diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index 9d1959c1e5..f6ae213a5c 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -87,7 +87,7 @@ class Play(Base, Taggable, Become): _any_errors_fatal = FieldAttribute(isa='bool', default=False, always_post_validate=True) _force_handlers = FieldAttribute(isa='bool', always_post_validate=True) _max_fail_percentage = FieldAttribute(isa='percent', always_post_validate=True) - _serial = FieldAttribute(isa='int', default=0, always_post_validate=True) + _serial = FieldAttribute(isa='string', always_post_validate=True) _strategy = FieldAttribute(isa='string', default='linear', always_post_validate=True) # =================================================================================