Merge "Change ProfileInUse exception to ResourceBusyError"

This commit is contained in:
Jenkins 2015-06-23 09:05:29 +00:00 committed by Gerrit Code Review
commit 7de28234c1
4 changed files with 15 additions and 13 deletions

View File

@ -155,10 +155,6 @@ class ProfileNotFound(SenlinException):
msg_fmt = _("The profile (%(profile)s) could not be found.")
class ProfileInUse(SenlinException):
msg_fmt = _("The profile (%(profile)s) is still in use.")
class ProfileNotSpecified(SenlinException):
msg_fmt = _("Profile not specified.")
@ -231,7 +227,7 @@ class InternalError(SenlinException):
class ResourceBusyError(InternalError):
msg_fmt = _("%(resource_type)s (%(resource_id)s) is busy now.")
msg_fmt = _("The %(resource_type)s (%(resource_id)s) is busy now.")
class PolicyNotAttached(InternalError):
@ -240,7 +236,7 @@ class PolicyNotAttached(InternalError):
class ResourceInUse(SenlinException):
msg_fmt = _("%(resource_type)s (%(resource_id)s) is in use now.")
msg_fmt = _("The %(resource_type)s (%(resource_id)s) is still in use.")
class InvalidContentType(SenlinException):

View File

@ -857,13 +857,15 @@ def profile_delete(context, profile_id, force=False):
query = model_query(context, models.Cluster)
clusters = query.filter_by(profile_id=profile_id, deleted_time=None)
if clusters.count() > 0:
raise exception.ProfileInUse(profile=profile_id)
raise exception.ResourceBusyError(resource_type='profile',
resource_id=profile_id)
# used by any nodes?
query = model_query(context, models.Node)
nodes = query.filter_by(profile_id=profile_id, deleted_time=None)
if nodes.count() > 0:
raise exception.ProfileInUse(profile=profile_id)
raise exception.ResourceBusyError(resource_type='profile',
resource_id=profile_id)
session = orm_session.Session.object_session(profile)

View File

@ -260,7 +260,11 @@ class EngineService(service.Service):
def profile_delete(self, context, identity):
db_profile = self.profile_find(context, identity)
LOG.info(_LI('Deleting profile: %s'), identity)
profile_base.Profile.delete(context, db_profile.id)
try:
profile_base.Profile.delete(context, db_profile.id)
except exception.ResourceBusyError:
raise exception.ResourceInUse(resource_type='profile',
resource_id=db_profile.id)
return None
@request_context

View File

@ -337,9 +337,9 @@ class DBAPIProfileTest(base.SenlinTestCase):
cluster = shared.create_cluster(self.ctx, profile)
profile_id = profile.id
ex = self.assertRaises(exception.ProfileInUse,
ex = self.assertRaises(exception.ResourceBusyError,
db_api.profile_delete, self.ctx, profile_id)
self.assertEqual('The profile (%s) is still in use.' % profile_id,
self.assertEqual('The profile (%s) is busy now.' % profile_id,
six.text_type(ex))
db_api.cluster_delete(self.ctx, cluster.id)
@ -350,9 +350,9 @@ class DBAPIProfileTest(base.SenlinTestCase):
node = shared.create_node(self.ctx, None, profile)
profile_id = profile.id
ex = self.assertRaises(exception.ProfileInUse,
ex = self.assertRaises(exception.ResourceBusyError,
db_api.profile_delete, self.ctx, profile_id)
self.assertEqual('The profile (%s) is still in use.' % profile_id,
self.assertEqual('The profile (%s) is busy now.' % profile_id,
six.text_type(ex))
db_api.node_delete(self.ctx, node.id)