Hey Magnum team,

Just thought of sharing here that in Solum we have a similar requirement. We 
want to know when a Heat stack corresponding to an 'app' is ready so that we 
can mark that app as ready in Solum's database. 
We periodically query Heat to get this information (so essentially a 
polling-based approach).
So far it has been working fine for us.

Also, thanks for sharing insights on issues that may arise when using 
SoftwareDeployments.

Thanks,
- Devdatta

________________________________________
From: Adrian Otto <adrian.o...@rackspace.com>
Sent: Wednesday, March 11, 2015 7:14 PM
To: OpenStack Development Mailing List (not for usage questions)
Subject: Re: [openstack-dev] [Magnum][Heat] Expression of Bay Status

In summary, we have decided to use the usage notification events emitted by 
heat (http://tinyurl.com/oultjm5). This should allow us to detect stack action 
completions, and errors (with reasons) which should be enough for a Bay 
implementation that does not need to poll. Stack timeouts can be passed to heat 
as parameters. This is not as elegant as what Angus and Zane suggested because 
it requires Magnum to access all RPC messages. With their proposed approach we 
could use a Zaqar queue that only emits the stack events relevant to that 
user/tenant. This conforms better to the principle of least privilege. Our 
preference for the decided approach is that it allows us tight integration with 
Heat using functionality that exists today. We admit that this implementation 
will be harder to debug than other options.

More remarks in-line.

On Mar 11, 2015, at 2:27 AM, Jay Lau <jay.lau....@gmail.com> wrote:

>
>
> 2015-03-10 23:21 GMT+08:00 Hongbin Lu <hongbin...@gmail.com>:
> Hi Adrian,
>
> On Mon, Mar 9, 2015 at 6:53 PM, Adrian Otto <adrian.o...@rackspace.com> wrote:
> Magnum Team,
>
> In the following review, we have the start of a discussion about how to 
> tackle bay status:
>
> https://review.openstack.org/159546
>
> I think a key issue here is that we are not subscribing to an event feed from 
> Heat to tell us about each state transition, so we have a low degree of 
> confidence that our state will match the actual state of the stack in 
> real-time. At best, we have an eventually consistent state for Bay following 
> a bay creation.
>
> Here are some options for us to consider to solve this:
>
> 1) Propose enhancements to Heat (or learn about existing features) to emit a 
> set of notifications upon state changes to stack resources so the state can 
> be mirrored in the Bay resource.
>
> A drawback of this option is that it increases the difficulty of 
> trouble-shooting. In my experience of using Heat (SoftwareDeployments in 
> particular), Ironic and Trove, one of the most frequent errors I encountered 
> is that the provisioning resources stayed in deploying state (never went to 
> completed). The reason is that they were waiting a callback signal from the 
> provisioning resource to indicate its completion, but the callback signal was 
> blocked due to various reasons (e.g. incorrect firewall rules, incorrect 
> configs, etc.). Troubling-shooting such problem is generally harder.
> I think that the "heat convergence" is working on the issues for your 
> concern: https://wiki.openstack.org/wiki/Heat/Blueprints/Convergence

Yes, that wold address part of the concern, but not all of it. Depending on the 
implementation of state exchange, and the configuration of the network, it may 
be possible to create an installation of the system that does not function at 
all due to network ACLs, and almost no clue to the implementer about why it 
does not work. To mitigate this concern, we would want an implementation that 
does not require a bi-directional network trust relationship between Heat and 
Magnum. Instead, implement it in a way that connections are only made from 
Magnum to Heat, so if the stack creation call succeeds, so can the status 
updates. Perhaps we can revisit this design discussion in a future iteration of 
our Bay status code.

Adrian

>
> 2) Spawn a task to poll the Heat stack resource for state changes, and 
> express them in the Bay status, and allow that task to exit once the stack 
> reaches its terminal (completed) state.
>
> 3) Don’t store any state in the Bay object, and simply query the heat stack 
> for status as needed.
>
> Are each of these options viable? Are there other options to consider? What 
> are the pro/con arguments for each?
>
> Thanks,
>
> Adrian
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
>
> --
> Thanks,
>
> Jay Lau (Guangya Liu)
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to