Properly handle FieldAttribute.default if callable (#48992)
* Properly handle FieldAttribute.default if callable Fixes #48673 * Add changelog... * Add integration test * Add aliases file
This commit is contained in:
parent
46b465283c
commit
48ffd8789f
5 changed files with 20 additions and 2 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- Fix using omit on play keywords (https://github.com/ansible/ansible/issues/48673)
|
|
@ -363,7 +363,10 @@ class FieldAttributeBase(with_metaclass(BaseMeta, object)):
|
||||||
# if this evaluated to the omit value, set the value back to
|
# if this evaluated to the omit value, set the value back to
|
||||||
# the default specified in the FieldAttribute and move on
|
# the default specified in the FieldAttribute and move on
|
||||||
if omit_value is not None and value == omit_value:
|
if omit_value is not None and value == omit_value:
|
||||||
setattr(self, name, attribute.default)
|
if callable(attribute.default):
|
||||||
|
setattr(self, name, attribute.default())
|
||||||
|
else:
|
||||||
|
setattr(self, name, attribute.default)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# and make sure the attribute is of the type it should be
|
# and make sure the attribute is of the type it should be
|
||||||
|
@ -546,7 +549,10 @@ class FieldAttributeBase(with_metaclass(BaseMeta, object)):
|
||||||
if name in data:
|
if name in data:
|
||||||
setattr(self, name, data[name])
|
setattr(self, name, data[name])
|
||||||
else:
|
else:
|
||||||
setattr(self, name, attribute.default)
|
if callable(attribute.default):
|
||||||
|
setattr(self, name, attribute.default())
|
||||||
|
else:
|
||||||
|
setattr(self, name, attribute.default)
|
||||||
|
|
||||||
# restore the UUID field
|
# restore the UUID field
|
||||||
setattr(self, '_uuid', data.get('uuid'))
|
setattr(self, '_uuid', data.get('uuid'))
|
||||||
|
|
4
test/integration/targets/omit/48673.yml
Normal file
4
test/integration/targets/omit/48673.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
- hosts: localhost
|
||||||
|
serial: "{{ testing_omitted_variable | default(omit) }}"
|
||||||
|
tasks:
|
||||||
|
- debug:
|
1
test/integration/targets/omit/aliases
Normal file
1
test/integration/targets/omit/aliases
Normal file
|
@ -0,0 +1 @@
|
||||||
|
shippable/posix/group3
|
5
test/integration/targets/omit/runme.sh
Executable file
5
test/integration/targets/omit/runme.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
ansible-playbook 48673.yml -i ../../inventory -v "$@"
|
Loading…
Reference in a new issue