From 71a76951754d051f1501095b572a9045192908e2 Mon Sep 17 00:00:00 2001 From: Mohamed El Gindi Date: Tue, 5 Mar 2019 16:11:17 -0800 Subject: [PATCH] Fix to allow more parameters for retention_protect Scheduled operations might take additional parameters/properties due to addition of new feature 'retention_protect' This is to allow more parameters like max_backups and retention_duration in scheduledoperation command without api validation giving an error Closes-Bug #1818582 Change-Id: Idf520ed0e5b1625448910278da9dbbf711e5f381 Co-Authored-By: Jiao Pengju --- karbor/api/schemas/scheduled_operations.py | 2 +- karbor/tests/unit/api/v1/test_scheduled_operation.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/karbor/api/schemas/scheduled_operations.py b/karbor/api/schemas/scheduled_operations.py index 8442daff..597cd8a6 100644 --- a/karbor/api/schemas/scheduled_operations.py +++ b/karbor/api/schemas/scheduled_operations.py @@ -36,7 +36,7 @@ create = { 'plan_id': parameter_types.uuid, }, 'required': ['provider_id', 'plan_id'], - 'additionalProperties': False, + 'additionalProperties': True, }, }, diff --git a/karbor/tests/unit/api/v1/test_scheduled_operation.py b/karbor/tests/unit/api/v1/test_scheduled_operation.py index dd7c2488..122174b3 100644 --- a/karbor/tests/unit/api/v1/test_scheduled_operation.py +++ b/karbor/tests/unit/api/v1/test_scheduled_operation.py @@ -115,6 +115,16 @@ class ScheduledOperationApiTest(base.TestCase): operation = self.controller.create(self.req, body=body) self.assertEqual(name, operation['scheduled_operation']['name']) + def test_create_retention_scheduled_operation(self): + name = 'my retention protect' + param = self.default_create_operation_param.copy() + param['name'] = name + param['operation_definition']['retention_duration'] = 100 + param['operation_definition']['max_backups'] = 3 + body = self._get_create_operation_request_body(param) + operation = self.controller.create(self.req, body=body) + self.assertEqual(name, operation['scheduled_operation']['name']) + def test_delete_operation_receive_NotFound_except(self): self.remote_operation_api._delete_operation_exception =\ exception.ScheduledOperationStateNotFound(op_id=None)