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:
parent
2925d5bbda
commit
bc0ad1cb9d
39
novaclient/openstack/common/uuidutils.py
Normal file
39
novaclient/openstack/common/uuidutils.py
Normal 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
|
@ -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):
|
||||
|
@ -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):
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user