get_file doesn't notice changes during update

Bug #1445170 reported by Zane Bitter
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Fix Released
High
Zane Bitter
Juno
Fix Released
Undecided
Unassigned
Kilo
Fix Released
High
Angus Salkeld

Bug Description

This is the same issue as bug 1291411, except for get_file instead of get_param.

Before an update starts, we replace the existing stack's environment with the new one we are updating to. If intrinsic functions maintain a reference only to the stack, then when calculating the values of existing resources they will erroneously use the new environment.

This means a couple of things:

1. If a file that was referenced in the previous version of the stack is removed from the environment, it will cause an error on that update. Future updates may succeed.
2. Heat will never notice a change in the output of get_file, so resources that should be updated may not get updated (though this doesn't affect nested stacks, which are always updated as of Kilo).

Zane Bitter (zaneb)
Changed in heat:
status: Triaged → In Progress
tags: added: juno-backport-potential
description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

Fix proposed to branch: master
Review: https://review.openstack.org/174611

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)

Reviewed: https://review.openstack.org/174611
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=e4447e7b66cf4691218b067643b5e25de72e31ba
Submitter: Jenkins
Branch: master

commit e4447e7b66cf4691218b067643b5e25de72e31ba
Author: Zane Bitter <email address hidden>
Date: Thu Apr 16 17:20:05 2015 -0400

    Don't re-bind environment for get_file during stack update

    While we're in the process of updating a stack, we set the stack's
    environment to the new, updated values. However, we don't want to change
    existing resources' idea of their own values until we have explivitly done
    an update of them to bring them into line with the new
    template/environment. So when parsing a template snippet containing the
    get_file intrinsic, store the files dict to which it will refer. get_file
    will resolve to the new file only when the template has been updated.

    Closes-Bug: #1445170
    Change-Id: I8ec32b0e38389cd314e4b2b2d8c65f61f8a9c41e

Changed in heat:
status: In Progress → Fix Committed
Angus Salkeld (asalkeld)
Changed in heat:
milestone: none → liberty-1
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (stable/kilo)

Fix proposed to branch: stable/kilo
Review: https://review.openstack.org/176127

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (stable/kilo)

Reviewed: https://review.openstack.org/176127
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=370f3c98c5eccf8bce1be425acc31af5e7224171
Submitter: Jenkins
Branch: stable/kilo

commit 370f3c98c5eccf8bce1be425acc31af5e7224171
Author: Zane Bitter <email address hidden>
Date: Thu Apr 16 17:20:05 2015 -0400

    Don't re-bind environment for get_file during stack update

    While we're in the process of updating a stack, we set the stack's
    environment to the new, updated values. However, we don't want to change
    existing resources' idea of their own values until we have explivitly done
    an update of them to bring them into line with the new
    template/environment. So when parsing a template snippet containing the
    get_file intrinsic, store the files dict to which it will refer. get_file
    will resolve to the new file only when the template has been updated.

    Closes-Bug: #1445170
    Change-Id: I8ec32b0e38389cd314e4b2b2d8c65f61f8a9c41e
    (cherry picked from commit e4447e7b66cf4691218b067643b5e25de72e31ba)

Thierry Carrez (ttx)
tags: removed: kilo-rc-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

Fix proposed to branch: master
Review: https://review.openstack.org/179291

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)
Download full text (7.7 KiB)

Reviewed: https://review.openstack.org/179291
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=5d725ecd09a35e3d5fb042956c4ecebb309c0a41
Submitter: Jenkins
Branch: master

commit b5c32027e5f207cca51796ee2aba346413ad48da
Author: Steven Hardy <email address hidden>
Date: Thu Apr 23 14:14:26 2015 +1000

    Fix ResourceGroup validate when there are removal_policies

    We can't call child_template() from a validate in ResourceGroup
    as it accesses nested(). So move the validation to validate_nested_stack()
    so we can control the test template used for validation.

    Unfortunately coverage for this got removed during recent test rework
    and it looks like the interface has got broken.

    Co-Authored-by: Angus Salkeld <email address hidden>
    Change-Id: Ibea738a343847736b041cc49a2c486fa71e562d9
    Closes-Bug: #1446861

