Reviewed: https://review.openstack.org/365684 Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=3756bc510526531e3442da6d825cc90f44faa355 Submitter: Jenkins Branch: master
commit 3756bc510526531e3442da6d825cc90f44faa355 Author: Kevin Benton <[email protected]> Date: Mon Sep 5 08:26:01 2016 -0600 Convert OVO fields to primitives for to_dict() to_dict() is used for conversions of OVO objects into regular dictionaries to be used as plugin return values to the API layer, etc. It provides the equivalent of make_<resource>_dict that we use now (without the extension processing). The values in these dictionaries should be ready for representation in the API. The issue was that the OVO to_dict() implementation was placing complex types right into the dictionary which would mean that the API would serialize them just by calling str() on them (as part of json encoding). This ignored the 'to_primitive' method defined on the OVO type that defines how a field should be converted. Therefore, when it came to timestamps to_dict() was placing native datetime objects into the dictionary which would convert to microsecond resolution, violating the expected format of the OVO DateTime type. This patch fixes the issue by calling 'to_primitive' on each non-synthetic field in the to_dict() method to ensure we match the expected format of the type before we send it out the API. Closes-Bug: #1620254 Change-Id: Ic0be54b1d4b23119e1458d4532e2f70bff0ff9f6 ** Changed in: neutron Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1620254 Title: OVO to_dict() is returning timestamps with microseconds Status in neutron: Fix Released Bug description: to_dict() doesn't seem to be calling the stringify or to_primitive method on the objects because microseconds are being leaked out when trying to expose the created_at/updated_at fields via the API. Traceback (most recent call last): File "/opt/stack/new/neutron/neutron/tests/tempest/api/test_qos.py", line 338, in test_get_policy_that_is_shared self.assertEqual(obtained_policy, policy) File "/usr/local/lib/python2.7/dist-packages/testtools/testcase.py", line 411, in assertEqual self.assertThat(observed, matcher, message) File "/usr/local/lib/python2.7/dist-packages/testtools/testcase.py", line 498, in assertThat raise mismatch_error testtools.matchers._impl.MismatchError: !=: reference = {u'created_at': u'2016-09-03 01:08:00', u'description': u'shared policy', u'id': u'b24af3be-d19d-4543-8b12-25ac6d752abd', u'name': u'test-policy-shared', u'rules': [], u'shared': True, u'tenant_id': u'a88290171ee648dfa97b8e164b9ede31', u'updated_at': u'2016-09-03 01:08:00'} actual = {u'created_at': u'2016-09-03 01:08:00.106856', u'description': u'shared policy', u'id': u'b24af3be-d19d-4543-8b12-25ac6d752abd', u'name': u'test-policy-shared', u'rules': [], u'shared': True, u'tenant_id': u'a88290171ee648dfa97b8e164b9ede31', u'updated_at': u'2016-09-03 01:08:00.106856'} To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1620254/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

