from quantum.common import exceptions as q_exc
from quantum.openstack.common import log as logging
+from quantum.openstack.common import uuidutils
+
LOG = logging.getLogger(__name__)
return msg
+def _validate_uuid(data, valid_values=None):
+ if uuidutils.is_uuid_like(data):
+ return
+ else:
+ msg = _("%s is not a valid UUID") % data
+ LOG.debug("validate_uuid: %s", msg)
+ return msg
+
+
def convert_to_boolean(data):
try:
i = int(data)
# Dictionary that maintains a list of validation functions
validators = {'type:boolean': _validate_boolean,
- 'type:values': _validate_values,
- 'type:range': _validate_range,
- 'type:mac_address': _validate_mac_address,
'type:ip_address': _validate_ip_address,
'type:ip_address_or_none': _validate_ip_address_or_none,
+ 'type:mac_address': _validate_mac_address,
+ 'type:range': _validate_range,
+ 'type:regex': _validate_regex,
'type:subnet': _validate_subnet,
- 'type:regex': _validate_regex}
+ 'type:uuid': _validate_uuid,
+ 'type:values': _validate_values}
# Note: a default of ATTR_NOT_SPECIFIED indicates that an
# attribute is not required, but will be generated by the plugin
RESOURCE_ATTRIBUTE_MAP = {
'networks': {
'id': {'allow_post': False, 'allow_put': False,
- 'validate': {'type:regex': UUID_PATTERN},
+ 'validate': {'type:uuid': None},
'is_visible': True},
'name': {'allow_post': True, 'allow_put': True,
'default': '', 'is_visible': True},
},
'ports': {
'id': {'allow_post': False, 'allow_put': False,
- 'validate': {'type:regex': UUID_PATTERN},
+ 'validate': {'type:uuid': None},
'is_visible': True},
'name': {'allow_post': True, 'allow_put': True, 'default': '',
'is_visible': True},
'network_id': {'allow_post': True, 'allow_put': False,
'required_by_policy': True,
- 'validate': {'type:regex': UUID_PATTERN},
+ 'validate': {'type:uuid': None},
'is_visible': True},
'admin_state_up': {'allow_post': True, 'allow_put': True,
'default': True,
},
'subnets': {
'id': {'allow_post': False, 'allow_put': False,
- 'validate': {'type:regex': UUID_PATTERN},
+ 'validate': {'type:uuid': None},
'is_visible': True},
'name': {'allow_post': True, 'allow_put': True, 'default': '',
'is_visible': True},
'is_visible': True},
'network_id': {'allow_post': True, 'allow_put': False,
'required_by_policy': True,
- 'validate': {'type:regex': UUID_PATTERN},
+ 'validate': {'type:uuid': None},
'is_visible': True},
'cidr': {'allow_post': True, 'allow_put': False,
'validate': {'type:subnet': None},