From 9c4aefb8ea88fd5505602c95f4762fdeb3aea183 Mon Sep 17 00:00:00 2001 From: Sean McGinnis Date: Thu, 18 Jan 2018 16:52:03 -0600 Subject: [PATCH] Handle TZ change in iso8601 >=0.1.12 The iso8601 lib introduced a change such that if running on python 3.2 or later it internally uses the python timezone information instead of its own implementation. This does not change direct date handling, but when converting this value there is a slight difference where now python 2.x will show UTC times as "UTC", but on python 3 they will end up with "UTC+00:00". The to_primitive call for DateTime fields was doing an exact match on "UTC" to determine whether to include "Z" in the resulting string. This updates that handling to recognize either of the new values. Change-Id: I71b58e8fd8fee8a57ee275ff3e0b77f165eca836 Closes-bug: #1744160 --- oslo_versionedobjects/_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/oslo_versionedobjects/_utils.py b/oslo_versionedobjects/_utils.py index 41eec0c3..fed228b8 100644 --- a/oslo_versionedobjects/_utils.py +++ b/oslo_versionedobjects/_utils.py @@ -25,5 +25,6 @@ def isotime(at): """Stringify time in ISO 8601 format.""" st = at.strftime(_ISO8601_TIME_FORMAT) tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC' - st += ('Z' if tz == 'UTC' else tz) + # Need to handle either iso8601 or python UTC format + st += ('Z' if tz in ['UTC', 'UTC+00:00'] else tz) return st