summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-11-18 00:05:58 +0000
committerGerrit Code Review <review@openstack.org>2014-11-18 00:05:58 +0000
commit73b965ad12afcbaa13c5d4ea91bbef9b270849de (patch)
treefd9320aa3e9824b61580e63c1d613534249dda03
parentfb28c0250973b4bedadb0ac8e048906e8ca7775e (diff)
parent45b716614dd0d1315529891bdf3177be29c93d6a (diff)
downloadoslo-utils-73b965ad12afcbaa13c5d4ea91bbef9b270849de.tar.gz
Merge "Add uuidutils to oslo.utils"
-rw-r--r--oslo/utils/uuidutils.py44
-rw-r--r--tests/test_uuidutils.py51
2 files changed, 95 insertions, 0 deletions
diff --git a/oslo/utils/uuidutils.py b/oslo/utils/uuidutils.py
new file mode 100644
index 0000000..52c1ded
--- /dev/null
+++ b/oslo/utils/uuidutils.py
@@ -0,0 +1,44 @@
+# Copyright (c) 2012 Intel Corporation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+UUID related utilities and helper functions.
+"""
+
+import uuid
+
+
+def generate_uuid():
+ return str(uuid.uuid4())
+
+
+def _format_uuid_string(string):
+ return (string.replace('urn:', '')
+ .replace('uuid:', '')
+ .strip('{}')
+ .replace('-', ''))
+
+
+def is_uuid_like(val):
+ """Returns validation of a value as a UUID.
+
+ :param val: Value to verify
+ :type val: string
+ :returns: bool
+ """
+ try:
+ return str(uuid.UUID(val)).replace('-', '') == _format_uuid_string(val)
+ except (TypeError, ValueError, AttributeError):
+ return False
diff --git a/tests/test_uuidutils.py b/tests/test_uuidutils.py
new file mode 100644
index 0000000..14512e0
--- /dev/null
+++ b/tests/test_uuidutils.py
@@ -0,0 +1,51 @@
+# Copyright (c) 2012 Intel Corporation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import uuid
+
+from oslotest import base as test_base
+
+from oslo.utils import uuidutils
+
+
+class UUIDUtilsTest(test_base.BaseTestCase):
+
+ def test_generate_uuid(self):
+ uuid_string = uuidutils.generate_uuid()
+ self.assertTrue(isinstance(uuid_string, str))
+ self.assertEqual(len(uuid_string), 36)
+ # make sure there are 4 dashes
+ self.assertEqual(len(uuid_string.replace('-', '')), 32)
+
+ def test_is_uuid_like(self):
+ self.assertTrue(uuidutils.is_uuid_like(str(uuid.uuid4())))
+ self.assertTrue(uuidutils.is_uuid_like(
+ '{12345678-1234-5678-1234-567812345678}'))
+ self.assertTrue(uuidutils.is_uuid_like(
+ '12345678123456781234567812345678'))
+ self.assertTrue(uuidutils.is_uuid_like(
+ 'urn:uuid:12345678-1234-5678-1234-567812345678'))
+ self.assertTrue(uuidutils.is_uuid_like(
+ 'urn:bbbaaaaa-aaaa-aaaa-aabb-bbbbbbbbbbbb'))
+ self.assertTrue(uuidutils.is_uuid_like(
+ 'uuid:bbbaaaaa-aaaa-aaaa-aabb-bbbbbbbbbbbb'))
+ self.assertTrue(uuidutils.is_uuid_like(
+ '{}---bbb---aaa--aaa--aaa-----aaa---aaa--bbb-bbb---bbb-bbb-bb-{}'))
+
+ def test_id_is_uuid_like(self):
+ self.assertFalse(uuidutils.is_uuid_like(1234567))
+
+ def test_name_is_uuid_like(self):
+ self.assertFalse(uuidutils.is_uuid_like('zhongyueluo'))