<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_1_1414101400091_23117">I've got some additional info for y'all on this.  The problem is in heat.engine.parser.Stack.delete with this statement:</div><div id="yui_3_16_0_1_1414101400091_23117" dir="ltr"><br></div><div id="yui_3_16_0_1_1414101400091_23117" dir="ltr">







</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23478">user_creds = db_api.user_creds_get(self.user_creds_id)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23528"><br></div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1414101400091_23526">In my case, that call is throwing an exception that's not getting caught or logged.  The exact exception is:</div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1414101400091_23527"><br></div><div class="" style="" id="yui_3_16_0_1_1414101400091_23477">ERROR Incorrect padding</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23464">Traceback (most recent call last):</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23465">  File "/usr/lib/python2.6/site-packages/heat/engine/parser.py", line 670, in delete</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23466">    user_creds = db_api.user_creds_get(self.user_creds_id)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23467">  File "/usr/lib/python2.6/site-packages/heat/db/api.py", line 170, in user_creds_get</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23468">    return IMPL.user_creds_get(context_id)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23469">  File "/usr/lib/python2.6/site-packages/heat/db/sqlalchemy/api.py", line 468, in user_creds_get</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23470">    result['password'] = _decrypt(result['password'], db_result.decrypt_method)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23471">  File "/usr/lib/python2.6/site-packages/heat/db/sqlalchemy/api.py", line 174, in _decrypt</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23472">    value = decryptor(enc_value)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23473">  File "/usr/lib/python2.6/site-packages/heat/common/crypt.py", line 48, in oslo_decrypt_v1</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23474">    auth_info, b64decode=True)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23530">  File "/usr/lib/python2.6/site-packages/heat/openstack/common/crypto/utils.py", line 158, in decrypt</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23475">    msg = base64.b64decode(msg)</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23476">  File "/usr/lib64/python2.6/base64.py", line 76, in b64decode</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23536">    raise TypeError(msg)</div><div class="" style="" dir="ltr" id="yui_3_16_0_1_1414101400091_23397">























</div><div class="" style="" id="yui_3_16_0_1_1414101400091_23531">TypeError: Incorrect padding</div><div id="yui_3_16_0_1_1414101400091_23292"><br></div><div id="yui_3_16_0_1_1414101400091_23292" dir="ltr">Does this ring any bells? I checked the user_creds table and it looks okay as far as I can tell. Do I have a mismatch between how the value is encoded vs how it's being decoded?</div><div id="yui_3_16_0_1_1414101400091_23292" dir="ltr"><br></div><div id="yui_3_16_0_1_1414101400091_23292" dir="ltr">Ken</div>  <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1414101400091_23120"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" id="yui_3_16_0_1_1414101400091_23119"> <div dir="ltr" id="yui_3_16_0_1_1414101400091_23118"> <hr size="1" id="yui_3_16_0_1_1414101400091_23293">  <font size="2" face="Arial" id="yui_3_16_0_1_1414101400091_23121"> <b id="yui_3_16_0_1_1414101400091_23396"><span style="font-weight:bold;" id="yui_3_16_0_1_1414101400091_23395">From:</span></b> Zane Bitter <zbitter@redhat.com><br> <b><span style="font-weight: bold;">To:</span></b> Ken Thomas <krt@yahoo-inc.com>; "openstack@lists.openstack.org" <openstack@lists.openstack.org> <br> <b><span style="font-weight: bold;">Sent:</span></b> Wednesday, October 22, 2014 6:10 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [openstack-dev] [Heat] Stack stuck in DELETE_IN_PROGRESS even though all resources are DELETE_COMPLETE<br> </font> </div> <div class="y_msg_container" id="yui_3_16_0_1_1414101400091_23236"><br>Moving this to the openstack@ list...<br clear="none"><br clear="none">On 21/10/14 18:56, Ken Thomas wrote:<br clear="none">> Greetings all,<br clear="none">> I'm using Heat from Icehouse and I'm hitting a problem that I'm hoping y'all can shed some light on.<br clear="none">> I have no problems doing stack-create. I can watch the MySQL commands go by and see it happily update the stack table so that it eventually shows up as CREATE_COMPLETE. When I delete the stack, everything seems to be working fine.  I see the MySQL update that sets the stack to DELETE IN PROGRESS as well as the updates that sets my single resource to DELETE_COMPLETE... but I never see the final update to the stack table to set it to DELETE COMPLETE.<br clear="none"><br clear="none">I don't think you're the first person to report this, but afaik we've <br clear="none">never been able to track it down. There are a bunch of things that Heat <br clear="none">does after deleting the resources, like cleaning up trusts in Keystone, <br clear="none">and perhaps one of those is failing. However, *in theory* there's no way <br clear="none">for the stack to be left in the "DELETE_IN_PROGRESS" state without an <br clear="none">exception being raised that would leave a prominent entry in the logs.<br clear="none"><br clear="none">> One very odd thing that I found in the MySQL logs (snippet below), is a query that includes that stack name but with an extra '*' character append to it. My stack is named 'xyzzy8' but notice the 'xzyzzy8*' in the constraint. That's not going to return anything and I'm wondering if that is what's preventing the final stack DELETE_COMPLTE update from happening?<br clear="none"><br clear="none">The stack name that ends with '*' is the "backup stack", which is used <br clear="none">to hold out-of-date resources during a stack update. When the stack is <br clear="none">deleted, Heat will check for the existence of the backup stack and make <br clear="none">sure any resources left behind in there (from a failed update) are <br clear="none">deleted too. If it doesn't exist, that shouldn't be a problem.<br clear="none"><br clear="none">> There are no errors in the any of the heat logs.<br clear="none">><br clear="none">> Any guidance would be greatly appreciated!<br clear="none"><br clear="none">All I can suggest is to (a) make sure you have the very latest version <br clear="none">of Icehouse and (b) make sure your logging is turned up to 11, then try <br clear="none">again.<br clear="none"><br clear="none">Since you seem very proficient at debugging, if that doesn't work you <br clear="none">could also try adding extra logging into the method <br clear="none">heat.engine.parser.Stack.delete to try to figure out how far it is getting.<br clear="none"><br clear="none">Feel free to raise a bug in Launchpad and attach any logs that might <br clear="none">help us figure out what is happening.<br clear="none"><br clear="none">cheers,<br clear="none">Zane.<div class="qtdSeparateBR"><br><br></div><div class="yqt0646956842" id="yqtfd79377"><br clear="none"><br clear="none">><br clear="none">> Ken<br clear="none">> SELECT stack.status_reason AS stack_status_reason, stack.created_at AS stack_created_at, stack.deleted_at AS stack_deleted_at, stack.action AS stack_action, stack.status AS stack_status, stack.id AS stack_id, stack.name AS stack_name, stack.raw_template_id AS stack_raw_template_id, stack.username AS stack_username, stack.tenant AS stack_tenant, stack.parameters AS stack_parameters, stack.user_creds_id AS stack_user_creds_id, stack.owner_id AS stack_owner_id, stack.timeout AS stack_timeout, stack.disable_rollback AS stack_disable_rollback, stack.stack_user_project_id AS stack_stack_user_project_id, stack.updated_at AS stack_updated_atFROM stackWHERE stack.deleted_at IS NULL AND (stack.tenant = 'c6c488223aae4e97bf56dda8cef36b3b' OR stack.stack_user_project_id = 'c6c488223aae4e97bf56dda8cef36b3b') AND stack.name = 'xyzzy8*' AND stack.owner_id = '9a3e56d7-0c10-4c1c-8c54-0e5580cee121'<br clear="none"><br clear="none"></div><br><br></div> </div> </div>  </div></body></html>