Merge "Add trigger verification in API"
This commit is contained in:
commit
a5ca6c2419
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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")',
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue