Running actions by engine

Registered by Renat Akhmerov

Now:

Mistral actions can be run only by executors. Needed action information must be sent to an executor over RPC. In many cases this additional RPC overhead is bigger than the action execution time itself. So it doesn't make a lot of sense to have this overhead at all. Additionally, an RPC call reduces reliability and exposes more opportunities for outages/errors.

The goal:

Mistral should be able to run actions run on the engine side. This behavior should either be configured in the configuration and/or be part of an action property.

Solution ideas:

* Add a configuration option to allow action to run on the engine side
* Add an action property that says that the action must run on executor only ("target" is what we can use here)

Testing:

* Unit tests to run actions w/o executors

Questions:

Notes:

* After running an action on the engine side engine still needs to put a message into an engine queue so that possible a different engine instance could process action result
* Engine can actually store an action immediately itself into DB. And send just a notification to MQ that a next task needs to be processed (e.g. on_action_complete() but w/o action result)

Blueprint information

Status:
Complete
Approver:
Renat Akhmerov
Priority:
High
Drafter:
Renat Akhmerov
Direction:
Approved
Assignee:
Winson Chan
Definition:
Approved
Series goal:
Accepted for pike
Implementation:
Implemented
Milestone target:
milestone icon pike-2
Started by
Renat Akhmerov
Completed by
Renat Akhmerov

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/mistral-actions-run-by-engine,n,z

Addressed by: https://review.openstack.org/454411
    Add option to run actions locally on the engine

Addressed by: https://review.openstack.org/456783
    Move EventEngine to event_engine base

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.