)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Roman Vasylets \u003cpomeo92@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-04 00:29:38 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Improve Task status list"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Boris Pavlovic \u003cboris@pavlovic.me\u003e"},{"line_number":10,"context_line":"Co-Authored-By: Roman Vasilets \u003crvasilets@mirantis.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"ba5201f7_502dfd44","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":6},"updated":"2017-01-04 11:25:04.000000000","message":"Is it still wip?","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"}],"rally/cli/commands/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            input_task \u003d self._load_task(api, task, task_args, task_args_file)"},{"line_number":138,"context_line":"        except Exception as err:"},{"line_number":139,"context_line":"            if task_instance:"},{"line_number":140,"context_line":"                task_instance.set_failed(err.__class__.__name__,"},{"line_number":141,"context_line":"                                         str(err),"},{"line_number":142,"context_line":"                                         json.dumps(traceback.format_exc()))"},{"line_number":143,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_f047d11a","line":140,"range":{"start_line":140,"start_character":16,"end_line":140,"end_character":40},"updated":"2017-01-04 11:25:04.000000000","message":"it should call set_verification_failed. Since it is validation step","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3397ce1e875f5644ad1ca64161af48ec0a3045f9","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            input_task \u003d self._load_task(api, task, task_args, task_args_file)"},{"line_number":138,"context_line":"        except Exception as err:"},{"line_number":139,"context_line":"            if task_instance:"},{"line_number":140,"context_line":"                task_instance.set_failed(err.__class__.__name__,"},{"line_number":141,"context_line":"                                         str(err),"},{"line_number":142,"context_line":"                                         json.dumps(traceback.format_exc()))"},{"line_number":143,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_cf00f204","line":140,"range":{"start_line":140,"start_character":16,"end_line":140,"end_character":40},"in_reply_to":"ba5201f7_f047d11a","updated":"2017-01-08 09:09:59.000000000","message":"possibly yes","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                           abort_on_sla_failure\u003dabort_on_sla_failure)"},{"line_number":259,"context_line":"            self.detailed(api, task_id\u003dtask_instance[\"uuid\"])"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        except (exceptions.InvalidTaskException, FailedToLoadTask) as e:"},{"line_number":262,"context_line":"            task_instance.set_failed(type(e).__name__,"},{"line_number":263,"context_line":"                                     str(e),"},{"line_number":264,"context_line":"                                     json.dumps(traceback.format_exc()))"},{"line_number":265,"context_line":"            print(e, file\u003dsys.stderr)"},{"line_number":266,"context_line":"            return(1)"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_3069598c","line":264,"range":{"start_line":261,"start_character":8,"end_line":264,"end_character":72},"updated":"2017-01-04 11:25:04.000000000","message":"both of this error sounds like VALIDATION_FAILED status","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3397ce1e875f5644ad1ca64161af48ec0a3045f9","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                           abort_on_sla_failure\u003dabort_on_sla_failure)"},{"line_number":259,"context_line":"            self.detailed(api, task_id\u003dtask_instance[\"uuid\"])"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        except (exceptions.InvalidTaskException, FailedToLoadTask) as e:"},{"line_number":262,"context_line":"            task_instance.set_failed(type(e).__name__,"},{"line_number":263,"context_line":"                                     str(e),"},{"line_number":264,"context_line":"                                     json.dumps(traceback.format_exc()))"},{"line_number":265,"context_line":"            print(e, file\u003dsys.stderr)"},{"line_number":266,"context_line":"            return(1)"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_6a16144d","line":264,"range":{"start_line":261,"start_character":8,"end_line":264,"end_character":72},"in_reply_to":"ba5201f7_3069598c","updated":"2017-01-08 09:09:59.000000000","message":"Not all InvalidTaskException exceptions related to validation","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        print(_(\"Task %(task_id)s: %(status)s\")"},{"line_number":325,"context_line":"              % {\"task_id\": task_id, \"status\": task[\"status\"]})"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        if task[\"status\"] \u003d\u003d consts.TaskStatus.CRASHED:"},{"line_number":328,"context_line":"            print(\"-\" * 80)"},{"line_number":329,"context_line":"            verification \u003d yaml.safe_load(task[\"verification_log\"])"},{"line_number":330,"context_line":"            if logging.is_debug():"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_5027bdb5","line":327,"range":{"start_line":327,"start_character":11,"end_line":327,"end_character":55},"updated":"2017-01-04 11:25:04.000000000","message":"Maybe:\n   \n    task[\"status\"] in (consts.TaskStatus.CRASHED, consts.TaskStatus.VALIDATION_FAILED)\n\n?","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3397ce1e875f5644ad1ca64161af48ec0a3045f9","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        print(_(\"Task %(task_id)s: %(status)s\")"},{"line_number":325,"context_line":"              % {\"task_id\": task_id, \"status\": task[\"status\"]})"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        if task[\"status\"] \u003d\u003d consts.TaskStatus.CRASHED:"},{"line_number":328,"context_line":"            print(\"-\" * 80)"},{"line_number":329,"context_line":"            verification \u003d yaml.safe_load(task[\"verification_log\"])"},{"line_number":330,"context_line":"            if logging.is_debug():"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_4a595034","line":327,"range":{"start_line":327,"start_character":11,"end_line":327,"end_character":55},"in_reply_to":"ba5201f7_5027bdb5","updated":"2017-01-08 09:09:59.000000000","message":"yeah, looks like that","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"}],"rally/common/db/sqlalchemy/migrations/versions/4ef544102ba7_change_task_status_enum.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4a1bd59612a4700269e1ed67fb8ce31301018cb1","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                .where(task.c.status \u003d\u003d op.inline_literal(old))"},{"line_number":76,"context_line":"                .values({\"new_status\": new}))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    # NOTE(boris-42): it\u0027s quite hard task to determine whatever"},{"line_number":79,"context_line":"    #                 task crashed or verification failed. So let assume"},{"line_number":80,"context_line":"    #                 that task previously always crashed."},{"line_number":81,"context_line":"    op.execute("},{"line_number":82,"context_line":"        task.update()"},{"line_number":83,"context_line":"            .where(task.c.status \u003d\u003d op.inline_literal(\"failed\"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_dcc45361","line":80,"range":{"start_line":78,"start_character":4,"end_line":80,"end_character":58},"updated":"2016-05-05 17:39:12.000000000","message":"I think it is not hard task. First of all, we had a bug (https://bugs.launchpad.net/rally/+bug/1562713 ) which write verification_log in wrong format for validation failed tasks. The bug was fixed a month ago, but migration for old task was not written, so we can identify a part of validation_failed by wrong format:) Something like:\n\n   if len(json.loads(verification_log)[0]) \u003d\u003d 1:\n        # it is validation_failed\n\nThe second way bases on verification_log too. The first elem contains the name of exception. Validation step can raise 3 exceptions: InvalidTaskException, FailedToLoadTask and IOError. First two exceptions should not be used anywhere except validation. For IOError we can check the message. It has next format:\n\n   msg \u003d \"No such file \u0027%s\u0027\" % task","commit_id":"f3104f21241645a042fd546245b3feb950aacb02"}],"rally/common/db/sqlalchemy/models.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"eed2e8142f57ded946172bfd7236bfdd59254afd","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        nullable\u003dFalse,"},{"line_number":383,"context_line":"    )"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    status \u003d sa.Column(sa.Enum(*list(consts.TaskStatus),"},{"line_number":386,"context_line":"                       name\u003d\"enum_tasks_status\"),"},{"line_number":387,"context_line":"                       default\u003dconsts.TaskStatus.INIT,"},{"line_number":388,"context_line":"                       nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_0e0a318a","line":385,"range":{"start_line":385,"start_character":23,"end_line":385,"end_character":56},"updated":"2016-12-12 12:54:36.000000000","message":"ok, it looks like it can produce an error. since \"actual enum\" is changed. We need to create separate consts for verification component. It should not be done here and we already have patch for it - https://review.openstack.org/#/c/393885/","commit_id":"4eee5693863488b5bf306ccf17c696989d370488"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    task_duration \u003d sa.Column(sa.Float)"},{"line_number":189,"context_line":"    pass_sla \u003d sa.Column(sa.Boolean)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    status \u003d sa.Column(sa.Enum(*list(consts.TaskStatus),"},{"line_number":192,"context_line":"                       name\u003d\"enum_tasks_status_v2\"),"},{"line_number":193,"context_line":"                       default\u003dconsts.TaskStatus.INIT,"},{"line_number":194,"context_line":"                       nullable\u003dFalse)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"class Subtask(BASE, RallyBase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_b0e1c900","line":194,"range":{"start_line":191,"start_character":4,"end_line":194,"end_character":38},"updated":"2017-01-04 11:25:04.000000000","message":"Let\u0027s drop ENUM at all. It is a really pain to extend statuses with them.","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3397ce1e875f5644ad1ca64161af48ec0a3045f9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    task_duration \u003d sa.Column(sa.Float)"},{"line_number":189,"context_line":"    pass_sla \u003d sa.Column(sa.Boolean)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    status \u003d sa.Column(sa.Enum(*list(consts.TaskStatus),"},{"line_number":192,"context_line":"                       name\u003d\"enum_tasks_status_v2\"),"},{"line_number":193,"context_line":"                       default\u003dconsts.TaskStatus.INIT,"},{"line_number":194,"context_line":"                       nullable\u003dFalse)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"class Subtask(BASE, RallyBase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_ca454043","line":194,"range":{"start_line":191,"start_character":4,"end_line":194,"end_character":38},"in_reply_to":"ba5201f7_b0e1c900","updated":"2017-01-08 09:09:59.000000000","message":"definitely agree)","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    duration \u003d sa.Column(sa.Float)"},{"line_number":231,"context_line":"    pass_sla \u003d sa.Column(sa.Boolean)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    status \u003d sa.Column(sa.Enum(*list(consts.SubtaskStatus),"},{"line_number":234,"context_line":"                       name\u003d\"enum_subtasks_status\"),"},{"line_number":235,"context_line":"                       default\u003dconsts.SubtaskStatus.RUNNING,"},{"line_number":236,"context_line":"                       nullable\u003dFalse)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"class Workload(BASE, RallyBase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_30eeb9ec","line":236,"range":{"start_line":233,"start_character":4,"end_line":236,"end_character":38},"updated":"2017-01-04 11:25:04.000000000","message":"same here","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"}],"rally/common/objects/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        else:"},{"line_number":395,"context_line":"            self._update({\"status\": status})"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def set_verification_failed(self, log):"},{"line_number":398,"context_line":"        self._update({\"status\": consts.TaskStatus.VALIDATION_FAILED,"},{"line_number":399,"context_line":"                      \"validation_result\": log})"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_b0ce29b2","line":397,"range":{"start_line":397,"start_character":8,"end_line":397,"end_character":31},"updated":"2017-01-04 11:25:04.000000000","message":"since you already wanted to rename it, please name it set_validation_failed.","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3397ce1e875f5644ad1ca64161af48ec0a3045f9","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        else:"},{"line_number":395,"context_line":"            self._update({\"status\": status})"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def set_verification_failed(self, log):"},{"line_number":398,"context_line":"        self._update({\"status\": consts.TaskStatus.VALIDATION_FAILED,"},{"line_number":399,"context_line":"                      \"validation_result\": log})"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_06b5807c","line":397,"range":{"start_line":397,"start_character":8,"end_line":397,"end_character":31},"in_reply_to":"ba5201f7_b0ce29b2","updated":"2017-01-08 09:09:59.000000000","message":"yep","commit_id":"c7bf77b9118ceb484384c637701d6bc877f47bc6"}],"rally/common/objects/verification.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"006b8b29ff5a56c902dd3532ca3f7b52a1ae91b4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self._update(status\u003dconsts.VerificationStatus.VERIFYING, set_name\u003dset_name)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def set_failed(self):"},{"line_number":64,"context_line":"        self.update_status(consts.TaskStatus.CRASHED)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def set_running(self):"},{"line_number":67,"context_line":"        self.update_status(consts.TaskStatus.RUNNING)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_6e73a580","line":64,"range":{"start_line":64,"start_character":27,"end_line":64,"end_character":52},"updated":"2016-12-12 12:50:26.000000000","message":"it is unrelated change and it can cause an error, since Verification component uses \"enum_task_statuses\" which doesn\u0027t have \"crashed status\"","commit_id":"4eee5693863488b5bf306ccf17c696989d370488"}],"rally/consts.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"cfa6d393a6da84f33aee322fbb2fe8464ca8d11a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    RUNNING \u003d \"running\""},{"line_number":69,"context_line":"    CLEANING_UP \u003d \"cleaning up\""},{"line_number":70,"context_line":"    FINISHED \u003d \"finished\""},{"line_number":71,"context_line":"    FAILED \u003d \"failed\""},{"line_number":72,"context_line":"    ABORTING \u003d \"aborting\""},{"line_number":73,"context_line":"    SOFT_ABORTING \u003d \"soft_aborting\""},{"line_number":74,"context_line":"    ABORTED \u003d \"aborted\""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a71b18c_0e7f91e0","side":"PARENT","line":71,"range":{"start_line":71,"start_character":4,"end_line":71,"end_character":21},"updated":"2016-12-12 12:57:45.000000000","message":"not sure that we should remove this status. It can be reused for status of sla.","commit_id":"9074a81bd475d3169d6d6be308fff912d62b1e13"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"305c6f65462fde21a073b6b5b5a82eb0ed7c03e1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    RUNNING \u003d \"running\""},{"line_number":48,"context_line":"    CLEANING_UP \u003d \"cleaning up\""},{"line_number":49,"context_line":"    FINISHED \u003d \"finished\""},{"line_number":50,"context_line":"    FAILED \u003d \"failed\""},{"line_number":51,"context_line":"    ABORTING \u003d \"aborting\""},{"line_number":52,"context_line":"    SOFT_ABORTING \u003d \"soft_aborting\""},{"line_number":53,"context_line":"    ABORTED \u003d \"aborted\""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_70a5a1b3","side":"PARENT","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":21},"updated":"2017-01-04 11:25:04.000000000","message":"We should leave it to match SLA","commit_id":"3d4b888c322fea39f1985a3964028b6da9051f0f"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3397ce1e875f5644ad1ca64161af48ec0a3045f9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    RUNNING \u003d \"running\""},{"line_number":48,"context_line":"    CLEANING_UP \u003d \"cleaning up\""},{"line_number":49,"context_line":"    FINISHED \u003d \"finished\""},{"line_number":50,"context_line":"    FAILED \u003d \"failed\""},{"line_number":51,"context_line":"    ABORTING \u003d \"aborting\""},{"line_number":52,"context_line":"    SOFT_ABORTING \u003d \"soft_aborting\""},{"line_number":53,"context_line":"    ABORTED \u003d \"aborted\""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_66ae4c2f","side":"PARENT","line":50,"range":{"start_line":50,"start_character":4,"end_line":50,"end_character":21},"in_reply_to":"ba5201f7_70a5a1b3","updated":"2017-01-08 09:09:59.000000000","message":"Then I suggest to rename it ti something more different from crashed and better matching sla. For example \"sla_failed\"","commit_id":"3d4b888c322fea39f1985a3964028b6da9051f0f"}]}
