Port uuidutils to Glance
Recently openstack.common had a new module to handle uuid, this patch port that into Glance. Change-Id: I9a25de546f2519c327f9ae4645f9fe33a91fced8
This commit is contained in:
parent
6b2300fb0c
commit
231de615b2
|
@ -243,14 +243,6 @@ def generate_uuid():
|
||||||
return str(uuid.uuid4())
|
return str(uuid.uuid4())
|
||||||
|
|
||||||
|
|
||||||
def is_uuid_like(value):
|
|
||||||
try:
|
|
||||||
uuid.UUID(value)
|
|
||||||
return True
|
|
||||||
except Exception:
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def safe_mkdirs(path):
|
def safe_mkdirs(path):
|
||||||
try:
|
try:
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
|
|
|
@ -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
|
|
@ -28,6 +28,7 @@ import glance.db
|
||||||
from glance.openstack.common import cfg
|
from glance.openstack.common import cfg
|
||||||
import glance.openstack.common.log as logging
|
import glance.openstack.common.log as logging
|
||||||
from glance.openstack.common import timeutils
|
from glance.openstack.common import timeutils
|
||||||
|
from glance.openstack.common import uuidutils
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
@ -213,7 +214,7 @@ class Controller(object):
|
||||||
"""Parse a marker query param into something usable."""
|
"""Parse a marker query param into something usable."""
|
||||||
marker = req.params.get('marker', None)
|
marker = req.params.get('marker', None)
|
||||||
|
|
||||||
if marker and not utils.is_uuid_like(marker):
|
if marker and not uuidutils.is_uuid_like(marker):
|
||||||
msg = _('Invalid marker format')
|
msg = _('Invalid marker format')
|
||||||
raise exc.HTTPBadRequest(explanation=msg)
|
raise exc.HTTPBadRequest(explanation=msg)
|
||||||
|
|
||||||
|
@ -343,7 +344,7 @@ class Controller(object):
|
||||||
image_data['owner'] = req.context.owner
|
image_data['owner'] = req.context.owner
|
||||||
|
|
||||||
image_id = image_data.get('id')
|
image_id = image_data.get('id')
|
||||||
if image_id and not utils.is_uuid_like(image_id):
|
if image_id and not uuidutils.is_uuid_like(image_id):
|
||||||
msg = _("Rejecting image creation request for invalid image "
|
msg = _("Rejecting image creation request for invalid image "
|
||||||
"id '%(bad_id)s'")
|
"id '%(bad_id)s'")
|
||||||
LOG.info(msg % {'bad_id': image_id})
|
LOG.info(msg % {'bad_id': image_id})
|
||||||
|
|
|
@ -41,14 +41,6 @@ class TestUtils(test_utils.BaseTestCase):
|
||||||
unique = set(uuids)
|
unique = set(uuids)
|
||||||
self.assertEqual(len(uuids), len(list(unique)))
|
self.assertEqual(len(uuids), len(list(unique)))
|
||||||
|
|
||||||
def test_is_uuid_like_success(self):
|
|
||||||
fixture = 'b694bf02-6b01-4905-a50e-fcf7bce7e4d2'
|
|
||||||
self.assertTrue(utils.is_uuid_like(fixture))
|
|
||||||
|
|
||||||
def test_is_uuid_like_fails(self):
|
|
||||||
fixture = 'pants'
|
|
||||||
self.assertFalse(utils.is_uuid_like(fixture))
|
|
||||||
|
|
||||||
def test_cooperative_reader(self):
|
def test_cooperative_reader(self):
|
||||||
"""Ensure cooperative reader class accesses all bytes of file"""
|
"""Ensure cooperative reader class accesses all bytes of file"""
|
||||||
BYTES = 1024
|
BYTES = 1024
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
|
|
||||||
# The list of modules to copy from openstack-common
|
# The list of modules to copy from openstack-common
|
||||||
modules=cfg,gettextutils,importutils,iniparser,jsonutils,local,notifier,policy,setup,timeutils,log,version
|
modules=cfg,gettextutils,importutils,iniparser,jsonutils,local,notifier,policy,setup,timeutils,log,version,uuidutils
|
||||||
|
|
||||||
# The base module to hold the copy of openstack.common
|
# The base module to hold the copy of openstack.common
|
||||||
base=glance
|
base=glance
|
||||||
|
|
Loading…
Reference in New Issue