Fix the issue when generating events
Closes-bug: #1553856 Change-Id: I78c2dd79717970f624e3a4d3bd343c54aba2df2b
This commit is contained in:
parent
0f3444d506
commit
fbe61bc996
|
@ -289,7 +289,7 @@ def resource_get_all(context, user_id=None, show_deleted=False,
|
|||
}
|
||||
keys = _get_sort_keys(sort_keys, sort_key_map)
|
||||
query = db_filters.exact_filter(query, models.Resource, filters)
|
||||
return _paginate_query(context, query, models.Node,
|
||||
return _paginate_query(context, query, models.Resource,
|
||||
limit=limit, marker=marker,
|
||||
sort_keys=keys, sort_dir=sort_dir,
|
||||
default_sort_keys=['created_at']).all()
|
||||
|
@ -368,8 +368,8 @@ def event_get_all(context, user_id=None, limit=None, marker=None,
|
|||
consts.EVENT_USER_ID: models.Event.user_id.key,
|
||||
}
|
||||
keys = _get_sort_keys(sort_keys, sort_key_map)
|
||||
query = db_filters.exact_filter(query, models.Resource, filters)
|
||||
return _paginate_query(context, query, models.Node,
|
||||
query = db_filters.exact_filter(query, models.Event, filters)
|
||||
return _paginate_query(context, query, models.Event,
|
||||
limit=limit, marker=marker,
|
||||
sort_keys=keys, sort_dir=sort_dir,
|
||||
default_sort_keys=['timestamp']).all()
|
||||
|
|
|
@ -104,6 +104,7 @@ def upgrade(migrate_engine):
|
|||
sqlalchemy.Column('resource_type', sqlalchemy.String(36)),
|
||||
sqlalchemy.Column('action', sqlalchemy.String(36)),
|
||||
sqlalchemy.Column('value', sqlalchemy.Float),
|
||||
sqlalchemy.Column('deleted_at', sqlalchemy.DateTime),
|
||||
mysql_engine='InnoDB',
|
||||
mysql_charset='utf8'
|
||||
)
|
||||
|
|
|
@ -17,7 +17,7 @@ from bilean.common import exception
|
|||
from bilean.common.i18n import _
|
||||
from bilean.common import utils
|
||||
from bilean.db import api as db_api
|
||||
from bilean.engine import resource as bilean_resources
|
||||
from bilean.engine import resource as resource_mod
|
||||
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import timeutils
|
||||
|
@ -82,7 +82,6 @@ class Event(object):
|
|||
def store(self, context):
|
||||
'''Store the event into database and return its ID.'''
|
||||
values = {
|
||||
'id': self.id,
|
||||
'user_id': self.user_id,
|
||||
'action': self.action,
|
||||
'resource_type': self.resource_type,
|
||||
|
@ -124,21 +123,24 @@ def record(context, user_id, action=None, seconds=0, value=0):
|
|||
"""
|
||||
try:
|
||||
if action == 'charge':
|
||||
resources = bilean_resources.resource_get_all(
|
||||
context, user_id=user_id)
|
||||
resources = resource_mod.Resource.load_all(
|
||||
context, user_id=user_id, project_safe=False)
|
||||
for resource in resources:
|
||||
usage = resource['rate'] * seconds
|
||||
usage = resource.rate * seconds
|
||||
event = Event(timeutils.utcnow(),
|
||||
user_id=user_id,
|
||||
action=action,
|
||||
resource_type=resource['resource_type'],
|
||||
resource_type=resource.resource_type,
|
||||
value=usage)
|
||||
event.store(context)
|
||||
else:
|
||||
elif action == 'recharge':
|
||||
event = Event(timeutils.utcnow(),
|
||||
user_id=user_id,
|
||||
action=action,
|
||||
value=value)
|
||||
event.store(context)
|
||||
else:
|
||||
msg = _("Unsupported event action '%s'.") % action
|
||||
raise exception.BileanException(msg=msg)
|
||||
except Exception as exc:
|
||||
LOG.error(_("Error generate events: %s") % six.text_type(exc))
|
||||
|
|
|
@ -289,10 +289,10 @@ class EngineService(service.Service):
|
|||
# Update resource with rule_id and rate
|
||||
resource.rule_id = rule.id
|
||||
resource.rate = rule.get_price(resource)
|
||||
resource.store(self.context)
|
||||
|
||||
# Update user with resource
|
||||
user.update_with_resource(self.context, resource)
|
||||
resource.store(self.context)
|
||||
|
||||
# As the rate of user has changed, the billing job for the user
|
||||
# should change too.
|
||||
|
|
Loading…
Reference in New Issue