)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"af94ead8bdce81bed6bb48b6c27bcd2d9cd41acd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"stale the action plan"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Check the creation time of the actionplan,"},{"line_number":10,"context_line":"and set the state to SUPERSEDED if it is expiry"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I900e8dc5011dec4cffd58913b9c5083a6131d70d"},{"line_number":13,"context_line":"Implements: blueprint stale-action-plan"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a30ddce_43bc39dc","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":47},"updated":"2017-03-09 15:27:19.000000000","message":"has expired","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"696022182d88323bdf70a5e1f681eedd946d26d8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"stale the action plan"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Check the creation time of the actionplan,"},{"line_number":10,"context_line":"and set the state to SUPERSEDED if it is expiry"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I900e8dc5011dec4cffd58913b9c5083a6131d70d"},{"line_number":13,"context_line":"Implements: blueprint stale-action-plan"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a30ddce_6d53cd6b","line":10,"range":{"start_line":10,"start_character":38,"end_line":10,"end_character":47},"in_reply_to":"9a30ddce_43bc39dc","updated":"2017-03-10 04:06:11.000000000","message":"Done","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"}],"releasenotes/notes/stale-action-plan-b6a6b08df873c128.yaml":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"af94ead8bdce81bed6bb48b6c27bcd2d9cd41acd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Check the creation time of the action plan, "},{"line_number":4,"context_line":"    and set the state to SUPERSEDED if it is expiry."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9a30ddce_0c9b5373","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":51},"updated":"2017-03-09 15:27:19.000000000","message":"nit: expired","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"af94ead8bdce81bed6bb48b6c27bcd2d9cd41acd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Check the creation time of the action plan, "},{"line_number":4,"context_line":"    and set the state to SUPERSEDED if it is expiry."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9a30ddce_6c804ff8","line":4,"range":{"start_line":4,"start_character":12,"end_line":4,"end_character":15},"updated":"2017-03-09 15:27:19.000000000","message":"nit: its","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"696022182d88323bdf70a5e1f681eedd946d26d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Check the creation time of the action plan, "},{"line_number":4,"context_line":"    and set the state to SUPERSEDED if it is expiry."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9a30ddce_0d589189","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":51},"in_reply_to":"9a30ddce_0c9b5373","updated":"2017-03-10 04:06:11.000000000","message":"Done","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"696022182d88323bdf70a5e1f681eedd946d26d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Check the creation time of the action plan, "},{"line_number":4,"context_line":"    and set the state to SUPERSEDED if it is expiry."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9a30ddce_2d5d5579","line":4,"range":{"start_line":4,"start_character":12,"end_line":4,"end_character":15},"in_reply_to":"9a30ddce_6c804ff8","updated":"2017-03-10 04:06:11.000000000","message":"Done","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"}],"watcher/conf/decision_engine.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"af94ead8bdce81bed6bb48b6c27bcd2d9cd41acd","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027execute strategies\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027action_plan_expiry\u0027,"},{"line_number":46,"context_line":"               default\u003d24,"},{"line_number":47,"context_line":"               help\u003d\u0027An expiry date(hours). We invalidate the action plan \u0027"},{"line_number":48,"context_line":"                    \u0027if its created older than the expiry date.\u0027),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":50,"context_line":"               default\u003d30*60,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a30ddce_c3b10949","line":47,"range":{"start_line":47,"start_character":31,"end_line":47,"end_character":35},"updated":"2017-03-09 15:27:19.000000000","message":"It\u0027s not a date, it\u0027s a validity time interval/timespan","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"696022182d88323bdf70a5e1f681eedd946d26d8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027execute strategies\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027action_plan_expiry\u0027,"},{"line_number":46,"context_line":"               default\u003d24,"},{"line_number":47,"context_line":"               help\u003d\u0027An expiry date(hours). We invalidate the action plan \u0027"},{"line_number":48,"context_line":"                    \u0027if its created older than the expiry date.\u0027),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":50,"context_line":"               default\u003d30*60,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a30ddce_ad72250f","line":47,"range":{"start_line":47,"start_character":31,"end_line":47,"end_character":35},"in_reply_to":"9a30ddce_c3b10949","updated":"2017-03-10 04:06:11.000000000","message":"Done","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"af94ead8bdce81bed6bb48b6c27bcd2d9cd41acd","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027execute strategies\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027action_plan_expiry\u0027,"},{"line_number":46,"context_line":"               default\u003d24,"},{"line_number":47,"context_line":"               help\u003d\u0027An expiry date(hours). We invalidate the action plan \u0027"},{"line_number":48,"context_line":"                    \u0027if its created older than the expiry date.\u0027),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":50,"context_line":"               default\u003d30*60,"},{"line_number":51,"context_line":"               help\u003d\u0027Seconds between running periodic tasks.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a30ddce_ec751ffa","line":48,"range":{"start_line":47,"start_character":44,"end_line":48,"end_character":62},"updated":"2017-03-09 15:27:19.000000000","message":"How about rephrasing it to something like:\n\n    Watcher invalidates any action plan for which its creation\n    time - whose number of hours has been offset by this value - \n    is older that the current time.","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"696022182d88323bdf70a5e1f681eedd946d26d8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    \u0027execute strategies\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027action_plan_expiry\u0027,"},{"line_number":46,"context_line":"               default\u003d24,"},{"line_number":47,"context_line":"               help\u003d\u0027An expiry date(hours). We invalidate the action plan \u0027"},{"line_number":48,"context_line":"                    \u0027if its created older than the expiry date.\u0027),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":50,"context_line":"               default\u003d30*60,"},{"line_number":51,"context_line":"               help\u003d\u0027Seconds between running periodic tasks.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a30ddce_8d7561fb","line":48,"range":{"start_line":47,"start_character":44,"end_line":48,"end_character":62},"in_reply_to":"9a30ddce_ec751ffa","updated":"2017-03-10 04:06:11.000000000","message":"Done","commit_id":"edf77969911566174e83bab70ba4ffc232353a75"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"01d19e6bb2d847f438f136e41031846f6b73a12b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                    \u0027action plan for which its creation time \u0027"},{"line_number":49,"context_line":"                    \u0027-whose number of hours has been offset by this value-\u0027"},{"line_number":50,"context_line":"                    \u0027 is older that the current time.\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":52,"context_line":"               default\u003d30*60,"},{"line_number":53,"context_line":"               help\u003d\u0027Seconds between running periodic tasks.\u0027)"},{"line_number":54,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_f2007568","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":39},"updated":"2017-03-10 06:54:33.000000000","message":"Where are you using this parameter?","commit_id":"b89b5f3ba4d214eae0a58acc75efb408514e0286"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"fc0625316ae1489a750f33918a19103a0c621847","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                    \u0027action plan for which its creation time \u0027"},{"line_number":49,"context_line":"                    \u0027-whose number of hours has been offset by this value-\u0027"},{"line_number":50,"context_line":"                    \u0027 is older that the current time.\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":52,"context_line":"               default\u003d30*60,"},{"line_number":53,"context_line":"               help\u003d\u0027Seconds between running periodic tasks.\u0027)"},{"line_number":54,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a30ddce_8bb9c417","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":39},"in_reply_to":"9a30ddce_f2007568","updated":"2017-03-10 08:35:17.000000000","message":"Thank you Hidekazu,\nMy mistake, missing a file","commit_id":"b89b5f3ba4d214eae0a58acc75efb408514e0286"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"4cbb66a610db78659948010b1fb7ba2c14981194","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    \u0027 is older that the current time.\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":52,"context_line":"               default\u003d30*60,"},{"line_number":53,"context_line":"               help\u003d\u0027Seconds between running periodic tasks.\u0027)"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"WATCHER_CONTINUOUS_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"7a25e98e_bac10b31","line":53,"range":{"start_line":53,"start_character":21,"end_line":53,"end_character":60},"updated":"2017-03-14 03:23:40.000000000","message":"This is not clear. How about the following:\n\u0027Interval (in seconds) for checking action plan expiry.\u0027 along with the help of continuous_audit_interval ?","commit_id":"359363e5987aeed85769ea23a8866a2936326e86"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"2692a25f9e81cf80349faddb69b198ef5fa8000e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    \u0027 is older that the current time.\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027check_periodic_interval\u0027,"},{"line_number":52,"context_line":"               default\u003d30*60,"},{"line_number":53,"context_line":"               help\u003d\u0027Seconds between running periodic tasks.\u0027)"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"WATCHER_CONTINUOUS_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"5a22e58a_2b095d32","line":53,"range":{"start_line":53,"start_character":21,"end_line":53,"end_character":60},"in_reply_to":"7a25e98e_bac10b31","updated":"2017-03-14 06:46:07.000000000","message":"It\u0027s better:)","commit_id":"359363e5987aeed85769ea23a8866a2936326e86"}],"watcher/decision_engine/scheduling.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"ed25dc9d09ef173664754ba4d083e5f3c5501fae","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        if CONF.watcher_decision_engine.action_plan_expiry !\u003d 0:"},{"line_number":86,"context_line":"            self.add_job(ap_manager.check_expired, \u0027interval\u0027,"},{"line_number":87,"context_line":"                         args\u003d[context.make_context()],"},{"line_number":88,"context_line":"                         seconds\u003dinterval,"},{"line_number":89,"context_line":"                         next_run_time\u003ddatetime.datetime.now())"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a1ff146_42d2b3d3","line":88,"range":{"start_line":88,"start_character":25,"end_line":88,"end_character":41},"updated":"2017-03-16 01:11:42.000000000","message":"I can not find seconds option in apscheduler code:\nhttps://github.com/agronholm/apscheduler/blob/master/apscheduler/schedulers/base.py#L361-L364","commit_id":"75679f06a60d029ab5f70a1d2fc9d15bc214fa67"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"80f5e981bf10524a6aa912cd8b2bd1b146201060","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        if CONF.watcher_decision_engine.action_plan_expiry !\u003d 0:"},{"line_number":86,"context_line":"            self.add_job(ap_manager.check_expired, \u0027interval\u0027,"},{"line_number":87,"context_line":"                         args\u003d[context.make_context()],"},{"line_number":88,"context_line":"                         seconds\u003dinterval,"},{"line_number":89,"context_line":"                         next_run_time\u003ddatetime.datetime.now())"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def start(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a1ff146_346ec32f","line":88,"range":{"start_line":88,"start_character":25,"end_line":88,"end_character":41},"in_reply_to":"3a1ff146_42d2b3d3","updated":"2017-03-17 06:41:51.000000000","message":"I think it\u0027s the trigger_args.\nhttps://github.com/agronholm/apscheduler/blob/master/apscheduler/triggers/interval.py#L15-L20","commit_id":"75679f06a60d029ab5f70a1d2fc9d15bc214fa67"}],"watcher/objects/action_plan.py":[{"author":{"_account_id":23871,"name":"MargaritaShakhova","email":"shakhova.margarita@gmail.com","username":"MargaritaShakhova"},"change_message_id":"2dc4c0847c3aec59cd78d44a7f72710855b1b648","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        action_plans \u003d objects.ActionPlan.list("},{"line_number":335,"context_line":"            context, filters\u003dfilters)"},{"line_number":336,"context_line":"        for action_plan in action_plans:"},{"line_number":337,"context_line":"            action_plan.state \u003d State.SUPERSEDED"},{"line_number":338,"context_line":"            action_plan.save()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_d99d18bd","line":337,"range":{"start_line":337,"start_character":38,"end_line":337,"end_character":48},"updated":"2017-03-06 08:19:24.000000000","message":"should this state be added to the State class, too?","commit_id":"e3d2bf28ffd79198bb8afb078bfe58221eeda948"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"30ee34094b7e6e0d060dd5b7f6c53ff1618b20c6","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        action_plans \u003d objects.ActionPlan.list("},{"line_number":335,"context_line":"            context, filters\u003dfilters)"},{"line_number":336,"context_line":"        for action_plan in action_plans:"},{"line_number":337,"context_line":"            action_plan.state \u003d State.SUPERSEDED"},{"line_number":338,"context_line":"            action_plan.save()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_fc79ea93","line":337,"range":{"start_line":337,"start_character":38,"end_line":337,"end_character":48},"in_reply_to":"ba2be162_d99d18bd","updated":"2017-03-06 08:52:46.000000000","message":"yes, this state has been added.\n\nclass State(object):\n    RECOMMENDED \u003d \u0027RECOMMENDED\u0027\n    PENDING \u003d \u0027PENDING\u0027\n    ONGOING \u003d \u0027ONGOING\u0027\n    FAILED \u003d \u0027FAILED\u0027\n    SUCCEEDED \u003d \u0027SUCCEEDED\u0027\n    DELETED \u003d \u0027DELETED\u0027\n    CANCELLED \u003d \u0027CANCELLED\u0027\n    SUPERSEDED \u003d \u0027SUPERSEDED\u0027","commit_id":"e3d2bf28ffd79198bb8afb078bfe58221eeda948"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"ed25dc9d09ef173664754ba4d083e5f3c5501fae","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            hours\u003daction_plan_expiry)"},{"line_number":332,"context_line":"        filters \u003d {\u0027state__eq\u0027: State.RECOMMENDED,"},{"line_number":333,"context_line":"                   \u0027created_at__lt\u0027: date_created}"},{"line_number":334,"context_line":"        action_plans \u003d objects.ActionPlan.list("},{"line_number":335,"context_line":"            context, filters\u003dfilters)"},{"line_number":336,"context_line":"        for action_plan in action_plans:"},{"line_number":337,"context_line":"            action_plan.state \u003d State.SUPERSEDED"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a1ff146_e2ee3fb3","line":334,"range":{"start_line":334,"start_character":23,"end_line":334,"end_character":46},"updated":"2017-03-16 01:11:42.000000000","message":"Why eager\u003dTrue option removed?","commit_id":"75679f06a60d029ab5f70a1d2fc9d15bc214fa67"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"80f5e981bf10524a6aa912cd8b2bd1b146201060","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            hours\u003daction_plan_expiry)"},{"line_number":332,"context_line":"        filters \u003d {\u0027state__eq\u0027: State.RECOMMENDED,"},{"line_number":333,"context_line":"                   \u0027created_at__lt\u0027: date_created}"},{"line_number":334,"context_line":"        action_plans \u003d objects.ActionPlan.list("},{"line_number":335,"context_line":"            context, filters\u003dfilters)"},{"line_number":336,"context_line":"        for action_plan in action_plans:"},{"line_number":337,"context_line":"            action_plan.state \u003d State.SUPERSEDED"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_4a6841bb","line":334,"range":{"start_line":334,"start_character":23,"end_line":334,"end_character":46},"in_reply_to":"3a1ff146_e2ee3fb3","updated":"2017-03-17 06:41:51.000000000","message":"It needs eager\u003dTrue here. I\u0027ll fix it.\nThank you","commit_id":"75679f06a60d029ab5f70a1d2fc9d15bc214fa67"}]}
