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)
|
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):
|
def _load_entry_point(ep_name, name=None):
|
||||||
"""Try to load the entry point ep_name that matches name."""
|
"""Try to load the entry point ep_name that matches name."""
|
||||||
for ep in pkg_resources.iter_entry_points(ep_name, name=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 base
|
||||||
from novaclient import exceptions
|
from novaclient import exceptions
|
||||||
from novaclient import utils
|
from novaclient import utils
|
||||||
|
from novaclient.openstack.common import uuidutils
|
||||||
|
|
||||||
|
|
||||||
class Flavor(base.Resource):
|
class Flavor(base.Resource):
|
||||||
@ -147,7 +148,7 @@ class FlavorManager(base.ManagerWithFind):
|
|||||||
|
|
||||||
if flavorid == "auto":
|
if flavorid == "auto":
|
||||||
flavorid = None
|
flavorid = None
|
||||||
elif not utils.is_uuid_like(flavorid):
|
elif not uuidutils.is_uuid_like(flavorid):
|
||||||
try:
|
try:
|
||||||
flavorid = int(flavorid)
|
flavorid = int(flavorid)
|
||||||
except (TypeError, ValueError):
|
except (TypeError, ValueError):
|
||||||
|
@ -28,6 +28,7 @@ import time
|
|||||||
from novaclient import exceptions
|
from novaclient import exceptions
|
||||||
from novaclient.openstack.common import strutils
|
from novaclient.openstack.common import strutils
|
||||||
from novaclient.openstack.common import timeutils
|
from novaclient.openstack.common import timeutils
|
||||||
|
from novaclient.openstack.common import uuidutils
|
||||||
from novaclient import utils
|
from novaclient import utils
|
||||||
from novaclient.v1_1 import availability_zones
|
from novaclient.v1_1 import availability_zones
|
||||||
from novaclient.v1_1 import quotas
|
from novaclient.v1_1 import quotas
|
||||||
@ -1883,7 +1884,7 @@ def _print_secgroups(secgroups):
|
|||||||
|
|
||||||
def _get_secgroup(cs, secgroup):
|
def _get_secgroup(cs, secgroup):
|
||||||
# Check secgroup is an ID
|
# Check secgroup is an ID
|
||||||
if utils.is_uuid_like(strutils.safe_encode(secgroup)):
|
if uuidutils.is_uuid_like(strutils.safe_encode(secgroup)):
|
||||||
try:
|
try:
|
||||||
return cs.security_groups.get(secgroup)
|
return cs.security_groups.get(secgroup)
|
||||||
except exceptions.NotFound:
|
except exceptions.NotFound:
|
||||||
|
@ -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=timeutils,strutils
|
modules=timeutils,strutils,uuidutils
|
||||||
|
|
||||||
# The base module to hold the copy of openstack.common
|
# The base module to hold the copy of openstack.common
|
||||||
base=novaclient
|
base=novaclient
|
||||||
|
Loading…
Reference in New Issue
Block a user