)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"31be334a1db2d5ba9ac87ec01d64008bab1d9754","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     gengchc2 \u003cgeng.changcai2@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-03 07:14:06 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"adding more protection parameters retention period(add retention_protect)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implement blueprint adding-more-protection-parameters-retention-period"},{"line_number":10,"context_line":"for karbor."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_3f95d432","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":73},"updated":"2017-11-03 08:39:33.000000000","message":"you can remove it","commit_id":"e922eb40775d5894531778c22ec6f35d1e7cec34"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"037a351c1e19d48a726b8cf35c7b47383f1b56f2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     gengchc2 \u003cgeng.changcai2@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-03 07:14:06 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"adding more protection parameters retention period(add retention_protect)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implement blueprint adding-more-protection-parameters-retention-period"},{"line_number":10,"context_line":"for karbor."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_954dc73c","line":7,"range":{"start_line":7,"start_character":50,"end_line":7,"end_character":73},"in_reply_to":"3f4b6375_3f95d432","updated":"2017-11-03 08:48:54.000000000","message":"ok","commit_id":"e922eb40775d5894531778c22ec6f35d1e7cec34"},{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"31be334a1db2d5ba9ac87ec01d64008bab1d9754","unresolved":false,"context_lines":[{"line_number":7,"context_line":"adding more protection parameters retention period(add retention_protect)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implement blueprint adding-more-protection-parameters-retention-period"},{"line_number":10,"context_line":"for karbor."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I58bf6fef6a213e7983abd30b06ff08495d645f71"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_7f8fcc22","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":11},"updated":"2017-11-03 08:39:33.000000000","message":"remove this","commit_id":"e922eb40775d5894531778c22ec6f35d1e7cec34"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"037a351c1e19d48a726b8cf35c7b47383f1b56f2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"adding more protection parameters retention period(add retention_protect)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implement blueprint adding-more-protection-parameters-retention-period"},{"line_number":10,"context_line":"for karbor."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I58bf6fef6a213e7983abd30b06ff08495d645f71"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_75600ba6","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":11},"in_reply_to":"3f4b6375_7f8fcc22","updated":"2017-11-03 08:48:54.000000000","message":"ok","commit_id":"e922eb40775d5894531778c22ec6f35d1e7cec34"}],"karbor/common/constants.py":[{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"07c7b237e3cc248b5e5858f7b7108fc93bc45d1e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    OPERATION_RESTORE,"},{"line_number":17,"context_line":"    OPERATION_DELETE,"},{"line_number":18,"context_line":"    OPERATION_VERIFY,"},{"line_number":19,"context_line":"    OPERATION_RETENTION_PROTECT,"},{"line_number":20,"context_line":") \u003d ("},{"line_number":21,"context_line":"    \u0027protect\u0027,"},{"line_number":22,"context_line":"    \u0027restore\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_bbac589f","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":31},"updated":"2017-11-02 09:12:09.000000000","message":"why do you add this?","commit_id":"4f618ae71c254efc912b1387f835f6a9e0d618bf"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"69c0c6f09e45ac3cb9413f99fdfff6e5e6204c18","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    OPERATION_RESTORE,"},{"line_number":17,"context_line":"    OPERATION_DELETE,"},{"line_number":18,"context_line":"    OPERATION_VERIFY,"},{"line_number":19,"context_line":"    OPERATION_RETENTION_PROTECT,"},{"line_number":20,"context_line":") \u003d ("},{"line_number":21,"context_line":"    \u0027protect\u0027,"},{"line_number":22,"context_line":"    \u0027restore\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_45fc5db4","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":31},"in_reply_to":"3f4b6375_bbac589f","updated":"2017-11-02 12:43:29.000000000","message":"I don\u0027t think that OPERATION_RETENTION_PROTECT will be add here. These operation types means that operation of plugins. It doesn\u0027t mean the protect type of operation engine.","commit_id":"4f618ae71c254efc912b1387f835f6a9e0d618bf"},{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"2f2c38e7ceb57c82b96e7324a3deb0afe1758daf","unresolved":false,"context_lines":[{"line_number":101,"context_line":"OPERATION_EXE_STATE_IN_PROGRESS \u003d \u0027in_progress\u0027"},{"line_number":102,"context_line":"OPERATION_EXE_STATE_SUCCESS \u003d \u0027success\u0027"},{"line_number":103,"context_line":"OPERATION_EXE_STATE_FAILED \u003d \u0027failed\u0027"},{"line_number":104,"context_line":"OPERATION_GET_MAX_BACKUP_STATE_FAILED \u003d \u0027get max backup policy failed\u0027"},{"line_number":105,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_SUCCESS \u003d \u0027excute max backup policy success\u0027"},{"line_number":106,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_FAILED \u003d \u0027excute max backup policy failed\u0027"},{"line_number":107,"context_line":"OPERATION_GET_DURATION_STATE_FAILED \u003d \u0027get duration policy failed\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_39d8e9ee","line":104,"range":{"start_line":104,"start_character":41,"end_line":104,"end_character":69},"updated":"2017-11-09 03:22:16.000000000","message":"IMO, \u0027get_max_backup_policy_failed\u0027 may be better","commit_id":"a962a3efa048ea71a604d3b4f4e4b7c82ff63d39"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"66d437bb920057729693697e8a5eeedc328cd46a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"OPERATION_EXE_STATE_IN_PROGRESS \u003d \u0027in_progress\u0027"},{"line_number":102,"context_line":"OPERATION_EXE_STATE_SUCCESS \u003d \u0027success\u0027"},{"line_number":103,"context_line":"OPERATION_EXE_STATE_FAILED \u003d \u0027failed\u0027"},{"line_number":104,"context_line":"OPERATION_GET_MAX_BACKUP_STATE_FAILED \u003d \u0027get max backup policy failed\u0027"},{"line_number":105,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_SUCCESS \u003d \u0027excute max backup policy success\u0027"},{"line_number":106,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_FAILED \u003d \u0027excute max backup policy failed\u0027"},{"line_number":107,"context_line":"OPERATION_GET_DURATION_STATE_FAILED \u003d \u0027get duration policy failed\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_2627b867","line":104,"range":{"start_line":104,"start_character":41,"end_line":104,"end_character":69},"in_reply_to":"3f4b6375_39d8e9ee","updated":"2017-11-09 07:54:04.000000000","message":"ok,modify it to \u0027get_max_backup_policy_failed\u0027","commit_id":"a962a3efa048ea71a604d3b4f4e4b7c82ff63d39"},{"author":{"_account_id":21224,"name":"jiaopengju","email":"jiaopengju_yewu@cmss.chinamobile.com","username":"jiaopengju"},"change_message_id":"7e9adb98b83023b29383f4a81cb8888b2bb545da","unresolved":false,"context_lines":[{"line_number":102,"context_line":"OPERATION_EXE_STATE_SUCCESS \u003d \u0027success\u0027"},{"line_number":103,"context_line":"OPERATION_EXE_STATE_FAILED \u003d \u0027failed\u0027"},{"line_number":104,"context_line":"OPERATION_GET_MAX_BACKUP_STATE_FAILED \u003d \u0027get_max_backup_policy_failed\u0027"},{"line_number":105,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_SUCCESS \u003d \u0027excute max backup policy success\u0027"},{"line_number":106,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_FAILED \u003d \u0027excute max backup policy failed\u0027"},{"line_number":107,"context_line":"OPERATION_GET_DURATION_STATE_FAILED \u003d \u0027get duration policy failed\u0027"},{"line_number":108,"context_line":"OPERATION_EXE_DURATION_STATE_SUCCESS \u003d \u0027excute duration policy success\u0027"},{"line_number":109,"context_line":"OPERATION_EXE_DURATION_STATE_FAILED \u003d \u0027excute duration policy failed\u0027"},{"line_number":110,"context_line":"OPERATION_EXE_STATE_DROPPED_OUT_OF_WINDOW \u003d \u0027dropped_out_of_window\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"RESTORE_STATUS_SUCCESS \u003d \u0027success\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_462f54f6","line":109,"range":{"start_line":105,"start_character":0,"end_line":109,"end_character":69},"updated":"2017-11-09 08:09:26.000000000","message":"all of this should be updated","commit_id":"8c8204dc2c93da9d04a9d1e38cb0e06d3321ca54"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"c965a5eb60031b002b0bcb6ae7eb1abc32feb85d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"OPERATION_EXE_STATE_SUCCESS \u003d \u0027success\u0027"},{"line_number":103,"context_line":"OPERATION_EXE_STATE_FAILED \u003d \u0027failed\u0027"},{"line_number":104,"context_line":"OPERATION_GET_MAX_BACKUP_STATE_FAILED \u003d \u0027get_max_backup_policy_failed\u0027"},{"line_number":105,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_SUCCESS \u003d \u0027excute max backup policy success\u0027"},{"line_number":106,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_FAILED \u003d \u0027excute max backup policy failed\u0027"},{"line_number":107,"context_line":"OPERATION_GET_DURATION_STATE_FAILED \u003d \u0027get duration policy failed\u0027"},{"line_number":108,"context_line":"OPERATION_EXE_DURATION_STATE_SUCCESS \u003d \u0027excute duration policy success\u0027"},{"line_number":109,"context_line":"OPERATION_EXE_DURATION_STATE_FAILED \u003d \u0027excute duration policy failed\u0027"},{"line_number":110,"context_line":"OPERATION_EXE_STATE_DROPPED_OUT_OF_WINDOW \u003d \u0027dropped_out_of_window\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"RESTORE_STATUS_SUCCESS \u003d \u0027success\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_bc3b8736","line":109,"range":{"start_line":105,"start_character":0,"end_line":109,"end_character":69},"in_reply_to":"1f485f77_462f54f6","updated":"2017-11-13 02:29:32.000000000","message":"hi, gengchc2 could you please address this comments?","commit_id":"8c8204dc2c93da9d04a9d1e38cb0e06d3321ca54"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"4bf14a11046221b208b2ce0022fba05ba52d973c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"OPERATION_EXE_STATE_SUCCESS \u003d \u0027success\u0027"},{"line_number":103,"context_line":"OPERATION_EXE_STATE_FAILED \u003d \u0027failed\u0027"},{"line_number":104,"context_line":"OPERATION_GET_MAX_BACKUP_STATE_FAILED \u003d \u0027get_max_backup_policy_failed\u0027"},{"line_number":105,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_SUCCESS \u003d \u0027excute max backup policy success\u0027"},{"line_number":106,"context_line":"OPERATION_EXE_MAX_BACKUP_STATE_FAILED \u003d \u0027excute max backup policy failed\u0027"},{"line_number":107,"context_line":"OPERATION_GET_DURATION_STATE_FAILED \u003d \u0027get duration policy failed\u0027"},{"line_number":108,"context_line":"OPERATION_EXE_DURATION_STATE_SUCCESS \u003d \u0027excute duration policy success\u0027"},{"line_number":109,"context_line":"OPERATION_EXE_DURATION_STATE_FAILED \u003d \u0027excute duration policy failed\u0027"},{"line_number":110,"context_line":"OPERATION_EXE_STATE_DROPPED_OUT_OF_WINDOW \u003d \u0027dropped_out_of_window\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"RESTORE_STATUS_SUCCESS \u003d \u0027success\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_7fe1819a","line":109,"range":{"start_line":105,"start_character":0,"end_line":109,"end_character":69},"in_reply_to":"1f485f77_462f54f6","updated":"2017-11-13 03:54:32.000000000","message":"ok","commit_id":"8c8204dc2c93da9d04a9d1e38cb0e06d3321ca54"}],"karbor/services/operationengine/operations/retention_operation.py":[{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"6fe4cd744f2e209c23944c4545402ea09e42d98c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        client \u003d self._create_karbor_client("},{"line_number":55,"context_line":"            param.get(\"user_id\"), project_id)"},{"line_number":56,"context_line":"        provider_id \u003d operation_definition.get(\"provider_id\")"},{"line_number":57,"context_line":"        plan_id \u003d operation_definition.get(\"plan_id\")"},{"line_number":58,"context_line":"        try:"},{"line_number":59,"context_line":"            max_backups \u003d int(operation_definition.get(\"max_backups\", -1))"},{"line_number":60,"context_line":"            max_backups \u003d -1 if max_backups \u003c\u003d 0 else max_backups"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_d5bc22bc","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":53},"updated":"2017-11-07 06:55:14.000000000","message":"Before run the policy about the retention parameters( max_backups and retention_duration), in this operation type, the creating of checkpoint also need be executed. IMO, the operation type not only include the retention policy, also need include the periodically creating checkpoint.","commit_id":"c85f0df85ceff2a8a9bf4ceae7c6c274a7e2d7fe"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"328ae9e624e884ff978ec8a6dfb70f555844668a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        client \u003d self._create_karbor_client("},{"line_number":55,"context_line":"            param.get(\"user_id\"), project_id)"},{"line_number":56,"context_line":"        provider_id \u003d operation_definition.get(\"provider_id\")"},{"line_number":57,"context_line":"        plan_id \u003d operation_definition.get(\"plan_id\")"},{"line_number":58,"context_line":"        try:"},{"line_number":59,"context_line":"            max_backups \u003d int(operation_definition.get(\"max_backups\", -1))"},{"line_number":60,"context_line":"            max_backups \u003d -1 if max_backups \u003c\u003d 0 else max_backups"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_6ab6acfb","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":53},"in_reply_to":"3f4b6375_d5bc22bc","updated":"2017-11-07 08:49:33.000000000","message":"What does it mean?\n1. in retention policy:\n1) excute create checkpoint\n2) excute retention policy\n\n2. in protect policy:\n1)only excute create checkpoint","commit_id":"c85f0df85ceff2a8a9bf4ceae7c6c274a7e2d7fe"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"078be606255fa41944472d2e89f31ea97a301268","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                       \"retention_duration\": retention_duration})"},{"line_number":114,"context_line":"            raise exception.InvalidOperationDefinition(reason\u003dreason)"},{"line_number":115,"context_line":"        finally:"},{"line_number":116,"context_line":"            self._update_log_when_operation_finished(log_ref, state)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @staticmethod"},{"line_number":119,"context_line":"    def _list_available_checkpoint(client, project_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_644a4a5c","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":68},"updated":"2017-11-08 08:35:39.000000000","message":"IMO, the operation log state here is only used for recording the status of creating checkpoint. What\u0027s your oppion about it? How about add new error state constant for retention parameters? onstants.OPERATION_EXE_MAX_BACKUP_STATE_FAILED onstants.OPERATION_EXE_DURATION_STATE_FAILED","commit_id":"337817e6ddab4e7b204685fa85c932f19d2e9f20"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"56a431df492a4010fe37c065bb387d043fd7bbdf","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                       \"retention_duration\": retention_duration})"},{"line_number":114,"context_line":"            raise exception.InvalidOperationDefinition(reason\u003dreason)"},{"line_number":115,"context_line":"        finally:"},{"line_number":116,"context_line":"            self._update_log_when_operation_finished(log_ref, state)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @staticmethod"},{"line_number":119,"context_line":"    def _list_available_checkpoint(client, project_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_e4d75ac0","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":68},"in_reply_to":"3f4b6375_644a4a5c","updated":"2017-11-08 09:24:33.000000000","message":"ok.I add it.This is more reasonable.","commit_id":"337817e6ddab4e7b204685fa85c932f19d2e9f20"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ee57f038ce4145dc0b6c23a6b2b314a2130e5a1f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            max_backups \u003d -1 if max_backups \u003c\u003d 0 else max_backups"},{"line_number":78,"context_line":"        except Exception:"},{"line_number":79,"context_line":"            state \u003d constants.OPERATION_GET_MAX_BACKUP_STATE_FAILED"},{"line_number":80,"context_line":"            self._update_log_when_operation_finished(log_ref, state)          "},{"line_number":81,"context_line":"            reason \u003d _(\"Failed to get max_backups\")"},{"line_number":82,"context_line":"            raise exception.InvalidOperationDefinition(reason\u003dreason)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_63836258","line":80,"range":{"start_line":80,"start_character":68,"end_line":80,"end_character":78},"updated":"2017-11-09 06:48:59.000000000","message":"should be deleted","commit_id":"a962a3efa048ea71a604d3b4f4e4b7c82ff63d39"},{"author":{"_account_id":22484,"name":"gengchc2","email":"geng.changcai2@zte.com.cn","username":"gengchc2"},"change_message_id":"66d437bb920057729693697e8a5eeedc328cd46a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            max_backups \u003d -1 if max_backups \u003c\u003d 0 else max_backups"},{"line_number":78,"context_line":"        except Exception:"},{"line_number":79,"context_line":"            state \u003d constants.OPERATION_GET_MAX_BACKUP_STATE_FAILED"},{"line_number":80,"context_line":"            self._update_log_when_operation_finished(log_ref, state)          "},{"line_number":81,"context_line":"            reason \u003d _(\"Failed to get max_backups\")"},{"line_number":82,"context_line":"            raise exception.InvalidOperationDefinition(reason\u003dreason)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_c61d8410","line":80,"range":{"start_line":80,"start_character":68,"end_line":80,"end_character":78},"in_reply_to":"1f485f77_63836258","updated":"2017-11-09 07:54:04.000000000","message":"ok","commit_id":"a962a3efa048ea71a604d3b4f4e4b7c82ff63d39"}]}
