[openstack-dev] [Heat] Dealing with nonexistent resources during resource-list / stack-delete

Steve Baker sbaker at redhat.com
Tue Mar 8 22:50:06 UTC 2016


On 09/03/16 05:41, Johannes Grassler wrote:
> Hello,
>
> On 03/08/2016 04:57 PM, Zane Bitter wrote:
>> On 08/03/16 10:40, Johannes Grassler wrote:
>>> On 03/07/2016 04:48 PM, Zane Bitter wrote:
>>>> On 04/03/16 04:35, Johannes Grassler wrote:
>>> [Uncaught client exceptions in resource plugins' add_dependencies()
>>> methods]
>>>> In the meantime, we need to find and squash every instance of this
>>>> problem
>>>> wherever we can like you said.
>>>
>>> It might also be a good idea to caution against unchecked API client
>>> invocations in
>>>
>>> http://docs.openstack.org/developer/heat/developing_guides/pluginguide.html 
>>>
> [...]
>
>> It's best if they *do* omit it entirely. The only reason we override 
>> it in
>> the Neutron resources is that the Neutron API is terrible for 
>> orchestration
>> purposes[1]. It adds a bunch of invisible, fragile magic that breaks in
>> subtle ways when e.g. resources are moved into nested stacks.
>
> I never saw the Neutron API that way before (I guess I just got used 
> to the
> unintuitive bits), but seeing it spelled out in your rant makes it very
> obvious, yes. I didn't know that was the root cause for overriding
> add_dependencies() and that very ignorance of mine...
>
>> The default implementation provides everything that we *ought* to 
>> need, so if
>> we document anything I think it should be that plugin developers 
>> should not
>> touch add_dependencies() at all.
>
> ...suggests mentioning that much is probably a good idea (lest 
> somebody pick
> one of the Neutron plugins as a template to base their own resource 
> plugin
> on).
>
>> Definitely not big enough to require a spec IMO.
>
> Yes, I can see that, given how it's not something plugin writers 
> should do
> anyway. Then I'll just write a little paragraph cautioning against 
> overriding
> add_dependcies() and add a Related-Bug: line.
>
Thanks for that. The paragraph could say that it is preferable to not 
override add_dependencies, but if they do then they should *never* make 
REST API calls inside it. This is for the reason you've discovered, and 
also because it will kill the performance of some stack operations.

 From what I can see you've discovered the only 2 places where REST API 
calls are made from add_dependencies, I've added comments to the 
review[1] to suggest how they can be removed.

[1] https://review.openstack.org/#/c/289371



More information about the OpenStack-dev mailing list