Bug 1031034 (heat-bp-support-retry-with-idempotency) - [RFE][heat]: Support API retry function with Idempotency in creating/updating a stack
Summary: [RFE][heat]: Support API retry function with Idempotency in creating/updating...
Keywords:
Status: CLOSED WONTFIX
Alias: heat-bp-support-retry-with-idempotency
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-heat
Version: unspecified
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: ---
: ---
Assignee: Steve Baker
QA Contact: Amit Ugol
URL: https://blueprints.launchpad.net/heat...
Whiteboard: upstream_milestone_none upstream_stat...
Depends On:
Blocks: 1031047
TreeView+ depends on / blocked
 
Reported: 2013-11-15 14:04 UTC by Stephen Gordon
Modified: 2016-05-04 21:19 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-05-04 21:19:30 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Stephen Gordon 2013-11-15 14:04:59 UTC
Cloned from launchpad blueprint https://blueprints.launchpad.net/heat/+spec/support-retry-with-idempotency.

Description:

Currently Heat doesn't have a retry function in creating/updating a stack.
In case of API request failure, Heat would change stack status to "XXX_FAILURE" .
(Or start rollback process if the rollback flag was true.)

However, I think there are some circumstances/scenarios where retry is appropriate.
(i.e. 503 response or timeout due to server failover)

On the other hand, however, a retry function may result in creating duplicate resources when Heat couldn't get response from nova and other APIs.
In order to avoid this, I believe leveraging idempotency that is discussed in nova could be a solution.

https://blueprints.launchpad.net/nova/+spec/idempotentcy-client-token

Our idea for implementing a retry function to Heat is:
Heat to retry POST requests with a ClientToken header to avoid creating duplicate resources, until it reaches a retry limit.
Heat to retry PUT/GET requests until it gets 2xx response or it reaches a retry limit. ClientTokens are not used in this case.
Heat to retry DELETE requests until it gets 2xx response or 404 response or it reaches a retry limit. ClientTokens are not used in this case.

Note:
Some of pythonclients have retry functions, but they cannot be utilized because Heat has to judge the necessity of retry by itself.


Specification URL (additional information):

None

Comment 2 Zane Bitter 2016-05-04 21:19:30 UTC
We have retries, but idempotency relies on changes to the Nova API which never landed. Closing this bug as there's no prospect of it happening upstream any time soon.


Note You need to log in before you can comment on or make changes to this bug.