Reuse oslo for is_uuid_like() implementation

In the original code, isalnum() in is_uuid_like() doesn't allow "-",
while for UUID, format like aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa should be
allowed. This patch is to reuse uuidutils's API in oslo.

Change-Id: I339974c75a32d27f8e4443a1b97bb6e410933aa4
Signed-off-by: Shane Wang <shane.wang@intel.com>
This commit is contained in:
Shane Wang 2013-05-21 13:55:53 +08:00
parent 2925d5bbda
commit bc0ad1cb9d
5 changed files with 44 additions and 16 deletions

View File

@ -0,0 +1,39 @@
# 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 generate_uuid():
return str(uuid.uuid4())
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

View File

@ -346,19 +346,6 @@ def slugify(value):
return _slugify_hyphenate_re.sub('-', value)
def is_uuid_like(val):
"""
The UUID which doesn't contain hyphens or 'A-F' is allowed.
"""
try:
if uuid.UUID(val) and val.isalnum() and val.islower():
return True
else:
return False
except (TypeError, ValueError, AttributeError):
return False
def _load_entry_point(ep_name, name=None):
"""Try to load the entry point ep_name that matches name."""
for ep in pkg_resources.iter_entry_points(ep_name, name=name):

View File

@ -7,6 +7,7 @@ import urllib
from novaclient import base
from novaclient import exceptions
from novaclient import utils
from novaclient.openstack.common import uuidutils
class Flavor(base.Resource):
@ -147,7 +148,7 @@ class FlavorManager(base.ManagerWithFind):
if flavorid == "auto":
flavorid = None
elif not utils.is_uuid_like(flavorid):
elif not uuidutils.is_uuid_like(flavorid):
try:
flavorid = int(flavorid)
except (TypeError, ValueError):

View File

@ -28,6 +28,7 @@ import time
from novaclient import exceptions
from novaclient.openstack.common import strutils
from novaclient.openstack.common import timeutils
from novaclient.openstack.common import uuidutils
from novaclient import utils
from novaclient.v1_1 import availability_zones
from novaclient.v1_1 import quotas
@ -1883,7 +1884,7 @@ def _print_secgroups(secgroups):
def _get_secgroup(cs, secgroup):
# Check secgroup is an ID
if utils.is_uuid_like(strutils.safe_encode(secgroup)):
if uuidutils.is_uuid_like(strutils.safe_encode(secgroup)):
try:
return cs.security_groups.get(secgroup)
except exceptions.NotFound:

View File

@ -1,7 +1,7 @@
[DEFAULT]
# The list of modules to copy from openstack-common
modules=timeutils,strutils
modules=timeutils,strutils,uuidutils
# The base module to hold the copy of openstack.common
base=novaclient