Merge "Fix creating plan with invalid provider and no parameters"
This commit is contained in:
commit
3bbe4609ed
|
@ -384,9 +384,6 @@ class PlansController(wsgi.Controller):
|
||||||
raise exception.InvalidInput(reason=msg)
|
raise exception.InvalidInput(reason=msg)
|
||||||
|
|
||||||
def validate_plan_parameters(self, context, plan):
|
def validate_plan_parameters(self, context, plan):
|
||||||
parameters = plan["parameters"]
|
|
||||||
if not parameters:
|
|
||||||
return
|
|
||||||
try:
|
try:
|
||||||
provider = self.protection_api.show_provider(
|
provider = self.protection_api.show_provider(
|
||||||
context, plan["provider_id"])
|
context, plan["provider_id"])
|
||||||
|
@ -398,6 +395,9 @@ class PlansController(wsgi.Controller):
|
||||||
if options_schema is None:
|
if options_schema is None:
|
||||||
msg = _("The option_schema of plugin must be provided.")
|
msg = _("The option_schema of plugin must be provided.")
|
||||||
raise exc.HTTPBadRequest(explanation=msg)
|
raise exc.HTTPBadRequest(explanation=msg)
|
||||||
|
parameters = plan["parameters"]
|
||||||
|
if not parameters:
|
||||||
|
return
|
||||||
for resource_key, parameter_value in parameters.items():
|
for resource_key, parameter_value in parameters.items():
|
||||||
if "#" in resource_key:
|
if "#" in resource_key:
|
||||||
resource_type, resource_id = resource_key.split("#")
|
resource_type, resource_id = resource_key.split("#")
|
||||||
|
|
|
@ -106,6 +106,17 @@ class PlanApiTest(base.TestCase):
|
||||||
self.assertRaises(exc.HTTPBadRequest, self.controller.create,
|
self.assertRaises(exc.HTTPBadRequest, self.controller.create,
|
||||||
req, body=body)
|
req, body=body)
|
||||||
|
|
||||||
|
@mock.patch(
|
||||||
|
'karbor.services.protection.rpcapi.ProtectionAPI.show_provider')
|
||||||
|
def test_plan_create_InvalidProvider_and_no_parameters_specify(
|
||||||
|
self, mock_provider):
|
||||||
|
plan = self._plan_in_request_body(parameters={})
|
||||||
|
body = {"plan": plan}
|
||||||
|
req = fakes.HTTPRequest.blank('/v1/plans')
|
||||||
|
mock_provider.side_effect = exception.NotFound()
|
||||||
|
self.assertRaises(exc.HTTPBadRequest, self.controller.create,
|
||||||
|
req, body=body)
|
||||||
|
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
'karbor.api.v1.plans.PlansController._plan_get')
|
'karbor.api.v1.plans.PlansController._plan_get')
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
|
@ -179,7 +190,10 @@ class PlanApiTest(base.TestCase):
|
||||||
self.controller.index,
|
self.controller.index,
|
||||||
req)
|
req)
|
||||||
|
|
||||||
def test_plan_create_empty_dict(self):
|
@mock.patch(
|
||||||
|
'karbor.services.protection.rpcapi.ProtectionAPI.show_provider')
|
||||||
|
def test_plan_create_empty_dict(self, mock_provider):
|
||||||
|
mock_provider.return_value = fakes.PROVIDER_OS
|
||||||
plan = self._plan_in_request_body(parameters={})
|
plan = self._plan_in_request_body(parameters={})
|
||||||
body = {"plan": plan}
|
body = {"plan": plan}
|
||||||
req = fakes.HTTPRequest.blank('/v1/plans')
|
req = fakes.HTTPRequest.blank('/v1/plans')
|
||||||
|
|
Loading…
Reference in New Issue