Convert bandwidth_usage related timestamp to UTC native datetime
In sqlalchemy DB API, convert timestamp string related to bandwidth_usage operations into UTC native datetime. Closes-Bug: #1442795 Change-Id: Icbf9ff73b867a5cc3bb9f5eb6a13ad954d7c44f6
This commit is contained in:
parent
9d77ab1290
commit
35c0fefd6a
|
@ -5084,9 +5084,11 @@ def agent_build_update(context, agent_build_id, values):
|
|||
|
||||
@require_context
|
||||
def bw_usage_get(context, uuid, start_period, mac, use_slave=False):
|
||||
values = {'start_period': start_period}
|
||||
values = convert_objects_related_datetimes(values, 'start_period')
|
||||
return model_query(context, models.BandwidthUsage, read_deleted="yes",
|
||||
use_slave=use_slave).\
|
||||
filter_by(start_period=start_period).\
|
||||
filter_by(start_period=values['start_period']).\
|
||||
filter_by(uuid=uuid).\
|
||||
filter_by(mac=mac).\
|
||||
first()
|
||||
|
@ -5094,11 +5096,13 @@ def bw_usage_get(context, uuid, start_period, mac, use_slave=False):
|
|||
|
||||
@require_context
|
||||
def bw_usage_get_by_uuids(context, uuids, start_period, use_slave=False):
|
||||
values = {'start_period': start_period}
|
||||
values = convert_objects_related_datetimes(values, 'start_period')
|
||||
return (
|
||||
model_query(context, models.BandwidthUsage, read_deleted="yes",
|
||||
use_slave=use_slave).
|
||||
filter(models.BandwidthUsage.uuid.in_(uuids)).
|
||||
filter_by(start_period=start_period).
|
||||
filter_by(start_period=values['start_period']).
|
||||
all()
|
||||
)
|
||||
|
||||
|
@ -5117,14 +5121,18 @@ def bw_usage_update(context, uuid, mac, start_period, bw_in, bw_out,
|
|||
# creating records. Optimize accordingly, trying to update existing
|
||||
# records. Fall back to creation when no rows are updated.
|
||||
with session.begin():
|
||||
values = {'last_refreshed': last_refreshed,
|
||||
ts_values = {'last_refreshed': last_refreshed,
|
||||
'start_period': start_period}
|
||||
ts_keys = ('start_period', 'last_refreshed')
|
||||
ts_values = convert_objects_related_datetimes(ts_values, *ts_keys)
|
||||
values = {'last_refreshed': ts_values['last_refreshed'],
|
||||
'last_ctr_in': last_ctr_in,
|
||||
'last_ctr_out': last_ctr_out,
|
||||
'bw_in': bw_in,
|
||||
'bw_out': bw_out}
|
||||
rows = model_query(context, models.BandwidthUsage,
|
||||
session=session, read_deleted="yes").\
|
||||
filter_by(start_period=start_period).\
|
||||
filter_by(start_period=ts_values['start_period']).\
|
||||
filter_by(uuid=uuid).\
|
||||
filter_by(mac=mac).\
|
||||
update(values, synchronize_session=False)
|
||||
|
@ -5132,10 +5140,10 @@ def bw_usage_update(context, uuid, mac, start_period, bw_in, bw_out,
|
|||
return
|
||||
|
||||
bwusage = models.BandwidthUsage()
|
||||
bwusage.start_period = start_period
|
||||
bwusage.start_period = ts_values['start_period']
|
||||
bwusage.uuid = uuid
|
||||
bwusage.mac = mac
|
||||
bwusage.last_refreshed = last_refreshed
|
||||
bwusage.last_refreshed = ts_values['last_refreshed']
|
||||
bwusage.bw_in = bw_in
|
||||
bwusage.bw_out = bw_out
|
||||
bwusage.last_ctr_in = last_ctr_in
|
||||
|
|
|
@ -7314,7 +7314,9 @@ class BwUsageTestCase(test.TestCase, ModelsObjectComparatorMixin):
|
|||
def test_bw_usage_get_by_uuids(self):
|
||||
now = timeutils.utcnow()
|
||||
start_period = now - datetime.timedelta(seconds=10)
|
||||
start_period_str = timeutils.strtime(start_period)
|
||||
uuid3_refreshed = now - datetime.timedelta(seconds=5)
|
||||
uuid3_refreshed_str = timeutils.strtime(uuid3_refreshed)
|
||||
|
||||
expected_bw_usages = {
|
||||
'fake_uuid1': {'uuid': 'fake_uuid1',
|
||||
|
@ -7344,29 +7346,29 @@ class BwUsageTestCase(test.TestCase, ModelsObjectComparatorMixin):
|
|||
}
|
||||
|
||||
bw_usages = db.bw_usage_get_by_uuids(self.ctxt,
|
||||
['fake_uuid1', 'fake_uuid2'], start_period)
|
||||
['fake_uuid1', 'fake_uuid2'], start_period_str)
|
||||
# No matches
|
||||
self.assertEqual(len(bw_usages), 0)
|
||||
|
||||
# Add 3 entries
|
||||
db.bw_usage_update(self.ctxt, 'fake_uuid1',
|
||||
'fake_mac1', start_period,
|
||||
'fake_mac1', start_period_str,
|
||||
100, 200, 12345, 67890)
|
||||
db.bw_usage_update(self.ctxt, 'fake_uuid2',
|
||||
'fake_mac2', start_period,
|
||||
'fake_mac2', start_period_str,
|
||||
100, 200, 42, 42)
|
||||
# Test explicit refreshed time
|
||||
db.bw_usage_update(self.ctxt, 'fake_uuid3',
|
||||
'fake_mac3', start_period,
|
||||
'fake_mac3', start_period_str,
|
||||
400, 500, 32345, 87890,
|
||||
last_refreshed=uuid3_refreshed)
|
||||
last_refreshed=uuid3_refreshed_str)
|
||||
# Update 2nd entry
|
||||
db.bw_usage_update(self.ctxt, 'fake_uuid2',
|
||||
'fake_mac2', start_period,
|
||||
'fake_mac2', start_period_str,
|
||||
200, 300, 22345, 77890)
|
||||
|
||||
bw_usages = db.bw_usage_get_by_uuids(self.ctxt,
|
||||
['fake_uuid1', 'fake_uuid2', 'fake_uuid3'], start_period)
|
||||
['fake_uuid1', 'fake_uuid2', 'fake_uuid3'], start_period_str)
|
||||
self.assertEqual(len(bw_usages), 3)
|
||||
for usage in bw_usages:
|
||||
self._assertEqualObjects(expected_bw_usages[usage['uuid']], usage,
|
||||
|
@ -7375,6 +7377,7 @@ class BwUsageTestCase(test.TestCase, ModelsObjectComparatorMixin):
|
|||
def test_bw_usage_get(self):
|
||||
now = timeutils.utcnow()
|
||||
start_period = now - datetime.timedelta(seconds=10)
|
||||
start_period_str = timeutils.strtime(start_period)
|
||||
|
||||
expected_bw_usage = {'uuid': 'fake_uuid1',
|
||||
'mac': 'fake_mac1',
|
||||
|
@ -7385,17 +7388,17 @@ class BwUsageTestCase(test.TestCase, ModelsObjectComparatorMixin):
|
|||
'last_ctr_out': 67890,
|
||||
'last_refreshed': now}
|
||||
|
||||
bw_usage = db.bw_usage_get(self.ctxt, 'fake_uuid1', start_period,
|
||||
bw_usage = db.bw_usage_get(self.ctxt, 'fake_uuid1', start_period_str,
|
||||
'fake_mac1')
|
||||
self.assertIsNone(bw_usage)
|
||||
|
||||
db.bw_usage_update(self.ctxt, 'fake_uuid1',
|
||||
'fake_mac1', start_period,
|
||||
'fake_mac1', start_period_str,
|
||||
100, 200, 12345, 67890)
|
||||
|
||||
bw_usage = db.bw_usage_get(self.ctxt, 'fake_uuid1', start_period,
|
||||
bw_usage = db.bw_usage_get(self.ctxt, 'fake_uuid1', start_period_str,
|
||||
'fake_mac1')
|
||||
self._assertEqualObjects(bw_usage, expected_bw_usage,
|
||||
self._assertEqualObjects(expected_bw_usage, bw_usage,
|
||||
ignored_keys=self._ignored_keys)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue