Merge "Add trigger verification in API"

This commit is contained in:
Zuul 2018-01-26 08:09:37 +00:00 committed by Gerrit Code Review
commit a5ca6c2419
6 changed files with 26 additions and 0 deletions

View File

@ -104,6 +104,7 @@ class TriggersController(wsgi.Controller):
}
try:
trigger = objects.Trigger(context=context, **trigger_definition)
self.operationengine_api.verify_trigger(context, trigger)
self.operationengine_api.create_trigger(context, trigger)
trigger.create()
except exception.Invalid as ex:

View File

@ -40,6 +40,9 @@ class API(base.Base):
self.operationengine_rpcapi.resume_scheduled_operation(
context, operation_id, trigger_id)
def verify_trigger(self, context, trigger):
self.operationengine_rpcapi.verify_trigger(context, trigger)
def create_trigger(self, context, trigger):
self.operationengine_rpcapi.create_trigger(context, trigger)

View File

@ -219,6 +219,13 @@ class OperationEngineManager(manager.Manager):
except Exception:
raise
@messaging.expected_exceptions(exception.InvalidInput)
def verify_trigger(self, context, trigger):
LOG.debug('Verifying trigger (id: "%s" type: "%s")',
trigger.id, trigger.type)
self.trigger_manager.check_trigger_definition(
trigger.type, trigger.properties)
@messaging.expected_exceptions(exception.InvalidInput)
def create_trigger(self, context, trigger):
LOG.debug('Creating trigger (id: "%s" type: "%s")',

View File

@ -63,6 +63,9 @@ class OperationEngineAPI(object):
operation_id=operation_id,
trigger_id=trigger_id)
def verify_trigger(self, ctxt, trigger):
return self._client.call(ctxt, 'verify_trigger', trigger=trigger)
def create_trigger(self, ctxt, trigger):
self._client.prepare(fanout=True).cast(ctxt, 'create_trigger',
trigger=trigger)

View File

@ -31,6 +31,9 @@ class FakeRemoteOperationApi(object):
msg = (_("Invalid trigger time format type"))
raise exception.InvalidInput(msg)
def verify_trigger(self, context, trigger):
pass
def delete_trigger(self, context, trigger_id):
pass

View File

@ -39,6 +39,9 @@ class FakeTriggerManager(object):
def unregister_operation(self, trigger_id, operation_id, **kwargs):
pass
def check_trigger_definition(self, trigger_type, trigger_definition):
pass
def add_trigger(self, trigger_id, trigger_type, trigger_property):
self._trigger[trigger_id] = []
@ -150,6 +153,12 @@ class OperationEngineManagerTestCase(base.TestCase):
self.manager.suspend_scheduled_operation(self.ctxt, op_id, trigger_id)
unregister.assert_called_once_with(trigger_id, op_id)
@mock.patch.object(FakeTriggerManager, 'check_trigger_definition')
def test_verify_trigger(self, check_trigger_definition):
self.manager.verify_trigger(self.ctxt, self._trigger)
check_trigger_definition.assert_called_once_with(
self._trigger.type, self._trigger.properties)
def _create_one_trigger(self):
trigger_info = {
'project_id': "123",