diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-11-18 00:05:58 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-11-18 00:05:58 +0000 |
commit | 73b965ad12afcbaa13c5d4ea91bbef9b270849de (patch) | |
tree | fd9320aa3e9824b61580e63c1d613534249dda03 | |
parent | fb28c0250973b4bedadb0ac8e048906e8ca7775e (diff) | |
parent | 45b716614dd0d1315529891bdf3177be29c93d6a (diff) | |
download | oslo-utils-73b965ad12afcbaa13c5d4ea91bbef9b270849de.tar.gz |
Merge "Add uuidutils to oslo.utils"
-rw-r--r-- | oslo/utils/uuidutils.py | 44 | ||||
-rw-r--r-- | tests/test_uuidutils.py | 51 |
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')) |