Fix a microsecond format of isoformat()
isoformat() omits the microsecond from the format when the microsecond is 0. Therefore, use strftime('%Y-%m-%dT%H:%M:%S.%f') instead. Related Change-Id: Id6e8645362fe70b1427d45d5b44048fe47aba0f7 Closes-Bug: #1478418 Change-Id: I27059fa3476ceb51033534cc60d40047d88390d7
This commit is contained in:
parent
e95bc6f5be
commit
e9322c8f65
|
@ -80,7 +80,7 @@ class PluginReportStateAPI(object):
|
||||||
agent_state['uuid'] = uuidutils.generate_uuid()
|
agent_state['uuid'] = uuidutils.generate_uuid()
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'agent_state': {'agent_state': agent_state},
|
'agent_state': {'agent_state': agent_state},
|
||||||
'time': datetime.utcnow().isoformat(),
|
'time': datetime.utcnow().strftime(constants.ISO8601_TIME_FORMAT),
|
||||||
}
|
}
|
||||||
method = cctxt.call if use_call else cctxt.cast
|
method = cctxt.call if use_call else cctxt.cast
|
||||||
return method(context, 'report_state', **kwargs)
|
return method(context, 'report_state', **kwargs)
|
||||||
|
|
|
@ -183,3 +183,6 @@ RPC_NAMESPACE_STATE = None
|
||||||
DEFAULT_NETWORK_MTU = 0
|
DEFAULT_NETWORK_MTU = 0
|
||||||
|
|
||||||
ROUTER_MARK_MASK = "0xffff"
|
ROUTER_MARK_MASK = "0xffff"
|
||||||
|
|
||||||
|
# Time format
|
||||||
|
ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S.%f'
|
||||||
|
|
|
@ -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 datetime
|
||||||
import mock
|
import mock
|
||||||
from oslo_context import context as oslo_context
|
from oslo_context import context as oslo_context
|
||||||
import oslo_messaging
|
import oslo_messaging
|
||||||
|
@ -101,6 +102,26 @@ class AgentPluginReportState(base.BaseTestCase):
|
||||||
{'agent_state': expected_agent_state})
|
{'agent_state': expected_agent_state})
|
||||||
self.assertIsInstance(mock_cast.call_args[1]['time'], str)
|
self.assertIsInstance(mock_cast.call_args[1]['time'], str)
|
||||||
|
|
||||||
|
def test_plugin_report_state_microsecond_is_0(self):
|
||||||
|
topic = 'test'
|
||||||
|
expected_time = datetime.datetime(2015, 7, 27, 15, 33, 30, 0)
|
||||||
|
expected_time_str = '2015-07-27T15:33:30.000000'
|
||||||
|
expected_agent_state = {'agent': 'test'}
|
||||||
|
with mock.patch('neutron.agent.rpc.datetime') as mock_datetime:
|
||||||
|
reportStateAPI = rpc.PluginReportStateAPI(topic)
|
||||||
|
mock_datetime.utcnow.return_value = expected_time
|
||||||
|
with mock.patch.object(reportStateAPI.client, 'call'), \
|
||||||
|
mock.patch.object(reportStateAPI.client, 'cast'
|
||||||
|
) as mock_cast, \
|
||||||
|
mock.patch.object(reportStateAPI.client, 'prepare'
|
||||||
|
) as mock_prepare:
|
||||||
|
mock_prepare.return_value = reportStateAPI.client
|
||||||
|
ctxt = oslo_context.RequestContext('fake_user',
|
||||||
|
'fake_project')
|
||||||
|
reportStateAPI.report_state(ctxt, expected_agent_state)
|
||||||
|
self.assertEqual(expected_time_str,
|
||||||
|
mock_cast.call_args[1]['time'])
|
||||||
|
|
||||||
|
|
||||||
class AgentRPCMethods(base.BaseTestCase):
|
class AgentRPCMethods(base.BaseTestCase):
|
||||||
|
|
||||||
|
|
|
@ -106,12 +106,14 @@ class AgentDBTestMixIn(object):
|
||||||
lbaas_hostb = copy.deepcopy(lbaas_hosta)
|
lbaas_hostb = copy.deepcopy(lbaas_hosta)
|
||||||
lbaas_hostb['host'] = LBAAS_HOSTB
|
lbaas_hostb['host'] = LBAAS_HOSTB
|
||||||
callback = agents_db.AgentExtRpcCallback()
|
callback = agents_db.AgentExtRpcCallback()
|
||||||
callback.report_state(self.adminContext,
|
callback.report_state(
|
||||||
agent_state={'agent_state': lbaas_hosta},
|
self.adminContext,
|
||||||
time=datetime.utcnow().isoformat())
|
agent_state={'agent_state': lbaas_hosta},
|
||||||
callback.report_state(self.adminContext,
|
time=datetime.utcnow().strftime(constants.ISO8601_TIME_FORMAT))
|
||||||
agent_state={'agent_state': lbaas_hostb},
|
callback.report_state(
|
||||||
time=datetime.utcnow().isoformat())
|
self.adminContext,
|
||||||
|
agent_state={'agent_state': lbaas_hostb},
|
||||||
|
time=datetime.utcnow().strftime(constants.ISO8601_TIME_FORMAT))
|
||||||
res += [lbaas_hosta, lbaas_hostb]
|
res += [lbaas_hosta, lbaas_hostb]
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
Loading…
Reference in New Issue