Remove unconditional return of user_id

This removes a legacy backwards compatibility codepath. Pre-Icehouse
stacks that have resources which inherit from StackUser may require
manual cleanup after deletion, as their stack user may not be deleted.

This fixes issues with subusers using software config. Heat should not
attempt to delete the stack user if one had not been created before.
The code that this patch removes caused an ID to always be returned.
Additionally, it set the ID in the resource metadata whether a stack
user existed or not, making it impossible to tell if one existed only
from data within the resource.

Change-Id: I50804998fdce1f7de06906ae9a2f47317721a6f6
Closes-bug: #1531606
This commit is contained in:
Drago Rosson 2016-01-04 10:32:08 -06:00
parent 8e818e8823
commit cae55d8ac1
2 changed files with 7 additions and 9 deletions

View File

@ -72,15 +72,6 @@ class StackUser(resource.Resource):
user_id = self.data().get('user_id')
if user_id:
return user_id
else:
# FIXME(shardy): This is a legacy hack for backwards compatibility
# remove after an appropriate transitional period...
# Assume this is a resource that was created with
# a previous version of heat and that the resource_id
# is the user_id
if self.resource_id:
self.data_set('user_id', self.resource_id)
return self.resource_id
def handle_delete(self):
self._delete_user()

View File

@ -0,0 +1,7 @@
---
upgrade:
- If upgrading with pre-icehouse stacks which contain resources that create
users (such as OS::Nova::Server, OS::Heat::SoftwareDeployment, and
OS::Heat::WaitConditionHandle), it is possible that the users will not be
removed upon stack deletion due to the removal of a legacy fallback code
path. In such a situation, these users will require manual removal.