Merge pull request #13072 from Yannig/devel_cache_optimization

Cache optimization
This commit is contained in:
James Cammarata 2015-11-09 14:54:06 -05:00
commit e36b4e2a13

View file

@ -37,6 +37,8 @@ from ansible.playbook.attribute import Attribute, FieldAttribute
from ansible.utils.boolean import boolean
from ansible.utils.vars import combine_vars, isidentifier
BASE_ATTRIBUTES = {}
class Base:
# connection/transport
@ -123,12 +125,19 @@ class Base:
Returns the list of attributes for this class (or any subclass thereof).
If the attribute name starts with an underscore, it is removed
'''
# check cache before retrieving attributes
if self.__class__ in BASE_ATTRIBUTES:
return BASE_ATTRIBUTES[self.__class__]
# Cache init
base_attributes = dict()
for (name, value) in getmembers(self.__class__):
if isinstance(value, Attribute):
if name.startswith('_'):
name = name[1:]
base_attributes[name] = value
BASE_ATTRIBUTES[self.__class__] = base_attributes
return base_attributes
def _initialize_base_attributes(self):