commit c958ecb5b4b4fc5a0236b70c21d7d62864cd162b
Author: Ethan Lynn <email address hidden>
Date: Wed Apr 22 13:46:11 2015 +0800

    Fix unicodeerror when heat-engine start

    If change local language to other languages(like ja), heat-engine
    will failed to start.

    Closes-Bug: #1446958
    Change-Id: Ia3cbcebb86257bc1c52ea758c1583191e5a52a2d
    (cherry picked from commit 0b3dd7be3d3cd9842616a16843d03e6c13cdcb08)

commit 94c4ae56e0fece995659d718ed1ab6e56b2deb9f
Author: Ethan Lynn <email address hidden>
Date: Tue Apr 21 17:09:42 2015 +0800

    Add v6-fixed-ip support for nova server

    Now nova server fixed-ip only support ipv4 address,
    this patch add IPv6 fixed ip support for nova server.

    Closes-Bug: #1446532
    Change-Id: I647abeedd36352f053a043d00ab87a84ee2470f3
    (cherry picked from commit 3e1a6f3b826bbc2a638ed7ea239221d13678024c)

commit d07f91615a159663261091e672ce62f90e6ad607
Author: Angus Salkeld <email address hidden>
Date: Tue Apr 7 09:25:50 2015 +1000

    Persist parent_resource_name and make sure it's available

    We are persisting for a number of reasons:
    - so we don't have to pass this through ever rpc call
    - the API exposes parent_resource (currently always None as
      it is not persisted)

    Closes-bug: #1438978
    Change-Id: Id2db36c0234a085ec4f0ce2ab114ec483ea29d81
    (cherry picked from commit edf86aeac2f7b68243b0eccc3c49fa1a579e664b)

commit f944c86d4c26877f4d8dab56790815af8e83ba45
Author: Michal Rostecki <email address hidden>
Date: Wed Mar 25 06:47:33 2015 +0100

    Novaclient v2 instead of v1_1

    Nova API v1.1 is now deprecated and causes warnings.

    Change-Id: Ib4b57a308b7637f4015a07b4e888ccd6347cb947
    Closes-Bug: #1437158
    (cherry picked from commit d9d68cf52bd7027e7d1cafd023a399c2a342b2c5)

commit 370f3c98c5eccf8bce1be425acc31af5e7224171
Author: Zane Bitter <email address hidden>
Date: Thu Apr 16 17:20:05 2015 -0400

    Don't re-bind environment for get_file during stack update

    While we're in the process of updating a stack, we set the stack's
    environment to the new, updated values. However, we don't want to change
    existing resources' idea of their own values until we have explivitly done
    an update of them to bring them into line with th...

Read more...

Thierry Carrez (ttx)
Changed in heat:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in heat:
milestone: liberty-1 → 5.0.0
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (stable/juno)

Fix proposed to branch: stable/juno
Review: https://review.openstack.org/243344

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (stable/juno)

Reviewed: https://review.openstack.org/243344
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=b0b1c4d410a2e2d6da37fc5bc5c0e6c750ee6ba6
Submitter: Jenkins
Branch: stable/juno

commit b0b1c4d410a2e2d6da37fc5bc5c0e6c750ee6ba6
Author: Zane Bitter <email address hidden>
Date: Thu Apr 16 17:20:05 2015 -0400

    Don't re-bind environment for get_file during stack update

    While we're in the process of updating a stack, we set the stack's
    environment to the new, updated values. However, we don't want to change
    existing resources' idea of their own values until we have explivitly done
    an update of them to bring them into line with the new
    template/environment. So when parsing a template snippet containing the
    get_file intrinsic, store the files dict to which it will refer. get_file
    will resolve to the new file only when the template has been updated.

    Closes-Bug: #1445170
    Change-Id: I8ec32b0e38389cd314e4b2b2d8c65f61f8a9c41e
    (cherry picked from commit e4447e7b66cf4691218b067643b5e25de72e31ba)

Zane Bitter (zaneb)
tags: removed: juno-backport-potential
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.