Work around keystone strangeness (error deleting user)
Fixes: #144 Change-Id: Ib9298605accc3fc7d12112a4fb57df2b4746864a Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
This commit is contained in:
parent
3df9355a68
commit
bb92e62581
|
@ -13,6 +13,7 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import eventlet
|
||||||
import logging
|
import logging
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
from heat.engine.resources import Resource
|
from heat.engine.resources import Resource
|
||||||
|
@ -64,8 +65,33 @@ class User(Resource):
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logger.info('user %s/%s does not exist' % (self.name,
|
logger.info('user %s/%s does not exist' % (self.name,
|
||||||
self.instance_id))
|
self.instance_id))
|
||||||
else:
|
return
|
||||||
user.delete()
|
|
||||||
|
# tempory hack to work around an openstack bug.
|
||||||
|
# seems you can't delete a user first time - you have to try
|
||||||
|
# a couple of times - go figure!
|
||||||
|
tmo = eventlet.Timeout(10)
|
||||||
|
status = 'WAITING'
|
||||||
|
reason = 'Timed out trying to delete user'
|
||||||
|
try:
|
||||||
|
while status == 'WAITING':
|
||||||
|
try:
|
||||||
|
user.delete()
|
||||||
|
status = 'DELETED'
|
||||||
|
except Exception as ce:
|
||||||
|
reason = str(ce)
|
||||||
|
eventlet.sleep(1)
|
||||||
|
except eventlet.Timeout as t:
|
||||||
|
if t is not tmo:
|
||||||
|
# not my timeout
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
status = 'TIMEDOUT'
|
||||||
|
finally:
|
||||||
|
tmo.cancel()
|
||||||
|
|
||||||
|
if status != 'DELETED':
|
||||||
|
raise exception.Error(reason)
|
||||||
|
|
||||||
def FnGetRefId(self):
|
def FnGetRefId(self):
|
||||||
return unicode(self.name)
|
return unicode(self.name)
|
||||||
|
|
Loading…
Reference in New Issue