diff --git a/gnocchi/tests/test_utils.py b/gnocchi/tests/test_utils.py index d8319e3df..cbae64566 100644 --- a/gnocchi/tests/test_utils.py +++ b/gnocchi/tests/test_utils.py @@ -13,6 +13,7 @@ # under the License. import datetime import os +import uuid import iso8601 import mock @@ -57,3 +58,21 @@ class TestUtils(tests_base.TestCase): utils.to_datetime(utils.to_timestamp(1425652440.4)), datetime.datetime(2015, 3, 6, 14, 34, 0, 400000, tzinfo=iso8601.iso8601.UTC)) + + +class TestResourceUUID(tests_base.TestCase): + def test_conversion(self): + self.assertEqual( + uuid.UUID('ba571521-1de6-5aff-b183-1535fd6eb5d0'), + utils.ResourceUUID( + uuid.UUID('ba571521-1de6-5aff-b183-1535fd6eb5d0'), + "bar")) + self.assertEqual( + uuid.UUID('ba571521-1de6-5aff-b183-1535fd6eb5d0'), + utils.ResourceUUID("foo", "bar")) + self.assertEqual( + uuid.UUID('4efb21f6-3d19-5fe3-910b-be8f0f727846'), + utils.ResourceUUID("foo", None)) + self.assertEqual( + uuid.UUID('853e5c64-f45e-58b2-999c-96df856fbe3d'), + utils.ResourceUUID("foo", "")) diff --git a/gnocchi/utils.py b/gnocchi/utils.py index fdde916a2..45c4ccc9a 100644 --- a/gnocchi/utils.py +++ b/gnocchi/utils.py @@ -48,6 +48,8 @@ def ResourceUUID(value, creator): return uuid.UUID(value) except ValueError: if len(value) <= 255: + if creator is None: + creator = "\x00" # value/creator must be str (unicode) in Python 3 and str (bytes) # in Python 2. It's not logical, I know. if six.PY2: