mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-15 21:31:02 +00:00
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:
@@ -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
|
||||
# the default specified in the FieldAttribute and move on
|
||||
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
|
||||
|
||||
# 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:
|
||||
setattr(self, name, data[name])
|
||||
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
|
||||
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 "$@"
|
||||
Reference in New Issue
Block a user