Merge "Validate bool value using strutils.bool_from_string method"

This commit is contained in:
Jenkins 2015-07-06 18:47:45 +00:00 committed by Gerrit Code Review
commit f3405653cd
4 changed files with 28 additions and 53 deletions

View File

@ -15,7 +15,6 @@
from oslo_log import log as logging
import oslo_messaging as messaging
from oslo_utils import strutils
import six
import webob
from webob import exc
@ -222,17 +221,13 @@ class VolumeAdminController(AdminController):
host = params['host']
except KeyError:
raise exc.HTTPBadRequest(explanation=_("Must specify 'host'"))
force_host_copy = params.get('force_host_copy', False)
if isinstance(force_host_copy, six.string_types):
try:
force_host_copy = strutils.bool_from_string(force_host_copy,
strict=True)
except ValueError:
raise exc.HTTPBadRequest(
explanation=_("Bad value for 'force_host_copy'"))
elif not isinstance(force_host_copy, bool):
raise exc.HTTPBadRequest(
explanation=_("'force_host_copy' not string or bool"))
force_host_copy = params.get('force_host_copy', 'False')
try:
force_host_copy = strutils.bool_from_string(force_host_copy,
strict=True)
except ValueError as e:
msg = (_("Invalid value for force_host_copy: '%s'") % e.message)
raise exc.HTTPBadRequest(explanation=msg)
self.volume_api.migrate_volume(context, volume, host, force_host_copy)
return webob.Response(status_int=202)

View File

@ -265,15 +265,11 @@ class VolumeActionsController(wsgi.Controller):
msg = _("No image_name was specified in request.")
raise webob.exc.HTTPBadRequest(explanation=msg)
force = params.get('force', False)
if isinstance(force, six.string_types):
try:
force = strutils.bool_from_string(force, strict=False)
except ValueError:
msg = _("Bad value for 'force' parameter.")
raise webob.exc.HTTPBadRequest(explanation=msg)
elif not isinstance(force, bool):
msg = _("'force' is not string or bool.")
force = params.get('force', 'False')
try:
force = strutils.bool_from_string(force, strict=True)
except ValueError as error:
msg = _("Invalid value for 'force': '%s'") % error.message
raise webob.exc.HTTPBadRequest(explanation=msg)
try:
@ -337,16 +333,11 @@ class VolumeActionsController(wsgi.Controller):
msg = _("Must specify readonly in request.")
raise webob.exc.HTTPBadRequest(explanation=msg)
if isinstance(readonly_flag, six.string_types):
try:
readonly_flag = strutils.bool_from_string(readonly_flag,
strict=True)
except ValueError:
msg = _("Bad value for 'readonly'")
raise webob.exc.HTTPBadRequest(explanation=msg)
elif not isinstance(readonly_flag, bool):
msg = _("'readonly' not string or bool")
try:
readonly_flag = strutils.bool_from_string(readonly_flag,
strict=True)
except ValueError as error:
msg = _("Invalid value for 'readonly': '%s'") % error.message
raise webob.exc.HTTPBadRequest(explanation=msg)
self.volume_api.update_readonly_flag(context, volume, readonly_flag)
@ -382,16 +373,11 @@ class VolumeActionsController(wsgi.Controller):
msg = _("Must specify bootable in request.")
raise webob.exc.HTTPBadRequest(explanation=msg)
if isinstance(bootable, six.string_types):
try:
bootable = strutils.bool_from_string(bootable,
strict=True)
except ValueError:
msg = _("Bad value for 'bootable'")
raise webob.exc.HTTPBadRequest(explanation=msg)
elif not isinstance(bootable, bool):
msg = _("'bootable' not string or bool")
try:
bootable = strutils.bool_from_string(bootable,
strict=True)
except ValueError as error:
msg = _("Invalid value for 'bootable': '%s'") % error.message
raise webob.exc.HTTPBadRequest(explanation=msg)
update_dict = {'bootable': bootable}

View File

@ -194,11 +194,13 @@ class SnapshotsController(wsgi.Controller):
snapshot['display_name'] = snapshot.get('name')
del snapshot['name']
if not utils.is_valid_boolstr(force):
msg = _("Invalid value '%s' for force. ") % force
try:
force = strutils.bool_from_string(force, strict=True)
except ValueError as error:
msg = _("Invalid value for 'force': '%s'") % error.message
raise exception.InvalidParameterValue(err=msg)
if strutils.bool_from_string(force):
if force:
new_snapshot = self.volume_api.create_snapshot_force(
context,
volume,

View File

@ -847,7 +847,7 @@ class AdminActionsTest(test.TestCase):
db.snapshot_create(ctx, {'volume_id': volume['id']})
self._migrate_volume_exec(ctx, volume, host, expected_status)
def test_migrate_volume_bad_force_host_copy1(self):
def test_migrate_volume_bad_force_host_copy(self):
expected_status = 400
host = 'test2'
ctx = context.RequestContext('admin', 'fake', True)
@ -855,14 +855,6 @@ class AdminActionsTest(test.TestCase):
self._migrate_volume_exec(ctx, volume, host, expected_status,
force_host_copy='foo')
def test_migrate_volume_bad_force_host_copy2(self):
expected_status = 400
host = 'test2'
ctx = context.RequestContext('admin', 'fake', True)
volume = self._migrate_volume_prep()
self._migrate_volume_exec(ctx, volume, host, expected_status,
force_host_copy=1)
def _migrate_volume_comp_exec(self, ctx, volume, new_volume, error,
expected_status, expected_id, no_body=False):
req = webob.Request.blank('/v2/fake/volumes/%s/action' % volume['id'])