)]}'
{"doc/source/architecture.rst":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0d027102eedfda57725deaf569016eb4b9cb27d3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"previous state of the :ref:`Managed resource \u003cmanaged_resource_definition\u003e`"},{"line_number":112,"context_line":"(i.e. before the command was sent to the underlying OpenStack service)."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"In Rocky, added a new config option \u0027action_execution_rule\u0027 which is a"},{"line_number":115,"context_line":"dict type. Its key field is strategy name and the value is \u0027ALWAYS\u0027 or \u0027ANY\u0027."},{"line_number":116,"context_line":"\u0027ALWAYS\u0027 means the callback function returns True as usual."},{"line_number":117,"context_line":"\u0027ANY\u0027 means the return depends on the result of previous action execution."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_801e6c5c","line":114,"range":{"start_line":114,"start_character":3,"end_line":114,"end_character":8},"updated":"2018-11-14 01:01:00.000000000","message":"Now Stein cycle.","commit_id":"a2a5fdceead3eeb2a21d5b7812ecdf44a533935a"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"0dfffd4fbdcd5f9120967eb1e0ed56b8470fe2b9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"previous state of the :ref:`Managed resource \u003cmanaged_resource_definition\u003e`"},{"line_number":112,"context_line":"(i.e. before the command was sent to the underlying OpenStack service)."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"In Rocky, added a new config option \u0027action_execution_rule\u0027 which is a"},{"line_number":115,"context_line":"dict type. Its key field is strategy name and the value is \u0027ALWAYS\u0027 or \u0027ANY\u0027."},{"line_number":116,"context_line":"\u0027ALWAYS\u0027 means the callback function returns True as usual."},{"line_number":117,"context_line":"\u0027ANY\u0027 means the return depends on the result of previous action execution."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_e012c0fe","line":114,"range":{"start_line":114,"start_character":3,"end_line":114,"end_character":8},"in_reply_to":"3f79a3b5_801e6c5c","updated":"2018-11-14 01:23:48.000000000","message":"Done","commit_id":"a2a5fdceead3eeb2a21d5b7812ecdf44a533935a"}],"watcher/applier/workflow_engine/default.py":[{"author":{"_account_id":27947,"name":"Egor Panfilov","email":"edpanfilov@sbcloud.ru","username":"erakli"},"change_message_id":"486b1e334a81328d042b40973feeaa1fa07fc55a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def decider(self, history):"},{"line_number":41,"context_line":"        # FIXME(jed) not possible with the current Watcher Planner"},{"line_number":42,"context_line":"        #"},{"line_number":43,"context_line":"        # decider – A callback function that will be expected to"},{"line_number":44,"context_line":"        # decide at runtime whether v should be allowed to execute"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_b4a3a400","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":66},"updated":"2018-04-05 21:12:19.000000000","message":"Possibly could remove this comment because we implements this patch-set?","commit_id":"19790ce12aed472edfe024ce5926e431fe16f36a"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"80de8fb8e0618d8230e7286bce730ba2a0e914ab","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def decider(self, history):"},{"line_number":41,"context_line":"        # FIXME(jed) not possible with the current Watcher Planner"},{"line_number":42,"context_line":"        #"},{"line_number":43,"context_line":"        # decider – A callback function that will be expected to"},{"line_number":44,"context_line":"        # decide at runtime whether v should be allowed to execute"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_39538718","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":66},"in_reply_to":"bf659307_b4a3a400","updated":"2018-04-12 02:12:27.000000000","message":"yeah, I will update","commit_id":"19790ce12aed472edfe024ce5926e431fe16f36a"},{"author":{"_account_id":27947,"name":"Egor Panfilov","email":"edpanfilov@sbcloud.ru","username":"erakli"},"change_message_id":"9e085480d97ac2b7e7e823f4ef75bbbbc1de75c9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                     \u0027None means ALWAYS.\u0027)"},{"line_number":74,"context_line":"            ]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get_execution_rule(self, actions):"},{"line_number":77,"context_line":"        self.execution_rule \u003d None"},{"line_number":78,"context_line":"        if actions:"},{"line_number":79,"context_line":"            actionplan_object \u003d objects.ActionPlan.get_by_id("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_98c55691","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":26},"updated":"2018-04-17 20:17:45.000000000","message":"You return nothing from this method, probably \"get_\" prefix is not suitable","commit_id":"393b47189c43eda1c3b3fcdc35b52ecbeaeb63ef"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"445bd567867e2e710d33d2b8b9577e3960c0f5ec","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                     \u0027None means ALWAYS.\u0027)"},{"line_number":74,"context_line":"            ]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def get_execution_rule(self, actions):"},{"line_number":77,"context_line":"        self.execution_rule \u003d None"},{"line_number":78,"context_line":"        if actions:"},{"line_number":79,"context_line":"            actionplan_object \u003d objects.ActionPlan.get_by_id("}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_d4e072cf","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":26},"in_reply_to":"9f6a8fd7_98c55691","updated":"2018-04-18 06:26:09.000000000","message":"Done","commit_id":"393b47189c43eda1c3b3fcdc35b52ecbeaeb63ef"}],"watcher/tests/applier/workflow_engine/test_default_workflow_engine.py":[{"author":{"_account_id":27947,"name":"Egor Panfilov","email":"edpanfilov@sbcloud.ru","username":"erakli"},"change_message_id":"486b1e334a81328d042b40973feeaa1fa07fc55a","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    @mock.patch.object(notifications.action, \u0027send_execution_notification\u0027)"},{"line_number":301,"context_line":"    @mock.patch.object(notifications.action, \u0027send_update\u0027)"},{"line_number":302,"context_line":"    @mock.patch.object(factory.ActionFactory, \"make_action\")"},{"line_number":303,"context_line":"    def test_execute_with_action_exception(self, m_make_action, m_send_update,"},{"line_number":304,"context_line":"                                           m_send_execution, m_get_actionplan):"},{"line_number":305,"context_line":"        m_get_actionplan.return_value \u003d obj_utils.get_test_action_plan("},{"line_number":306,"context_line":"            self.context, id\u003d0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_34b7943d","line":303,"range":{"start_line":303,"start_character":8,"end_line":303,"end_character":43},"updated":"2018-04-05 21:12:19.000000000","message":"There\u0027s no exception now","commit_id":"19790ce12aed472edfe024ce5926e431fe16f36a"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"80de8fb8e0618d8230e7286bce730ba2a0e914ab","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    @mock.patch.object(notifications.action, \u0027send_execution_notification\u0027)"},{"line_number":301,"context_line":"    @mock.patch.object(notifications.action, \u0027send_update\u0027)"},{"line_number":302,"context_line":"    @mock.patch.object(factory.ActionFactory, \"make_action\")"},{"line_number":303,"context_line":"    def test_execute_with_action_exception(self, m_make_action, m_send_update,"},{"line_number":304,"context_line":"                                           m_send_execution, m_get_actionplan):"},{"line_number":305,"context_line":"        m_get_actionplan.return_value \u003d obj_utils.get_test_action_plan("},{"line_number":306,"context_line":"            self.context, id\u003d0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_99a093f6","line":303,"range":{"start_line":303,"start_character":8,"end_line":303,"end_character":43},"in_reply_to":"bf659307_34b7943d","updated":"2018-04-12 02:12:27.000000000","message":"I\u0027ll change the name","commit_id":"19790ce12aed472edfe024ce5926e431fe16f36a"}]}
