1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Mark playbook objects as finalized after post_validate

After post_validate() is called on an object, there should be no
need to continue looking up at parent attributes. This patch adds a
new flag (_finalized) which is set to True at the end of post_validate,
and getattr will not look beyond its own attributes from that point on.
This commit is contained in:
James Cammarata 2016-08-09 07:47:29 -05:00
parent 375f7c515a
commit 7503875ed7

View file

@ -60,10 +60,13 @@ class Base:
# flags and misc. settings
_environment = FieldAttribute(isa='list')
_no_log = FieldAttribute(isa='bool')
_always_run = FieldAttribute(isa='bool')
_run_once = FieldAttribute(isa='bool')
_ignore_errors = FieldAttribute(isa='bool')
_check_mode = FieldAttribute(isa='bool')
_always_run = FieldAttribute(isa='bool')
_run_once = FieldAttribute(isa='bool')
_ignore_errors = FieldAttribute(isa='bool')
_check_mode = FieldAttribute(isa='bool')
# other internal params
_finalized = False
# param names which have been deprecated/removed
DEPRECATED_ATTRIBUTES = [
@ -118,7 +121,7 @@ class Base:
except AttributeError:
try:
value = self._attributes[prop_name]
if value is None:
if value is None and not self._finalized:
try:
if prop_name in self._cached_parent_attrs:
value = self._cached_parent_attrs[prop_name]
@ -421,6 +424,8 @@ class Base:
raise AnsibleParserError("the field '%s' has an invalid value, which appears to include a variable that is undefined."
" The error was: %s" % (name,e), obj=self.get_ds())
self._finalized = True
def serialize(self):
'''
Serializes the object derived from the base object into