summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorZhongyue Luo <zhongyue.nah@intel.com>2012-10-31 13:19:10 +0800
committerZhongyue Luo <zhongyue.nah@intel.com>2012-11-05 15:08:45 +0800
commitd2e7bb04317f62643ab2005b601da2265c502c93 (patch)
treec1d42bb8f9d83d0c64042feeaa9f193c71abca53 /nova
parentbb15f2b5b8f9127c1da6b26ac18b306378b3531a (diff)
Use uuidutils.is_uuid_like for uuid validation
Change-Id: I8fc760062ecaee45d263db663a52971be96f264a
Diffstat (limited to 'nova')
-rw-r--r--nova/api/ec2/ec2utils.py8
-rw-r--r--nova/api/openstack/compute/contrib/floating_ips.py4
-rw-r--r--nova/api/openstack/compute/servers.py9
-rw-r--r--nova/compute/api.py3
-rw-r--r--nova/console/api.py4
-rw-r--r--nova/db/sqlalchemy/api.py15
-rw-r--r--nova/network/manager.py5
-rw-r--r--nova/network/quantumv2/api.py4
-rw-r--r--nova/tests/test_utils.py3
-rw-r--r--nova/utils.py12
10 files changed, 30 insertions, 37 deletions
diff --git a/nova/api/ec2/ec2utils.py b/nova/api/ec2/ec2utils.py
index 4d0a926df..580cfdac7 100644
--- a/nova/api/ec2/ec2utils.py
+++ b/nova/api/ec2/ec2utils.py
@@ -25,7 +25,7 @@ from nova import flags
from nova.network import model as network_model
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
-from nova import utils
+from nova.openstack.common import uuidutils
FLAGS = flags.FLAGS
@@ -130,7 +130,7 @@ def id_to_ec2_id(instance_id, template='i-%08x'):
def id_to_ec2_inst_id(instance_id):
"""Get or create an ec2 instance ID (i-[base 16 number]) from uuid."""
- if utils.is_uuid_like(instance_id):
+ if uuidutils.is_uuid_like(instance_id):
ctxt = context.get_admin_context()
int_id = get_int_id_from_instance_uuid(ctxt, instance_id)
return id_to_ec2_id(int_id)
@@ -150,7 +150,7 @@ def get_instance_uuid_from_int_id(context, int_id):
def id_to_ec2_snap_id(snapshot_id):
"""Get or create an ec2 volume ID (vol-[base 16 number]) from uuid."""
- if utils.is_uuid_like(snapshot_id):
+ if uuidutils.is_uuid_like(snapshot_id):
ctxt = context.get_admin_context()
int_id = get_int_id_from_snapshot_uuid(ctxt, snapshot_id)
return id_to_ec2_id(int_id, 'snap-%08x')
@@ -160,7 +160,7 @@ def id_to_ec2_snap_id(snapshot_id):
def id_to_ec2_vol_id(volume_id):
"""Get or create an ec2 volume ID (vol-[base 16 number]) from uuid."""
- if utils.is_uuid_like(volume_id):
+ if uuidutils.is_uuid_like(volume_id):
ctxt = context.get_admin_context()
int_id = get_int_id_from_volume_uuid(ctxt, volume_id)
return id_to_ec2_id(int_id, 'vol-%08x')
diff --git a/nova/api/openstack/compute/contrib/floating_ips.py b/nova/api/openstack/compute/contrib/floating_ips.py
index 56a6a8fad..4f6dbffdb 100644
--- a/nova/api/openstack/compute/contrib/floating_ips.py
+++ b/nova/api/openstack/compute/contrib/floating_ips.py
@@ -27,7 +27,7 @@ from nova.compute import utils as compute_utils
from nova import exception
from nova import network
from nova.openstack.common import log as logging
-from nova import utils
+from nova.openstack.common import uuidutils
LOG = logging.getLogger(__name__)
@@ -307,7 +307,7 @@ class FloatingIPActionController(wsgi.Controller):
# disassociate if associated
if (instance and
floating_ip.get('fixed_ip_id') and
- (utils.is_uuid_like(id) and
+ (uuidutils.is_uuid_like(id) and
[instance['uuid'] == id] or
[instance['id'] == id])[0]):
disassociate_floating_ip(self, context, instance, address)
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index ba88d72e7..c4293255d 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -36,6 +36,7 @@ from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common.rpc import common as rpc_common
from nova.openstack.common import timeutils
+from nova.openstack.common import uuidutils
from nova import utils
@@ -621,7 +622,7 @@ class Controller(wsgi.Controller):
# port parameter is only for qunatum v2.0
msg = _("Unknown argment : port")
raise exc.HTTPBadRequest(explanation=msg)
- if not utils.is_uuid_like(port_id):
+ if not uuidutils.is_uuid_like(port_id):
msg = _("Bad port format: port uuid is "
"not in proper format "
"(%s)") % port_id
@@ -629,9 +630,9 @@ class Controller(wsgi.Controller):
else:
network_uuid = network['uuid']
- if not port_id and not utils.is_uuid_like(network_uuid):
+ if not port_id and not uuidutils.is_uuid_like(network_uuid):
br_uuid = network_uuid.split('-', 1)[-1]
- if not utils.is_uuid_like(br_uuid):
+ if not uuidutils.is_uuid_like(br_uuid):
msg = _("Bad networks format: network uuid is "
"not in proper format "
"(%s)") % network_uuid
@@ -1099,7 +1100,7 @@ class Controller(wsgi.Controller):
# down to an id and use the default glance connection params
image_uuid = image_href.split('/').pop()
- 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)
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 1bbcdbda9..f72387f30 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -48,6 +48,7 @@ from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
+from nova.openstack.common import uuidutils
import nova.policy
from nova import quota
from nova.scheduler import rpcapi as scheduler_rpcapi
@@ -1067,7 +1068,7 @@ class API(base.Base):
def get(self, context, instance_id):
"""Get a single instance with the given instance_id."""
# NOTE(ameade): we still need to support integer ids for ec2
- if utils.is_uuid_like(instance_id):
+ if uuidutils.is_uuid_like(instance_id):
instance = self.db.instance_get_by_uuid(context, instance_id)
else:
instance = self.db.instance_get(context, instance_id)
diff --git a/nova/console/api.py b/nova/console/api.py
index 8becf35cf..5a9294ce7 100644
--- a/nova/console/api.py
+++ b/nova/console/api.py
@@ -22,7 +22,7 @@ from nova.console import rpcapi as console_rpcapi
from nova.db import base
from nova import flags
from nova.openstack.common import rpc
-from nova import utils
+from nova.openstack.common import uuidutils
FLAGS = flags.FLAGS
@@ -63,7 +63,7 @@ class API(base.Base):
return rpcapi.get_console_topic(context, instance_host)
def _get_instance(self, context, instance_uuid):
- if utils.is_uuid_like(instance_uuid):
+ if uuidutils.is_uuid_like(instance_uuid):
instance = self.db.instance_get_by_uuid(context, instance_uuid)
else:
instance = self.db.instance_get(context, instance_uuid)
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index a00895c57..d4173a7f8 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -35,6 +35,7 @@ from nova import exception
from nova import flags
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
+from nova.openstack.common import uuidutils
from nova import utils
from sqlalchemy import and_
from sqlalchemy.exc import IntegrityError
@@ -1035,7 +1036,7 @@ def fixed_ip_associate(context, address, instance_uuid, network_id=None,
reserved -- should be a boolean value(True or False), exact value will be
used to filter on the fixed ip address
"""
- if not utils.is_uuid_like(instance_uuid):
+ if not uuidutils.is_uuid_like(instance_uuid):
raise exception.InvalidUUID(uuid=instance_uuid)
session = get_session()
@@ -1067,7 +1068,7 @@ def fixed_ip_associate(context, address, instance_uuid, network_id=None,
@require_admin_context
def fixed_ip_associate_pool(context, network_id, instance_uuid=None,
host=None):
- if instance_uuid and not utils.is_uuid_like(instance_uuid):
+ if instance_uuid and not uuidutils.is_uuid_like(instance_uuid):
raise exception.InvalidUUID(uuid=instance_uuid)
session = get_session()
@@ -1211,7 +1212,7 @@ def fixed_ip_get_by_address(context, address, session=None):
@require_context
def fixed_ip_get_by_instance(context, instance_uuid):
- if not utils.is_uuid_like(instance_uuid):
+ if not uuidutils.is_uuid_like(instance_uuid):
raise exception.InvalidUUID(uuid=instance_uuid)
result = model_query(context, models.FixedIp, read_deleted="no").\
@@ -1463,7 +1464,7 @@ def instance_data_get_for_project(context, project_id, session=None):
def instance_destroy(context, instance_uuid, constraint=None):
session = get_session()
with session.begin():
- if utils.is_uuid_like(instance_uuid):
+ if uuidutils.is_uuid_like(instance_uuid):
instance_ref = instance_get_by_uuid(context, instance_uuid,
session=session)
else:
@@ -1783,7 +1784,7 @@ def instance_test_and_set(context, instance_uuid, attr, ok_states,
query = model_query(context, models.Instance, session=session,
project_only=True)
- if utils.is_uuid_like(instance_uuid):
+ if uuidutils.is_uuid_like(instance_uuid):
query = query.filter_by(uuid=instance_uuid)
else:
raise exception.InvalidUUID(instance_uuid)
@@ -1835,7 +1836,7 @@ def instance_update_and_get_original(context, instance_uuid, values):
def _instance_update(context, instance_uuid, values, copy_old_instance=False):
session = get_session()
- if not utils.is_uuid_like(instance_uuid):
+ if not uuidutils.is_uuid_like(instance_uuid):
raise exception.InvalidUUID(instance_uuid)
with session.begin():
@@ -2926,7 +2927,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/nova/network/manager.py b/nova/network/manager.py
index afe79a664..cfd1a320f 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -69,6 +69,7 @@ from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common.notifier import api as notifier
from nova.openstack.common import timeutils
+from nova.openstack.common import uuidutils
import nova.policy
from nova import quota
from nova import utils
@@ -943,7 +944,7 @@ class NetworkManager(manager.SchedulerDependentManager):
# NOTE(francois.charlier): the instance may have been deleted already
# thus enabling `read_deleted`
admin_context = context.get_admin_context(read_deleted='yes')
- if utils.is_uuid_like(instance_id):
+ if uuidutils.is_uuid_like(instance_id):
instance_ref = self.db.instance_get_by_uuid(admin_context,
instance_id)
else:
@@ -1277,7 +1278,7 @@ class NetworkManager(manager.SchedulerDependentManager):
@wrap_check_policy
def add_fixed_ip_to_instance(self, context, instance_id, host, network_id):
"""Adds a fixed ip to an instance from specified network."""
- if utils.is_uuid_like(network_id):
+ if uuidutils.is_uuid_like(network_id):
network = self.get_network(context, network_id)
else:
network = self._get_network_by_id(context, network_id)
diff --git a/nova/network/quantumv2/api.py b/nova/network/quantumv2/api.py
index e8d672835..2cc607684 100644
--- a/nova/network/quantumv2/api.py
+++ b/nova/network/quantumv2/api.py
@@ -26,7 +26,7 @@ from nova.network import quantumv2
from nova.openstack.common import cfg
from nova.openstack.common import excutils
from nova.openstack.common import log as logging
-from nova import utils
+from nova.openstack.common import uuidutils
quantum_opts = [
@@ -437,7 +437,7 @@ class API(base.Base):
def _get_floating_ip_pool_id_by_name_or_id(self, client, name_or_id):
search_opts = {NET_EXTERNAL: True, 'fields': 'id'}
- if utils.is_uuid_like(name_or_id):
+ if uuidutils.is_uuid_like(name_or_id):
search_opts.update({'id': name_or_id})
else:
search_opts.update({'name': name_or_id})
diff --git a/nova/tests/test_utils.py b/nova/tests/test_utils.py
index 1b84b858d..8b883f755 100644
--- a/nova/tests/test_utils.py
+++ b/nova/tests/test_utils.py
@@ -30,6 +30,7 @@ import nova
from nova import exception
from nova import flags
from nova.openstack.common import timeutils
+from nova.openstack.common import uuidutils
from nova import test
from nova import utils
@@ -510,7 +511,7 @@ class GenericUtilsTestCase(test.TestCase):
class IsUUIDLikeTestCase(test.TestCase):
def assertUUIDLike(self, val, expected):
- result = utils.is_uuid_like(val)
+ result = uuidutils.is_uuid_like(val)
self.assertEqual(result, expected)
def test_good_uuid(self):
diff --git a/nova/utils.py b/nova/utils.py
index 284d72b55..d97c2ce3f 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -772,18 +772,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"""