Fix the issue that cannot delete resource
Change-Id: Id0e7e955c2b787a6e2d1fd06f58551ac273f54bf
This commit is contained in:
parent
fbe61bc996
commit
16726ae7af
|
@ -172,7 +172,8 @@ class BileanScheduler(object):
|
|||
|
||||
def _notify_task(self, user_id):
|
||||
user = user_mod.User.load(self.context, user_id=user_id)
|
||||
msg = {'user': user.id, 'notification': 'The balance is almost use up'}
|
||||
reason = "The balance is almost use up"
|
||||
msg = {'user': user.id, 'notification': reason}
|
||||
self.notifier.info('billing.notify', msg)
|
||||
if user.status != user.FREEZE and user.rate > 0:
|
||||
user.do_bill(self.context)
|
||||
|
@ -182,6 +183,7 @@ class BileanScheduler(object):
|
|||
except exception.NotFound as e:
|
||||
LOG.warn(_("Failed in deleting job: %s") % six.text_type(e))
|
||||
self._add_freeze_job(user)
|
||||
user.set_status(self.context, user.WARNING, reason)
|
||||
|
||||
def _daily_task(self, user_id):
|
||||
user = user_mod.User.load(self.context, user_id=user_id)
|
||||
|
@ -264,7 +266,7 @@ class BileanScheduler(object):
|
|||
def update_user_job(self, user):
|
||||
"""Update user's billing job"""
|
||||
if user.status not in [user.ACTIVE, user.WARNING]:
|
||||
self._delete_all_job(user.id)
|
||||
self._delete_all_job(user)
|
||||
return
|
||||
|
||||
for job_type in self.NOTIFY, self.FREEZE:
|
||||
|
|
|
@ -323,7 +323,7 @@ class EngineService(service.Service):
|
|||
resource = resource_mod.Resource.load(cnxt, resource_id=resource_id)
|
||||
return resource.to_dict()
|
||||
|
||||
def resource_update(self, resource):
|
||||
def resource_update(self, cnxt, resource):
|
||||
"""Do resource update."""
|
||||
res = resource_mod.Resource.load(
|
||||
self.context, resource_id=resource['id'])
|
||||
|
@ -339,11 +339,11 @@ class EngineService(service.Service):
|
|||
|
||||
self.scheduler.update_user_job(user)
|
||||
|
||||
def resource_delete(self, resource):
|
||||
def resource_delete(self, cnxt, resource_id):
|
||||
"""Do resource delete"""
|
||||
res = resource_mod.Resource.load(
|
||||
self.context, resource_id=resource['id'])
|
||||
user = user_mod.User.load(self.context, user_id=resource['user_id'])
|
||||
self.context, resource_id=resource_id, project_safe=False)
|
||||
user = user_mod.User.load(self.context, user_id=res.user_id)
|
||||
user.update_with_resource(self.context, res, action='delete')
|
||||
self.scheduler.update_user_job(user)
|
||||
try:
|
||||
|
|
|
@ -180,11 +180,12 @@ class User(object):
|
|||
}
|
||||
return user_dict
|
||||
|
||||
def set_status(self, status, reason=None):
|
||||
def set_status(self, context, status, reason=None):
|
||||
'''Set status of the user.'''
|
||||
self.status = status
|
||||
if reason:
|
||||
self.status_reason = reason
|
||||
self.store(context)
|
||||
|
||||
def update_with_resource(self, context, resource, action='create'):
|
||||
'''Update user with resource'''
|
||||
|
@ -225,20 +226,19 @@ class User(object):
|
|||
self.do_bill(context)
|
||||
self.balance += value
|
||||
if self.status == self.INIT and self.balance > 0:
|
||||
self.set_status(self.ACTIVE, reason='Recharged')
|
||||
self.set_status(context, self.FREE, reason='Recharged')
|
||||
elif self.status == self.FREEZE and self.balance > 0:
|
||||
reason = _("Status change from freeze to active because "
|
||||
reason = _("Status change from 'freeze' to 'free' because "
|
||||
"of recharge.")
|
||||
self.set_status(self.ACTIVE, reason=reason)
|
||||
self.set_status(context, self.FREE, reason=reason)
|
||||
elif self.status == self.WARNING:
|
||||
prior_notify_time = cfg.CONF.scheduler.prior_notify_time * 3600
|
||||
rest_usage = prior_notify_time * self.rate
|
||||
if self.balance > rest_usage:
|
||||
reason = _("Status change from warning to active because "
|
||||
"of recharge.")
|
||||
self.set_status(self.ACTIVE, reason=reason)
|
||||
self.set_status(context, self.ACTIVE, reason=reason)
|
||||
event_mod.record(context, self.id, action='recharge', value=value)
|
||||
self.store(context)
|
||||
|
||||
def _freeze(self, context, reason=None):
|
||||
'''Freeze user when balance overdraft.'''
|
||||
|
|
|
@ -90,7 +90,7 @@ class ResourceAction(Action):
|
|||
|
||||
def do_delete(self):
|
||||
"""Delete a resource"""
|
||||
return self.rpc_client.resource_delete(self.cnxt, self.data)
|
||||
return self.rpc_client.resource_delete(self.cnxt, self.id)
|
||||
|
||||
|
||||
class UserAction(Action):
|
||||
|
|
|
@ -140,9 +140,9 @@ class EngineClient(object):
|
|||
return self.call(ctxt, self.make_msg('resource_update',
|
||||
resource=resource))
|
||||
|
||||
def resource_delete(self, ctxt, resource):
|
||||
def resource_delete(self, ctxt, resource_id):
|
||||
return self.call(ctxt, self.make_msg('resource_delete',
|
||||
resource=resource))
|
||||
resource_id=resource_id))
|
||||
|
||||
def event_list(self, ctxt, user_id=None, limit=None, marker=None,
|
||||
sort_keys=None, sort_dir=None, filters=None,
|
||||
|
|
Loading…
Reference in New Issue