The internal create_stack interface misses 'parent' parameter

Bug #1438978 reported by Qiu Jian
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Fix Released
High
Angus Salkeld
Kilo
Fix Released
High
Ethan Lynn

Bug Description

We are working on a add-on feature utilizing heat life-cycle plugin and life cycle scheduler hints (https://review.openstack.org/#/c/96889/)

We are using a template as below:

heat_template_version: 2013-05-23

description: >
  This is a very simple template that illustrates the basic features

resources:

  instance:
    type: OS::Heat::AutoScalingGroup
    properties:
      resource:
        type: OS::Nova::Server
        properties:
            image: tmpl
            flavor: xxxxx
      min_size: 2
      max_size: 10

  scale_up_policy:
    type: OS::Heat::ScalingPolicy
    properties:
      adjustment_type: change_in_capacity
      auto_scaling_group_id: {get_resource: instance}
      cooldown: 60
      scaling_adjustment: 1

  scale_down_policy:
    type: OS::Heat::ScalingPolicy
    properties:
      adjustment_type: change_in_capacity
      auto_scaling_group_id: {get_resource: instance}
      cooldown: 60
      scaling_adjustment: '-1'

We call 'path_in_stack()' in life cycle plugin when creating nested stack (OS::Nova::Server in the above case) to get the root stack name. The expected output should be [(None, u'x'), (u'instance', u'x-instance-fl76v2a7tvmm')], however, the actual output is [(None, u'x-instance-fl76v2a7tvmm')].

The root cause may come from the patch https://review.openstack.org/#/c/116336/38, which use rpc call to create nested stack, but does not pass the 'parent_resource' parameter. This parameter should be added when creating nested stack via rpc call, otherwise, the 'parent_resource' of nested stack will always be None

Angus Salkeld (asalkeld)
Changed in heat:
assignee: nobody → Angus Salkeld (asalkeld)
status: New → Triaged
importance: Undecided → High
Angus Salkeld (asalkeld)
Changed in heat:
milestone: none → kilo-rc1
Revision history for this message
Angus Salkeld (asalkeld) wrote :

I'll fix, but it's not so simple.

1. we have "parent_resource" returned as a part of the resource details, IMHO this is wrong as it should be a part of the stack's details (error in the API)
2. even before the RPC change the api would have *always* returned None for this as it is not persisted in the DB.
3. the RPC create_stack needs a new revision to take the parent_resource_name
4. we need to have a new schema to add the parent_resource_name to the stack table
5. we need to load that correctly

Changed in heat:
milestone: kilo-rc1 → next
tags: added: kilo-rc-potential
Revision history for this message
Qiu Jian (gothicqiujian) wrote :

I am not sure whether it is necessary to persist the parent_resource_name in DB. If the nested stack is always created/updated by its parent resource, the parent_resource_name can be passed when create or load the nested stack each time...

Revision history for this message
Angus Salkeld (asalkeld) wrote :

Because the API is exposing parent_resource. And you can access the nested stack independently of the parent stack.

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/169984

Changed in heat:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)

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

commit edf86aeac2f7b68243b0eccc3c49fa1a579e664b
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

Changed in heat:
status: In Progress → Fix Committed
Revision history for this message
Qiu Jian (gothicqiujian) wrote :

the patch may back merge to kilo

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/176220

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on heat (stable/kilo)

Change abandoned by Jian Qiu (<email address hidden>) on branch: stable/kilo
Review: https://review.openstack.org/176185
Reason: another cherry pick patch has been made

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

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

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)

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...

Changed in heat:
status: Fix Committed → Fix Released
Revision history for this message
Zane Bitter (zaneb) wrote :

Looks like this patch was merged right at the beginning of Liberty but the bug was never targeted for that.

Changed in heat:
milestone: next → liberty-rc2
Thierry Carrez (ttx)
Changed in heat:
milestone: liberty-rc2 → 5.0.0
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.