diff --git a/specs/ussuri/approved/rollback-mechanism.rst b/specs/ussuri/approved/rollback-mechanism.rst new file mode 100644 index 0000000..9218152 --- /dev/null +++ b/specs/ussuri/approved/rollback-mechanism.rst @@ -0,0 +1,161 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +=================== +Rollback Mechanism +=================== + +https://blueprints.launchpad.net/watcher/+spec/rollback-mechanism + + +Problem description +=================== + +After every audit, there would be one actionplan to execute. The actionplan +is a group of actions, such as: + + * migrations + * change nova service state + * change node power state + * ... + +Sometimes, the users want to rollback one actionplan even after the actionplan +successfully executed. + +To tester, they usually make the env unbalance, so that there will be +instances migration during audit. After that they need to migrate +the instances back to the source host for next test. + +Moreover, for host maintenance, it will migrate all instances from the +maintaining host to others. After the host maintenance and active again, +there is no mechanism to migrate the instances automatically back to the +maintaining host. + +Use Cases +---------- + +As a QA of Watcher, I want to rollback the actionplan, so that I can easily +restore the environment for next test. + +As an openstack operator, I want to migrate the instances back to the source +node after the node having been executed "host maintenance" strategy. + +Proposed change +=============== + +In watcher-api, we can add 'rollback' action to ActionPlan API. When the api +recieves the rollback request and then distributes the request to +watcher-decision-engine module. + +In watcher-decision-engine, it retrives the actionplan and records every +rollback of the actions which belong to the actionplan, then return the +rollback result to watcher-api. + +Because the compute data model changes by time, the actionplan is possible to +rollback failed. To make the rollback mechanism to work as far as possible, +only recent(default, recent in one hour) actionplan is allowed to rollback. + +Alternatives +------------ + +None + +Data model impact +----------------- + +None + +REST API impact +--------------- + +Rollback Action Plan + +* /v1/action_plans/{actionplan_ident}/rollback + + * Method type: POST + + * actionplan_ident:UUID of the Action Plan + + * Normal http response code(200) + + * Expected error http response code(400,404) + +Security impact +--------------- + +None + +Notifications impact +-------------------- + +None + +Other end user impact +--------------------- + +None + +Performance Impact +------------------ + +None + +Other deployer impact +--------------------- + +None + +Developer impact +---------------- + +None + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + + +Work Items +---------- + +* ActionPlan rollback action API + +* RollBack mechanism for one actionplan + +Dependencies +============ + +None + +Testing +======= + +Unit tests + +Documentation Impact +==================== + +* Add documentation about how to use the new feature + +References +========== + +None + +History +======= + +.. list-table:: Revisions + :header-rows: 1 + + * - Release Name + - Description + * - Ussuri + - Introduced