]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Port openstack-common/uuidutils to Cinder
authorZhiteng Huang <zhiteng.huang@intel.com>
Mon, 5 Nov 2012 17:46:09 +0000 (01:46 +0800)
committerZhiteng Huang <zhiteng.huang@intel.com>
Wed, 7 Nov 2012 07:52:38 +0000 (15:52 +0800)
openstack-common has a new uuidutils to handle is_uuid_like(),
port it to Cinder.

Change-Id: I0ccc6166854193137af6a3210d3c465dd38fd955

cinder/api/openstack/volume/volumes.py
cinder/db/sqlalchemy/api.py
cinder/openstack/common/uuidutils.py [new file with mode: 0644]
cinder/tests/test_utils.py
cinder/utils.py
cinder/volume/manager.py
openstack-common.conf

index a8f1091d30bb847ad9501ae230dd736569b51979..f283fd8fa60bf68301346680c8b2a98ab71d1f68 100644 (file)
@@ -25,7 +25,7 @@ from cinder.api.openstack import xmlutil
 from cinder import exception
 from cinder import flags
 from cinder.openstack.common import log as logging
-from cinder import utils
+from cinder.openstack.common import uuidutils
 from cinder import volume
 from cinder.volume import volume_types
 
@@ -269,7 +269,7 @@ class VolumeController(wsgi.Controller):
             msg = _("Invalid imageRef provided.")
             raise exc.HTTPBadRequest(explanation=msg)
 
-        if not utils.is_uuid_like(image_uuid):
+        if not uuidutils.is_uuid_like(image_uuid):
             msg = _("Invalid imageRef provided.")
             raise exc.HTTPBadRequest(explanation=msg)
 
index 4d706fa3023cc274228be2ce9ed4f89441e4c978..f490978f5f34891a05d303c88a289e7c33e8ba5b 100644 (file)
@@ -31,6 +31,7 @@ from cinder.openstack.common import log as logging
 from cinder.db.sqlalchemy import models
 from cinder.db.sqlalchemy.session import get_session
 from cinder.openstack.common import timeutils
+from cinder.openstack.common import uuidutils
 from sqlalchemy.exc import IntegrityError
 from sqlalchemy import or_
 from sqlalchemy.orm import joinedload
@@ -893,7 +894,7 @@ def volume_allocate_iscsi_target(context, volume_id, host):
 
 @require_admin_context
 def volume_attached(context, volume_id, instance_uuid, mountpoint):
-    if not utils.is_uuid_like(instance_uuid):
+    if not uuidutils.is_uuid_like(instance_uuid):
         raise exception.InvalidUUID(instance_uuid)
 
     session = get_session()
diff --git a/cinder/openstack/common/uuidutils.py b/cinder/openstack/common/uuidutils.py
new file mode 100644 (file)
index 0000000..51042a7
--- /dev/null
@@ -0,0 +1,35 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# 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 is_uuid_like(val):
+    """Returns validation of a value as a UUID.
+
+    For our purposes, a UUID is a canonical form string:
+    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
+
+    """
+    try:
+        return str(uuid.UUID(val)) == val
+    except (TypeError, ValueError, AttributeError):
+        return False
index c1298f1bb3dcd9a890613932ef0dbaf58b5e11ef..4e542e533f45b1ce41d9bd1a3a58d8cfcf2cbe8b 100644 (file)
@@ -29,6 +29,7 @@ import cinder
 from cinder import exception
 from cinder import flags
 from cinder.openstack.common import timeutils
+from cinder.openstack.common import uuidutils
 from cinder import test
 from cinder import utils
 
@@ -436,29 +437,9 @@ class GenericUtilsTestCase(test.TestCase):
         self.assertEquals(h1, h2)
 
 
-class IsUUIDLikeTestCase(test.TestCase):
-    def assertUUIDLike(self, val, expected):
-        result = utils.is_uuid_like(val)
-        self.assertEqual(result, expected)
-
-    def test_good_uuid(self):
-        val = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
-        self.assertUUIDLike(val, True)
-
-    def test_integer_passed(self):
-        val = 1
-        self.assertUUIDLike(val, False)
-
-    def test_non_uuid_string_passed(self):
-        val = 'foo-fooo'
-        self.assertUUIDLike(val, False)
-
-    def test_non_uuid_string_passed2(self):
-        val = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
-        self.assertUUIDLike(val, False)
-
+class GenUUIDTestCase(test.TestCase):
     def test_gen_valid_uuid(self):
-        self.assertUUIDLike(str(utils.gen_uuid()), True)
+        self.assertTrue(uuidutils.is_uuid_like(str(utils.gen_uuid())))
 
 
 class MonkeyPatchTestCase(test.TestCase):
index e8035ea58deee5269aa49a9e04b0595b87655499..31c9e4c3443538c0be81ce6dc6f83aa547f83916 100644 (file)
@@ -758,18 +758,6 @@ def gen_uuid():
     return uuid.uuid4()
 
 
-def is_uuid_like(val):
-    """For our purposes, a UUID is a string in canonical form:
-
-        aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
-    """
-    try:
-        uuid.UUID(val)
-        return True
-    except (TypeError, ValueError, AttributeError):
-        return False
-
-
 def bool_from_str(val):
     """Convert a string representation of a bool into a bool value"""
 
index 915e5cf016826a6ff247125b50f1f8bc4e0c0cdb..38ba25c742e4f4771ec01bb9f55d04c2376240b0 100644 (file)
@@ -47,8 +47,8 @@ from cinder.openstack.common import cfg
 from cinder.openstack.common import excutils
 from cinder.openstack.common import importutils
 from cinder.openstack.common import timeutils
+from cinder.openstack.common import uuidutils
 from cinder import quota
-from cinder import utils
 from cinder.volume import utils as volume_utils
 
 
@@ -277,7 +277,7 @@ class VolumeManager(manager.SchedulerDependentManager):
         """Updates db to show volume is attached"""
         # TODO(vish): refactor this into a more general "reserve"
         # TODO(sleepsonthefloor): Is this 'elevated' appropriate?
-        if not utils.is_uuid_like(instance_uuid):
+        if not uuidutils.is_uuid_like(instance_uuid):
             raise exception.InvalidUUID(instance_uuid)
 
         try:
index e31fb60cbde68c1efd744f4759fe8c444c8da766..709dd70e6dc2d263a2c77de41336407c16532850 100644 (file)
@@ -1,7 +1,7 @@
 [DEFAULT]
 
 # The list of modules to copy from openstack-common
-modules=cfg,exception,excutils,gettextutils,importutils,iniparser,jsonutils,local,rpc,timeutils,log,setup,notifier,context,network_utils,policy
+modules=cfg,exception,excutils,gettextutils,importutils,iniparser,jsonutils,local,rpc,timeutils,log,setup,notifier,context,network_utils,policy,uuidutils
 
 # The base module to hold the copy of openstack.common
 base=cinder