)]}'
{"specs/ocata/approved/stale-action-plan.rst":[{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As an administrator, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that older than valid date (default 24h) to **SUPERSEDED**."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update the **RECOMMENDED** state of all action plans"},{"line_number":32,"context_line":"to **SUPERSEDED**."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As an administrator, when the cluster data model has changed, I want to"},{"line_number":35,"context_line":"update the **RECOMMENDED** state of all action plans to **SUPERSEDED**."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"},{"line_number":38,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_fad2705a","line":35,"range":{"start_line":27,"start_character":0,"end_line":35,"end_character":71},"updated":"2016-10-19 10:10:52.000000000","message":"in these use cases, the action of changing the state of action plans seems to be manual. I think in most cases, Watcher will do it automatically based on existing objects in the DB.","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As an administrator, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that older than valid date (default 24h) to **SUPERSEDED**."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update the **RECOMMENDED** state of all action plans"},{"line_number":32,"context_line":"to **SUPERSEDED**."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As an administrator, when the cluster data model has changed, I want to"},{"line_number":35,"context_line":"update the **RECOMMENDED** state of all action plans to **SUPERSEDED**."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"},{"line_number":38,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_de98956d","line":35,"range":{"start_line":27,"start_character":0,"end_line":35,"end_character":71},"in_reply_to":"fa6399be_fad2705a","updated":"2016-10-26 08:25:13.000000000","message":"Done","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Project Priority"},{"line_number":38,"context_line":"-----------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Not relevant because Watcher is not in the big tent so far."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_7abf40fc","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":59},"updated":"2016-10-19 10:10:52.000000000","message":"please set it as N/A","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Project Priority"},{"line_number":38,"context_line":"-----------------"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Not relevant because Watcher is not in the big tent so far."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_5e93a5fa","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":59},"in_reply_to":"fa6399be_7abf40fc","updated":"2016-10-26 08:25:13.000000000","message":"Done","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **ActionPlanStateCheck** class. In this class we use the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_7af4a0ce","line":45,"range":{"start_line":45,"start_character":56,"end_line":45,"end_character":75},"updated":"2016-10-19 10:10:52.000000000","message":"there is no state field in the Action object, please refer to http://docs.openstack.org/developer/watcher/architecture.html","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **ActionPlanStateCheck** class. In this class we use the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_a1fe6403","line":45,"range":{"start_line":45,"start_character":56,"end_line":45,"end_character":75},"in_reply_to":"fa6399be_7af4a0ce","updated":"2016-10-26 08:25:13.000000000","message":"watcher/objects/action.py\nclass Action(base.WatcherObject):\n    fields \u003d {\n        \u0027id\u0027: int,\n        \u0027uuid\u0027: obj_utils.str_or_none,\n        \u0027action_plan_id\u0027: obj_utils.int_or_none,\n        \u0027action_type\u0027: obj_utils.str_or_none,\n        \u0027input_parameters\u0027: obj_utils.dict_or_none,\n        \u0027state\u0027: obj_utils.str_or_none,\n        \u0027next\u0027: obj_utils.int_or_none,\n    }","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **ActionPlanStateCheck** class. In this class we use the"},{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":50,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"},{"line_number":51,"context_line":"  the state of action plan."},{"line_number":52,"context_line":"* Add a new class to capture the specific notification that indicates"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_dad20c34","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":73},"updated":"2016-10-19 10:10:52.000000000","message":"not sure we need to rely on APScheduler here as we can check existing action plans at the end of the execution","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **ActionPlanStateCheck** class. In this class we use the"},{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":50,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"},{"line_number":51,"context_line":"  the state of action plan."},{"line_number":52,"context_line":"* Add a new class to capture the specific notification that indicates"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_818de07d","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":73},"in_reply_to":"fa6399be_dad20c34","updated":"2016-10-26 08:25:13.000000000","message":"We need APScheduler to check the actionplan expiry date periodically.","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  the cluster data model was changed (such as nodes/instances changed),"},{"line_number":54,"context_line":"  then trigger to check the state of action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Note:** The notification logic isn\u0027t yet available in Watcher."},{"line_number":57,"context_line":"It depends on the `watcher-notifications-ovo`_ blueprint."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_5acefc83","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":57},"updated":"2016-10-19 10:10:52.000000000","message":"as code is already in review, you can probably rely on it, I will let vincentfrancoise discuss impacts.","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  the cluster data model was changed (such as nodes/instances changed),"},{"line_number":54,"context_line":"  then trigger to check the state of action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Note:** The notification logic isn\u0027t yet available in Watcher."},{"line_number":57,"context_line":"It depends on the `watcher-notifications-ovo`_ blueprint."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_21ddf470","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":57},"in_reply_to":"fa6399be_5acefc83","updated":"2016-10-26 08:25:13.000000000","message":"Done","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Here is the list of foreseen work items:"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action_plan.py**"},{"line_number":119,"context_line":"  class state."},{"line_number":120,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action.py**"},{"line_number":121,"context_line":"  class state."},{"line_number":122,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_da876c10","line":119,"range":{"start_line":118,"start_character":2,"end_line":119,"end_character":14},"updated":"2016-10-19 10:10:52.000000000","message":"you don\u0027t add a field here, you add a possible superseded state in state field.","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Here is the list of foreseen work items:"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action_plan.py**"},{"line_number":119,"context_line":"  class state."},{"line_number":120,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action.py**"},{"line_number":121,"context_line":"  class state."},{"line_number":122,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_c1d7d821","line":119,"range":{"start_line":118,"start_character":2,"end_line":119,"end_character":14},"in_reply_to":"fa6399be_da876c10","updated":"2016-10-26 08:25:13.000000000","message":"Done","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"831dd22d81b61737a6fb92e2fc296e5a2482b37d","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action_plan.py**"},{"line_number":119,"context_line":"  class state."},{"line_number":120,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action.py**"},{"line_number":121,"context_line":"  class state."},{"line_number":122,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"},{"line_number":123,"context_line":"  DEFAULT section."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_daa04ca8","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":14},"updated":"2016-10-19 10:10:52.000000000","message":"ditto","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"c896176bfab3e797ceed7b818fb23c43140ad2e5","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action_plan.py**"},{"line_number":119,"context_line":"  class state."},{"line_number":120,"context_line":"* Add a **SUPERSEDED** field to the **watcher/objects/action.py**"},{"line_number":121,"context_line":"  class state."},{"line_number":122,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"},{"line_number":123,"context_line":"  DEFAULT section."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5da102_e1dcdc48","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":14},"in_reply_to":"fa6399be_daa04ca8","updated":"2016-10-26 08:25:13.000000000","message":"Done","commit_id":"d8e8fdbcc14e97ab5522c2332a6c125fad078b56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"When an audit is created and launched successfully, it generates a new"},{"line_number":17,"context_line":"action plan with status **RECOMMENDED**. If the cluster data model has changed"},{"line_number":18,"context_line":"by and by, the action plan is still keep the **RECOMMENDED** state. There is"},{"line_number":19,"context_line":"not an expiry date or event that can invalidate the action plan by far."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"It should be possible to add a new **SUPERSEDED** state for action plan and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_0934b247","line":18,"range":{"start_line":18,"start_character":27,"end_line":18,"end_character":40},"updated":"2016-11-03 17:04:26.000000000","message":"still remains in","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"When an audit is created and launched successfully, it generates a new"},{"line_number":17,"context_line":"action plan with status **RECOMMENDED**. If the cluster data model has changed"},{"line_number":18,"context_line":"by and by, the action plan is still keep the **RECOMMENDED** state. There is"},{"line_number":19,"context_line":"not an expiry date or event that can invalidate the action plan by far."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"It should be possible to add a new **SUPERSEDED** state for action plan and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_8c47d74a","line":18,"range":{"start_line":18,"start_character":27,"end_line":18,"end_character":40},"in_reply_to":"ba5da102_0934b247","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":16,"context_line":"When an audit is created and launched successfully, it generates a new"},{"line_number":17,"context_line":"action plan with status **RECOMMENDED**. If the cluster data model has changed"},{"line_number":18,"context_line":"by and by, the action plan is still keep the **RECOMMENDED** state. There is"},{"line_number":19,"context_line":"not an expiry date or event that can invalidate the action plan by far."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"It should be possible to add a new **SUPERSEDED** state for action plan and"},{"line_number":22,"context_line":"action."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_8948c2cd","line":19,"range":{"start_line":19,"start_character":64,"end_line":19,"end_character":70},"updated":"2016-11-03 17:04:26.000000000","message":"so far","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":16,"context_line":"When an audit is created and launched successfully, it generates a new"},{"line_number":17,"context_line":"action plan with status **RECOMMENDED**. If the cluster data model has changed"},{"line_number":18,"context_line":"by and by, the action plan is still keep the **RECOMMENDED** state. There is"},{"line_number":19,"context_line":"not an expiry date or event that can invalidate the action plan by far."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"It should be possible to add a new **SUPERSEDED** state for action plan and"},{"line_number":22,"context_line":"action."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_ec6cd3d2","line":19,"range":{"start_line":19,"start_character":64,"end_line":19,"end_character":70},"in_reply_to":"ba5da102_8948c2cd","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher User, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that older than valid date (default 24h) to **SUPERSEDED** automatically."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an Watcher User, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update the **RECOMMENDED** state of all action plans"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_0959128e","line":28,"range":{"start_line":28,"start_character":6,"end_line":28,"end_character":16},"updated":"2016-11-03 17:04:26.000000000","message":"that are older","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher User, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that older than valid date (default 24h) to **SUPERSEDED** automatically."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an Watcher User, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update the **RECOMMENDED** state of all action plans"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_4cabffd6","line":28,"range":{"start_line":28,"start_character":6,"end_line":28,"end_character":16},"in_reply_to":"ba5da102_0959128e","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":28,"context_line":"plans that older than valid date (default 24h) to **SUPERSEDED** automatically."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an Watcher User, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update the **RECOMMENDED** state of all action plans"},{"line_number":32,"context_line":"to **SUPERSEDED** automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As an Watcher User, when the cluster data model has changed, I want to update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_6900ce34","line":31,"range":{"start_line":31,"start_character":14,"end_line":31,"end_character":76},"updated":"2016-11-03 17:04:26.000000000","message":"I want to update all the **other** action plans that are in the **RECOMMENDED** state","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":28,"context_line":"plans that older than valid date (default 24h) to **SUPERSEDED** automatically."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an Watcher User, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update the **RECOMMENDED** state of all action plans"},{"line_number":32,"context_line":"to **SUPERSEDED** automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As an Watcher User, when the cluster data model has changed, I want to update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_4c477f1d","line":31,"range":{"start_line":31,"start_character":14,"end_line":31,"end_character":76},"in_reply_to":"ba5da102_6900ce34","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_ec522c12","line":46,"range":{"start_line":46,"start_character":42,"end_line":46,"end_character":52},"updated":"2016-11-03 17:04:26.000000000","message":"it\u0027s not really a date here so I would instead call it actionplan_validityinterval","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_ccb9cfcd","line":46,"range":{"start_line":46,"start_character":42,"end_line":46,"end_character":52},"in_reply_to":"ba5da102_ec522c12","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":50,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"},{"line_number":51,"context_line":"  the state of action plan."},{"line_number":52,"context_line":"* Add a new class to capture the specific notification that indicates"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_c771c10d","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":73},"updated":"2016-11-03 17:04:26.000000000","message":"Polling doesn\u0027t seem to be the best idea here because it will cause 2 issues:\n- The enforcement of this SUPERSEDED state rule will only be eventually consistent instead of because fully consistent which is not what want\n- This causes a substantial amount requests that may cause some scalability concerns if we increase the job frequency in order to bridge the gap between eventual consistency and full consistency.\n\nIMHO, the best course of action here would be to implement some new notifications in Watcher about the action plan (see https://blueprints.launchpad.net/watcher/+spec/action-plan-versioned-notifications-api) that would then be consumed somewhere within Watcher to trigger the update of all other action plans that are RECOMMENDED to SUPERSEDED.","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":46,"context_line":"* Add a new config parameter **actionplan_expirydate** in watcher.conf,"},{"line_number":47,"context_line":"  the default value is **24** (hours)."},{"line_number":48,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":50,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"},{"line_number":51,"context_line":"  the state of action plan."},{"line_number":52,"context_line":"* Add a new class to capture the specific notification that indicates"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_473678e8","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":73},"in_reply_to":"ba5da102_c771c10d","updated":"2016-11-04 09:50:17.000000000","message":"There are two ways to update the state of actionplans. \none is periodical, the other is triggered by launch_action_plan.\ncode review:https://review.openstack.org/#/c/391383","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":50,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"},{"line_number":51,"context_line":"  the state of action plan."},{"line_number":52,"context_line":"* Add a new class to capture the specific notification that indicates"},{"line_number":53,"context_line":"  the cluster data model was changed (such as nodes/instances changed),"},{"line_number":54,"context_line":"  then trigger to check the state of action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Alternatives"},{"line_number":57,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_87aee92b","line":54,"range":{"start_line":52,"start_character":0,"end_line":54,"end_character":49},"updated":"2016-11-03 17:04:26.000000000","message":"Can you be more explicit about the format of the notification you want to implement here?\n\nIn any case, please make sure your work relies on https://blueprints.launchpad.net/watcher/+spec/watcher-notifications-ovo so all the notifications emitted by Watcher are versionned.","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":50,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"},{"line_number":51,"context_line":"  the state of action plan."},{"line_number":52,"context_line":"* Add a new class to capture the specific notification that indicates"},{"line_number":53,"context_line":"  the cluster data model was changed (such as nodes/instances changed),"},{"line_number":54,"context_line":"  then trigger to check the state of action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Alternatives"},{"line_number":57,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_5292b4a0","line":54,"range":{"start_line":52,"start_character":0,"end_line":54,"end_character":49},"in_reply_to":"ba5da102_87aee92b","updated":"2016-11-04 09:50:17.000000000","message":"I want to update the state when the cluster model changed.\nMaybe I\u0027ll add code in class \u0027NovaNotification\u0027","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":116,"context_line":"  **watcher/objects/action_plan.py**."},{"line_number":117,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":118,"context_line":"  **watcher/objects/action.py**."},{"line_number":119,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"},{"line_number":120,"context_line":"  DEFAULT section."},{"line_number":121,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":122,"context_line":"  action_plan/default.py**."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_07501931","line":119,"range":{"start_line":119,"start_character":10,"end_line":119,"end_character":31},"updated":"2016-11-03 17:04:26.000000000","message":"ditto s/actionplan_expirydate/actionplan_validityinterval","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"d86774132b026087fe77f8e45ad7061d6cc3563c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"  **watcher/objects/action_plan.py**."},{"line_number":117,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":118,"context_line":"  **watcher/objects/action.py**."},{"line_number":119,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"},{"line_number":120,"context_line":"  DEFAULT section."},{"line_number":121,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":122,"context_line":"  action_plan/default.py**."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_a810e7a9","line":119,"range":{"start_line":119,"start_character":10,"end_line":119,"end_character":31},"in_reply_to":"ba5da102_07501931","updated":"2016-11-05 02:47:44.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":117,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":118,"context_line":"  **watcher/objects/action.py**."},{"line_number":119,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"},{"line_number":120,"context_line":"  DEFAULT section."},{"line_number":121,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":122,"context_line":"  action_plan/default.py**."},{"line_number":123,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_071e596f","line":120,"range":{"start_line":120,"start_character":2,"end_line":120,"end_character":9},"updated":"2016-11-03 17:04:26.000000000","message":"IMHO, since the actionplan_state_check will be executed by the decision engine this should go into the [decision_engine] section.","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"d86774132b026087fe77f8e45ad7061d6cc3563c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":118,"context_line":"  **watcher/objects/action.py**."},{"line_number":119,"context_line":"* Add a **actionplan_expirydate** field to the **/etc/watcher/watcher.conf**"},{"line_number":120,"context_line":"  DEFAULT section."},{"line_number":121,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":122,"context_line":"  action_plan/default.py**."},{"line_number":123,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_c8251b0b","line":120,"range":{"start_line":120,"start_character":2,"end_line":120,"end_character":9},"in_reply_to":"ba5da102_071e596f","updated":"2016-11-05 02:47:44.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  DEFAULT section."},{"line_number":121,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":122,"context_line":"  action_plan/default.py**."},{"line_number":123,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."},{"line_number":124,"context_line":"* Add **CheckActionplanState** class in the file **watcher/common/service.py**."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_0253a717","line":123,"range":{"start_line":123,"start_character":10,"end_line":123,"end_character":20},"updated":"2016-11-03 17:04:26.000000000","message":"What is this for?","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  DEFAULT section."},{"line_number":121,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":122,"context_line":"  action_plan/default.py**."},{"line_number":123,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."},{"line_number":124,"context_line":"* Add **CheckActionplanState** class in the file **watcher/common/service.py**."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_b2779007","line":123,"range":{"start_line":123,"start_character":10,"end_line":123,"end_character":20},"in_reply_to":"ba5da102_0253a717","updated":"2016-11-04 09:50:17.000000000","message":"pls ref:https://review.openstack.org/#/c/391383\nthanks","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Dependencies"},{"line_number":128,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"None"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Testing"},{"line_number":133,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_42703fa4","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":4},"updated":"2016-11-03 17:04:26.000000000","message":"https://blueprints.launchpad.net/watcher/+spec/action-plan-versioned-notifications-api\n\nhttps://blueprints.launchpad.net/watcher/+spec/watcher-notifications-ovo","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"Dependencies"},{"line_number":128,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"None"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Testing"},{"line_number":133,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_f20ae878","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":4},"in_reply_to":"ba5da102_42703fa4","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d7ede04acd7be450351835a2624036b615541449","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"None"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. _watcher-notifications-ovo: https://blueprints.launchpad.net/watcher/+spec/watcher-notifications-ovo"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_2240ab06","line":153,"updated":"2016-11-03 17:04:26.000000000","message":"I don\u0027t see where this reference is used","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1f9d1764d67f565b6ef58ee63380c182190d49fb","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"None"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. _watcher-notifications-ovo: https://blueprints.launchpad.net/watcher/+spec/watcher-notifications-ovo"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba5da102_b2023071","line":153,"in_reply_to":"ba5da102_2240ab06","updated":"2016-11-04 09:50:17.000000000","message":"Done","commit_id":"7c5df4a0c8c6f20052f61e359b1edda7b27d7a20"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e6d6bffcf801ec301aea7a69b06d99ab0ca5bb81","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher User, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that are older than valid date (default 24h) to **SUPERSEDED**"},{"line_number":29,"context_line":"automatically."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_f6b16748","line":27,"range":{"start_line":27,"start_character":3,"end_line":27,"end_character":17},"updated":"2016-11-10 06:34:00.000000000","message":"Administrator is appropriate.\nhttp://docs.openstack.org/developer/watcher/glossary.html#administrator","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"cb1fe034ead9b16b14855ac0675bd6fbdcd745b2","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher User, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that are older than valid date (default 24h) to **SUPERSEDED**"},{"line_number":29,"context_line":"automatically."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a77a97e_e74cda78","line":27,"range":{"start_line":27,"start_character":3,"end_line":27,"end_character":17},"in_reply_to":"9a629dbe_b5388ed4","updated":"2016-11-15 02:35:08.000000000","message":"Administrator explained in the URL is responsible for watcher configurations and service management not only using watcher.\nI understood your Watcher User is not responsible for those tasks.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"cf332b6ab820760f077a71fdb3ef08b154a3473d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher User, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that are older than valid date (default 24h) to **SUPERSEDED**"},{"line_number":29,"context_line":"automatically."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_90d52f1d","line":27,"range":{"start_line":27,"start_character":3,"end_line":27,"end_character":17},"in_reply_to":"9a629dbe_b5388ed4","updated":"2016-11-15 16:58:45.000000000","message":"Hum, according to the Watcher policy file (see https://github.com/openstack/watcher/blob/master/etc/watcher/policy.json#L2), all Watcher users have to have the admin privileges, so Nakamura-san is more precise.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher User, I want to update the **RECOMMENDED** state of all action"},{"line_number":28,"context_line":"plans that are older than valid date (default 24h) to **SUPERSEDED**"},{"line_number":29,"context_line":"automatically."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_b5388ed4","line":27,"range":{"start_line":27,"start_character":3,"end_line":27,"end_character":17},"in_reply_to":"9a629dbe_f6b16748","updated":"2016-11-12 02:52:24.000000000","message":"The \u0027Watcher User\u0027 means all whom use watcher, not only Administrator.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e6d6bffcf801ec301aea7a69b06d99ab0ca5bb81","unresolved":false,"context_lines":[{"line_number":28,"context_line":"plans that are older than valid date (default 24h) to **SUPERSEDED**"},{"line_number":29,"context_line":"automatically."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an Watcher User, after the recommended action plan is launched"},{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_16afbbe2","line":31,"range":{"start_line":31,"start_character":3,"end_line":31,"end_character":18},"updated":"2016-11-10 06:34:00.000000000","message":"same as above.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":12087,"name":"Bruno Grazioli","email":"gaea@zhaw.ch","username":"brunograz"},"change_message_id":"e714ed89e9f0dea8c8bc781ecf8b1ba19fc6e13c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an Watcher User, when the cluster data model has changed, I want to"},{"line_number":36,"context_line":"update all the **other** action plans that are in the **RECOMMENDED**"},{"line_number":37,"context_line":"state automatically."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_3423bba8","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":59},"updated":"2016-11-10 16:03:02.000000000","message":"even if the cluster data model changes the action plan could still be applicable. It does make sense to have this use case but it would be also interesting to check if the actions are still valid.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e6d6bffcf801ec301aea7a69b06d99ab0ca5bb81","unresolved":false,"context_lines":[{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an Watcher User, when the cluster data model has changed, I want to"},{"line_number":36,"context_line":"update all the **other** action plans that are in the **RECOMMENDED**"},{"line_number":37,"context_line":"state automatically."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_56b5b32e","line":35,"range":{"start_line":35,"start_character":3,"end_line":35,"end_character":18},"updated":"2016-11-10 06:34:00.000000000","message":"same as above.\nhttp://docs.openstack.org/developer/watcher/glossary.html#administrator","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"cf332b6ab820760f077a71fdb3ef08b154a3473d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an Watcher User, when the cluster data model has changed, I want to"},{"line_number":36,"context_line":"update all the **other** action plans that are in the **RECOMMENDED**"},{"line_number":37,"context_line":"state automatically."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_70eb3bdc","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":59},"in_reply_to":"9a629dbe_3423bba8","updated":"2016-11-15 16:58:45.000000000","message":"Yes this is precisely what we eventually want to ensure. However, the fact that we cannot guarantee such a thing for now is a problem for the stability of an infrastructure. This is why we should first make sure that all action plans are relevant upon being executed. Doing anything smarter would have to be implemented later in another BP and any input on the matter would be much appreciated :).\n\nMy first easy step on the matter would be to persist the cluster data model within the resulting action plan whenever we execute a strategy. We could then compare the stored model against the current cluster data model and if any change is noticed, we would consider the whole thing as SUPERSEDED. However, models are implemented as plugins and would also have to say which plugin(s) have to be sored and compared.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an Watcher User, when the cluster data model has changed, I want to"},{"line_number":36,"context_line":"update all the **other** action plans that are in the **RECOMMENDED**"},{"line_number":37,"context_line":"state automatically."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_159e9ab8","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":59},"in_reply_to":"9a629dbe_3423bba8","updated":"2016-11-12 02:52:24.000000000","message":"will discuss this at the irc.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":12087,"name":"Bruno Grazioli","email":"gaea@zhaw.ch","username":"brunograz"},"change_message_id":"88206e95129b18170074c64e8b452e8217b4124c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an Watcher User, when the cluster data model has changed, I want to"},{"line_number":36,"context_line":"update all the **other** action plans that are in the **RECOMMENDED**"},{"line_number":37,"context_line":"state automatically."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a77a97e_ec09e12d","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":59},"in_reply_to":"9a629dbe_70eb3bdc","updated":"2016-11-16 08:42:36.000000000","message":"+1","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"a6fe5867541b2d1ed4a4e072bca34bd8f1d79556","unresolved":false,"context_lines":[{"line_number":32,"context_line":"successfully, I want to update all the **other** action plans that are in"},{"line_number":33,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As an Watcher User, when the cluster data model has changed, I want to"},{"line_number":36,"context_line":"update all the **other** action plans that are in the **RECOMMENDED**"},{"line_number":37,"context_line":"state automatically."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a77a97e_fae2412e","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":59},"in_reply_to":"9a629dbe_70eb3bdc","updated":"2016-11-17 03:04:24.000000000","message":"We can distinguish action plans by audit.scope. Only when the resource in the audit scope has changed, we updatethe state of action plan. \nIf audit.scope is null, we still update the state of action plan when\nany resource is changed.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"d30b712992c122bd3b8cfb0bc045ffea2b8e075a","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_5890b0ec","line":46,"updated":"2016-11-09 08:50:49.000000000","message":"In this paragraph, you have to explain clearly how to handle 2 things (What you wrote in the section is more \u0027Work items\u0027) : \n\n1. The new configuration parameter: What is, for your point of   view, the best way to handle the action plan validity interval in Watcher ? You wrote about ASScheduler mechanism, but can you explain exactly the workflow ? What will be the behavior of such solution on Watcher restarting ?\n\n2. Any state update of Watcher objects (CDM, other action plan, ....).  You wrote about notification events, but can you explain exactly the workflow ? Which module will send notifications, which ones will receive them and update action plan state ?","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_b5940e8b","line":46,"in_reply_to":"9a629dbe_5890b0ec","updated":"2016-11-12 02:52:24.000000000","message":"Done","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"d30b712992c122bd3b8cfb0bc045ffea2b8e075a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_18e4780b","line":48,"range":{"start_line":48,"start_character":31,"end_line":48,"end_character":58},"updated":"2016-11-09 08:50:49.000000000","message":"This parameter named is too long. Can you name it \u0027action_plan_validity\u0027 and explain in the description that it is a interval value.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_f5e1262b","line":48,"range":{"start_line":48,"start_character":31,"end_line":48,"end_character":58},"in_reply_to":"9a629dbe_18e4780b","updated":"2016-11-12 02:52:24.000000000","message":"Done","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e6d6bffcf801ec301aea7a69b06d99ab0ca5bb81","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_b6f1af03","line":49,"range":{"start_line":49,"start_character":6,"end_line":49,"end_character":19},"updated":"2016-11-10 06:34:00.000000000","message":"Is the parameter mandatory?\nWhat is the type of the parameter, oslo_config.types.Integer?","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"cb1fe034ead9b16b14855ac0675bd6fbdcd745b2","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a77a97e_c748be5e","line":49,"range":{"start_line":49,"start_character":6,"end_line":49,"end_character":19},"in_reply_to":"9a629dbe_75119603","updated":"2016-11-15 02:35:08.000000000","message":"Could you please write those things in spec?","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan** and the **Action**."},{"line_number":48,"context_line":"* Add a new config parameter **actionplan_validityinterval** in watcher.conf,"},{"line_number":49,"context_line":"  the default value is **24** (hours)."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_75119603","line":49,"range":{"start_line":49,"start_character":6,"end_line":49,"end_character":19},"in_reply_to":"9a629dbe_b6f1af03","updated":"2016-11-12 02:52:24.000000000","message":"It\u0027s not mandatory to define in the watcher.conf.\nthe type is int","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"d30b712992c122bd3b8cfb0bc045ffea2b8e075a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Data model impact"},{"line_number":65,"context_line":"-----------------"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"None"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"REST API impact"},{"line_number":70,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_f87d041d","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":4},"updated":"2016-11-09 08:50:49.000000000","message":"yes, you should add a new param in action plan object.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Data model impact"},{"line_number":65,"context_line":"-----------------"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"None"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"REST API impact"},{"line_number":70,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_15d69a27","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":4},"in_reply_to":"9a629dbe_f87d041d","updated":"2016-11-12 02:52:24.000000000","message":"It isn\u0027t a new param, It\u0027s a superseded state in state field.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"d30b712992c122bd3b8cfb0bc045ffea2b8e075a","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":119,"context_line":"  **watcher/objects/action_plan.py**."},{"line_number":120,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":121,"context_line":"  **watcher/objects/action.py**."},{"line_number":122,"context_line":"* Add a **actionplan_validityinterval** field to the"},{"line_number":123,"context_line":"  **/etc/watcher/watcher.conf**."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_587ef0ae","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":32},"updated":"2016-11-09 08:50:49.000000000","message":"why ?","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":119,"context_line":"  **watcher/objects/action_plan.py**."},{"line_number":120,"context_line":"* Add a **SUPERSEDED** state to the class **State** in the file"},{"line_number":121,"context_line":"  **watcher/objects/action.py**."},{"line_number":122,"context_line":"* Add a **actionplan_validityinterval** field to the"},{"line_number":123,"context_line":"  **/etc/watcher/watcher.conf**."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_d59ee261","line":121,"range":{"start_line":120,"start_character":0,"end_line":121,"end_character":32},"in_reply_to":"9a629dbe_587ef0ae","updated":"2016-11-12 02:52:24.000000000","message":"The action object also has state field as action plan object .","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e6d6bffcf801ec301aea7a69b06d99ab0ca5bb81","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  **/etc/watcher/watcher.conf**."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":125,"context_line":"  action_plan/default.py**."},{"line_number":126,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."},{"line_number":127,"context_line":"* Add check_state code in the file **watcher/decision_engine/scheduling.py**."},{"line_number":128,"context_line":"* Add check_state code in the file **watcher/decision_engine/model/"},{"line_number":129,"context_line":"  notification/nova.py**."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_f6c6c798","line":126,"range":{"start_line":126,"start_character":54,"end_line":126,"end_character":58},"updated":"2016-11-10 06:34:00.000000000","message":"folder or directory.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"cb1fe034ead9b16b14855ac0675bd6fbdcd745b2","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  **/etc/watcher/watcher.conf**."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":125,"context_line":"  action_plan/default.py**."},{"line_number":126,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."},{"line_number":127,"context_line":"* Add check_state code in the file **watcher/decision_engine/scheduling.py**."},{"line_number":128,"context_line":"* Add check_state code in the file **watcher/decision_engine/model/"},{"line_number":129,"context_line":"  notification/nova.py**."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a77a97e_0779d693","line":126,"range":{"start_line":126,"start_character":54,"end_line":126,"end_character":58},"in_reply_to":"9a629dbe_957f0a14","updated":"2016-11-15 02:35:08.000000000","message":"Not done.","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9508fd638ec01796d27d3ee6aa9543569d09a82d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  **/etc/watcher/watcher.conf**."},{"line_number":124,"context_line":"* Update the **DefaultActionPlanHandler** class in **watcher/applier/"},{"line_number":125,"context_line":"  action_plan/default.py**."},{"line_number":126,"context_line":"* Add a **manager.py** file to the **watcher/common** fold."},{"line_number":127,"context_line":"* Add check_state code in the file **watcher/decision_engine/scheduling.py**."},{"line_number":128,"context_line":"* Add check_state code in the file **watcher/decision_engine/model/"},{"line_number":129,"context_line":"  notification/nova.py**."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a629dbe_957f0a14","line":126,"range":{"start_line":126,"start_character":54,"end_line":126,"end_character":58},"in_reply_to":"9a629dbe_f6c6c798","updated":"2016-11-12 02:52:24.000000000","message":"Done","commit_id":"b2233bf2ac01dba692e2ece694dafee86fa00afa"},{"author":{"_account_id":23210,"name":"YumengBao","email":"bao.yumeng@zte.com.cn","username":"YumengBao"},"change_message_id":"45e1ef98366f4e6189d420d2a928c853a9a9326a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"not an expiry date or event that can invalidate the action plan so far."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"It should be possible to add a new **SUPERSEDED** state for action plan and"},{"line_number":22,"context_line":"action."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a77a97e_5c0c0aed","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":7},"updated":"2016-11-17 08:48:03.000000000","message":"Is seems this bp only talks about adding new state for action plan, should we delete \"action\" here?","commit_id":"653abd42bda6c5c7a546c6b06296c948a075a84b"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"55f7ea3d79e41c9d2dae1104c66091e138137ac6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"not an expiry date or event that can invalidate the action plan so far."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"It should be possible to add a new **SUPERSEDED** state for action plan and"},{"line_number":22,"context_line":"action."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a77a97e_975726c9","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":7},"in_reply_to":"7a77a97e_5c0c0aed","updated":"2016-11-18 07:57:03.000000000","message":"Done","commit_id":"653abd42bda6c5c7a546c6b06296c948a075a84b"},{"author":{"_account_id":23210,"name":"YumengBao","email":"bao.yumeng@zte.com.cn","username":"YumengBao"},"change_message_id":"45e1ef98366f4e6189d420d2a928c853a9a9326a","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher Administrator, I want to update the **RECOMMENDED** state of"},{"line_number":28,"context_line":"all action plans that are older than valid date (default 24h) to"},{"line_number":29,"context_line":"**SUPERSEDED** automatically."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":32,"context_line":"successfully, I want to update all the **related** action plans that are in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a77a97e_0654ff1e","line":29,"range":{"start_line":27,"start_character":28,"end_line":29,"end_character":29},"updated":"2016-11-17 08:48:03.000000000","message":"I suppose that you want this work done automatically by watcher. I would recommend rewrite the above sentence as \"I want watcher to update the state of any action plan/action from **RECOMMENDED** to **SUPERSEDED** automatically if the action plan/action has expired (default expiry date: 24 hours).\"","commit_id":"653abd42bda6c5c7a546c6b06296c948a075a84b"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"55f7ea3d79e41c9d2dae1104c66091e138137ac6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"----------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a Watcher Administrator, I want to update the **RECOMMENDED** state of"},{"line_number":28,"context_line":"all action plans that are older than valid date (default 24h) to"},{"line_number":29,"context_line":"**SUPERSEDED** automatically."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":32,"context_line":"successfully, I want to update all the **related** action plans that are in"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a77a97e_179f965f","line":29,"range":{"start_line":27,"start_character":28,"end_line":29,"end_character":29},"in_reply_to":"7a77a97e_0654ff1e","updated":"2016-11-18 07:57:03.000000000","message":"Done","commit_id":"653abd42bda6c5c7a546c6b06296c948a075a84b"},{"author":{"_account_id":12087,"name":"Bruno Grazioli","email":"gaea@zhaw.ch","username":"brunograz"},"change_message_id":"71391a4a19430c35815b2bd1b18b82384c5df8e8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* Currently, when receives the specific event (such as nova notification"},{"line_number":59,"context_line":"  event_type:service.update, instance.update, instance.delete.end), the"},{"line_number":60,"context_line":"  decision engine will update the cluster data model. We need to add the state"},{"line_number":61,"context_line":"  of action plan updates to this process. To identify the action plan affected"},{"line_number":62,"context_line":"  by the cluster data model change, we distinguish by **audit.scope** field."},{"line_number":63,"context_line":"  Only when the cluster data in the audit scope has changed, we update the"},{"line_number":64,"context_line":"  state of action plan. If audit.scope is null, we still update the state of"},{"line_number":65,"context_line":"  action plan when any cluster data is changed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a77a97e_3c910e48","line":62,"range":{"start_line":61,"start_character":42,"end_line":62,"end_character":76},"updated":"2016-11-17 08:41:33.000000000","message":"Will this be implemented in a different blueprint or in the PS 391383?","commit_id":"653abd42bda6c5c7a546c6b06296c948a075a84b"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"55f7ea3d79e41c9d2dae1104c66091e138137ac6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* Currently, when receives the specific event (such as nova notification"},{"line_number":59,"context_line":"  event_type:service.update, instance.update, instance.delete.end), the"},{"line_number":60,"context_line":"  decision engine will update the cluster data model. We need to add the state"},{"line_number":61,"context_line":"  of action plan updates to this process. To identify the action plan affected"},{"line_number":62,"context_line":"  by the cluster data model change, we distinguish by **audit.scope** field."},{"line_number":63,"context_line":"  Only when the cluster data in the audit scope has changed, we update the"},{"line_number":64,"context_line":"  state of action plan. If audit.scope is null, we still update the state of"},{"line_number":65,"context_line":"  action plan when any cluster data is changed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a77a97e_f7493a32","line":62,"range":{"start_line":61,"start_character":42,"end_line":62,"end_character":76},"in_reply_to":"7a77a97e_3c910e48","updated":"2016-11-18 07:57:03.000000000","message":"Will be implemented in the PS 391383","commit_id":"653abd42bda6c5c7a546c6b06296c948a075a84b"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"4545110a4d8bd721f039189ba36354decd07c40b","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"As a Watcher Administrator, I want watcher to update the state of any action"},{"line_number":27,"context_line":"plan from **RECOMMENDED** to **SUPERSEDED** automatically if the action plan"},{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_1876a9d8","line":28,"range":{"start_line":28,"start_character":28,"end_line":28,"end_character":32},"updated":"2016-11-29 16:26:09.000000000","message":"s/date/time","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"As a Watcher Administrator, I want watcher to update the state of any action"},{"line_number":27,"context_line":"plan from **RECOMMENDED** to **SUPERSEDED** automatically if the action plan"},{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_91699928","line":28,"range":{"start_line":28,"start_character":28,"end_line":28,"end_character":32},"in_reply_to":"5a74a57a_1876a9d8","updated":"2016-11-30 07:30:26.000000000","message":"Done","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"4545110a4d8bd721f039189ba36354decd07c40b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"},{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_78023d0d","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":48},"updated":"2016-11-29 16:26:09.000000000","message":"what does a \"related\" action plans means in this case ?","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"},{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_f15e4d78","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":48},"in_reply_to":"5a74a57a_78023d0d","updated":"2016-11-30 07:30:26.000000000","message":"Done","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"32005d5c71fe092481da27a921602dad275ec93d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"},{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"},{"line_number":35,"context_line":"to update all the **related** action plans that are in the **RECOMMENDED**"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_06d66427","line":32,"range":{"start_line":31,"start_character":14,"end_line":32,"end_character":40},"updated":"2016-11-29 09:36:05.000000000","message":"which state will be updated to all related action plans, If a recommanded action plan is launched successfully?","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"4545110a4d8bd721f039189ba36354decd07c40b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"},{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"},{"line_number":35,"context_line":"to update all the **related** action plans that are in the **RECOMMENDED**"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_3b0fdf2f","line":32,"range":{"start_line":31,"start_character":14,"end_line":32,"end_character":40},"in_reply_to":"5a74a57a_06d66427","updated":"2016-11-29 16:26:09.000000000","message":"I suppose they will be superseded","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"has expired (default expiry date: 24 hours)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As a Watcher Administrator, after the recommended action plan is launched"},{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"},{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"},{"line_number":35,"context_line":"to update all the **related** action plans that are in the **RECOMMENDED**"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_3159a58f","line":32,"range":{"start_line":31,"start_character":14,"end_line":32,"end_character":40},"in_reply_to":"5a74a57a_3b0fdf2f","updated":"2016-11-30 07:30:26.000000000","message":"Done","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"32005d5c71fe092481da27a921602dad275ec93d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"successfully, I want to update all the **related** action plans that are in"},{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"},{"line_number":35,"context_line":"to update all the **related** action plans that are in the **RECOMMENDED**"},{"line_number":36,"context_line":"state automatically."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_a67a1022","line":35,"range":{"start_line":34,"start_character":69,"end_line":35,"end_character":72},"updated":"2016-11-29 09:36:05.000000000","message":"The same question.\nWhich state will be updated to all related action plans in this case?","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"4545110a4d8bd721f039189ba36354decd07c40b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"},{"line_number":35,"context_line":"to update all the **related** action plans that are in the **RECOMMENDED**"},{"line_number":36,"context_line":"state automatically."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_1b406335","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":27},"updated":"2016-11-29 16:26:09.000000000","message":"ditto","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"the **RECOMMENDED** state automatically."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"As a Watcher Administrator, when the cluster data model has changed, I want"},{"line_number":35,"context_line":"to update all the **related** action plans that are in the **RECOMMENDED**"},{"line_number":36,"context_line":"state automatically."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_515e2177","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":27},"in_reply_to":"5a74a57a_1b406335","updated":"2016-11-30 07:30:26.000000000","message":"Done","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"32005d5c71fe092481da27a921602dad275ec93d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan**."},{"line_number":47,"context_line":"* Add a new config parameter **action_plan_validity**, This parameter is"},{"line_number":48,"context_line":"  used to set the time interval for checking the state of action plan."},{"line_number":49,"context_line":"  Its type is Integer and the value is **24** (hours) by default."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_46821cc9","line":47,"range":{"start_line":47,"start_character":31,"end_line":47,"end_character":51},"updated":"2016-11-29 09:36:05.000000000","message":"I think we can use \"action_plan_expire\" instead of \"action_plan_validity\".","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan**."},{"line_number":47,"context_line":"* Add a new config parameter **action_plan_validity**, This parameter is"},{"line_number":48,"context_line":"  used to set the time interval for checking the state of action plan."},{"line_number":49,"context_line":"  Its type is Integer and the value is **24** (hours) by default."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_31d0c5c9","line":47,"range":{"start_line":47,"start_character":31,"end_line":47,"end_character":51},"in_reply_to":"5a74a57a_46821cc9","updated":"2016-11-30 07:30:26.000000000","message":"action_plan_expiry","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"4545110a4d8bd721f039189ba36354decd07c40b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan**."},{"line_number":47,"context_line":"* Add a new config parameter **action_plan_validity**, This parameter is"},{"line_number":48,"context_line":"  used to set the time interval for checking the state of action plan."},{"line_number":49,"context_line":"  Its type is Integer and the value is **24** (hours) by default."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"  **APScheduler** is a Python library that can schedule a job to be executed"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_9be71346","line":49,"range":{"start_line":49,"start_character":14,"end_line":49,"end_character":21},"updated":"2016-11-29 16:26:09.000000000","message":"a timestamp would probably be more accurate than an integer","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* Add a new state **SUPERSEDED** for the **Action Plan**."},{"line_number":47,"context_line":"* Add a new config parameter **action_plan_validity**, This parameter is"},{"line_number":48,"context_line":"  used to set the time interval for checking the state of action plan."},{"line_number":49,"context_line":"  Its type is Integer and the value is **24** (hours) by default."},{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"  **APScheduler** is a Python library that can schedule a job to be executed"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_d14a31ac","line":49,"range":{"start_line":49,"start_character":14,"end_line":49,"end_character":21},"in_reply_to":"5a74a57a_9be71346","updated":"2016-11-30 07:30:26.000000000","message":"This is a time interval from the creation time of an action plan to the current time, so I think it is appropriate to use integer.","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"32005d5c71fe092481da27a921602dad275ec93d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"  **APScheduler** is a Python library that can schedule a job to be executed"},{"line_number":53,"context_line":"  later, either just once or periodically. It has been used in the continuous"},{"line_number":54,"context_line":"  audits, we just add our new job in the scheduler."},{"line_number":55,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check the state"},{"line_number":56,"context_line":"  of action plan."},{"line_number":57,"context_line":"* Currently, when receives the specific event (such as nova notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_d062613d","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":50},"updated":"2016-11-29 09:36:05.000000000","message":"Is this period_task\u0027s interval configurable?","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"7d88a3f2bc82903403f4598c0d354e2c44a6915d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Add a new **CheckActionplanState** class. In this class we use the"},{"line_number":51,"context_line":"  **APScheduler** library to check the state of action plan periodically."},{"line_number":52,"context_line":"  **APScheduler** is a Python library that can schedule a job to be executed"},{"line_number":53,"context_line":"  later, either just once or periodically. It has been used in the continuous"},{"line_number":54,"context_line":"  audits, we just add our new job in the scheduler."},{"line_number":55,"context_line":"* Modify the **DefaultActionPlanHandler** class, trigger to check the state"},{"line_number":56,"context_line":"  of action plan."},{"line_number":57,"context_line":"* Currently, when receives the specific event (such as nova notification"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a74a57a_51d541b7","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":50},"in_reply_to":"5a74a57a_d062613d","updated":"2016-11-30 07:30:26.000000000","message":"Done","commit_id":"92412ec0ce31e2d816bf272cef300a6ca6e4aa18"}]}
