heat/heat/engine
Zane Bitter 3c13cb82a6 Cache dep_attrs for all resources in definitions
When the dep_attrs function was written, it was used only in convergence
after checking a single resource. However, now we also use it to generate
data for the ResourceProxy objects, which is often done for all resources
simultaneously. That means doing O(n^2) dep_attrs() calls, which can really
slow things down when there is a large number of resources with complex
properties (or metadata).

This change adds an all_dep_attrs() call, which runs as fast as dep_attrs()
on everything except get_attr functions and their arguments, but only needs
to be called once instead of once per resource. (The get_attr function can
in future override the default implementation of all_dep_attrs() to be as
efficient as dep_attrs() as well.) The resulting data is cached in the
ResourceDefinition or OutputDefinition so that subsequent calls to their
get_attr() methods with different (or the same) resource names will use the
existing data.

Change-Id: If95f4c04b841519ce3d7492211f2696588c0ed48
Partially-Implements: blueprint stack-definition
Closes-Bug: #1684272
2017-07-21 10:44:51 -04:00
..
cfn Add an add_output() method to Template 2017-06-29 09:07:02 -04:00
clients Merge "Add tag for server nic" 2017-07-18 11:00:31 +00:00
constraint New common constraint 'Expiration' 2016-08-01 12:43:42 +03:00
hot Use StackDefinition in intrinsic functions for resolving data 2017-07-21 10:30:34 -04:00
notification Trivial:Standardize the output format of 'help' in some files 2016-09-21 14:12:27 +08:00
resources Remove obsolete cache_data from Stack 2017-07-21 10:44:51 -04:00
__init__.py
api.py Always return live resource attributes in list_stack_resources 2017-06-08 21:48:17 -04:00
attributes.py Cache attributes with custom handling 2017-06-27 22:08:03 -04:00
check_resource.py Store resource attributes in the DB 2017-06-21 20:18:46 -04:00
conditions.py Allows condition name using boolean or function 2016-09-12 21:40:06 -04:00
constraints.py Remove log translations 2017-03-25 17:11:50 +08:00
dependencies.py Use __slots__ for dependencies.Node 2016-12-01 15:35:15 -05:00
environment.py Use pydoc for formatting docstrings 2017-03-28 15:36:53 +00:00
event.py Fix i18n issue in event.py 2017-01-26 14:53:39 +00:00
function.py Cache dep_attrs for all resources in definitions 2017-07-21 10:44:51 -04:00
lifecycle_plugin.py Fix garbled docstrings 2015-11-10 11:12:36 -05:00
node_data.py Add a NodeData class to roll up resource data 2017-02-24 10:10:26 -05:00
output.py Cache dep_attrs for all resources in definitions 2017-07-21 10:44:51 -04:00
parameter_groups.py Get rid of bogus debug logging in parameter groups 2015-12-04 19:56:56 -05:00
parameters.py Merge "Pretty print parameters in stack-show" 2017-06-22 14:53:45 +00:00
parent_rsrc.py Separate management of parent resource into separate class 2017-02-24 10:19:21 -05:00
plugin_manager.py Remove log translations 2017-03-25 17:11:50 +08:00
properties.py Fix translated required properties 2017-04-26 15:08:34 +02:00
properties_group.py Initial PropertiesGroup implementation 2016-11-07 14:29:17 +03:00
resource.py Cache dep_attrs for all resources in definitions 2017-07-21 10:44:51 -04:00
rsrc_defn.py Cache dep_attrs for all resources in definitions 2017-07-21 10:44:51 -04:00
scheduler.py Get cancellation grace period correctly 2017-06-29 01:47:08 +00:00
service.py Update StackDefinition resource data when getting outputs 2017-07-21 10:30:34 -04:00
service_software_config.py Use six.text_type() instead of str() to serialise status 2017-05-22 15:53:39 -04:00
service_stack_watch.py Update StackDefinition resource data on metadata refresh 2017-07-21 10:30:34 -04:00
software_config_io.py Ignore string default for software config input 2017-06-20 16:21:11 +02:00
stack.py Remove obsolete cache_data from Stack 2017-07-21 10:44:51 -04:00
stack_lock.py Remove log translations 2017-03-25 17:11:50 +08:00
status.py Define resource actions/statuses in a separate class 2017-02-24 10:19:21 -05:00
stk_defn.py Cache dep_attrs for all resources in definitions 2017-07-21 10:44:51 -04:00
support.py Non-destructive upgrade for deprecated resources 2016-09-02 13:09:11 +08:00
sync_point.py Cache attributes with custom handling 2017-06-27 22:08:03 -04:00
template.py Add an add_output() method to Template 2017-06-29 09:07:02 -04:00
template_common.py Allows condition name using boolean or function 2016-09-12 21:40:06 -04:00
template_files.py Remove db.api wrapper 2016-12-13 09:40:29 +01:00
timestamp.py Fix garbled docstrings 2015-11-10 11:12:36 -05:00
translation.py Remove unnecessary old translation mechanism 2017-04-12 12:02:54 +00:00
update.py Use StackDefinition in intrinsic functions for resolving data 2017-07-21 10:30:34 -04:00
watchrule.py Explicitly compare IDs to None 2017-05-02 16:29:35 -04:00
worker.py Merge "Fix _retrigger_replaced in convergence worker" 2017-07-21 10:53:03 +00:00