)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ce977011cf40666f8a2496bd5008f9094c9e3399","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task valitation and task start printout. For this purposes:"},{"line_number":11,"context_line":"    api.Task.validate is removed from api.Task.start"},{"line_number":12,"context_line":"    objects.Task now can be converted from fake to real (create db"},{"line_number":13,"context_line":"      record wrom existing fake task)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a80dd14_10cf132a","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":17},"updated":"2015-03-20 16:53:09.000000000","message":"s/valitation/validation/  s/this/these/","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task valitation and task start printout. For this purposes:"},{"line_number":11,"context_line":"    api.Task.validate is removed from api.Task.start"},{"line_number":12,"context_line":"    objects.Task now can be converted from fake to real (create db"},{"line_number":13,"context_line":"      record wrom existing fake task)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a6ced46_b965a7b6","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":17},"in_reply_to":"9a80dd14_10cf132a","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  task valitation and task start printout. For this purposes:"},{"line_number":11,"context_line":"    api.Task.validate is removed from api.Task.start"},{"line_number":12,"context_line":"    objects.Task now can be converted from fake to real (create db"},{"line_number":13,"context_line":"      record wrom existing fake task)"},{"line_number":14,"context_line":"  cmd.commands.task._load_task renamed to _load_and_validate_task."},{"line_number":15,"context_line":"    api.Task.validate call moved to this method"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a6ced46_fe012e3a","line":13,"updated":"2015-03-23 12:49:05.000000000","message":"s/wrom/from\n\nAlso I prefer to format list items with some separator (e.g * or -) because it\u0027s a bit unclear where is new list item when it starts with low letter.","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  task valitation and task start printout. For this purposes:"},{"line_number":11,"context_line":"    api.Task.validate is removed from api.Task.start"},{"line_number":12,"context_line":"    objects.Task now can be converted from fake to real (create db"},{"line_number":13,"context_line":"      record wrom existing fake task)"},{"line_number":14,"context_line":"  cmd.commands.task._load_task renamed to _load_and_validate_task."},{"line_number":15,"context_line":"    api.Task.validate call moved to this method"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a6ced46_f95b9ff3","line":13,"in_reply_to":"1a6ced46_fe012e3a","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task validation and task start printout. The next one is that we"},{"line_number":11,"context_line":"  should not create task db record and set task\u0027s status untill task"},{"line_number":12,"context_line":"  pass validation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"5ad0253b_cee2a39f","line":9,"updated":"2015-04-29 13:04:35.000000000","message":"Don\u0027t indent.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"  One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task validation and task start printout. The next one is that we"},{"line_number":11,"context_line":"  should not create task db record and set task\u0027s status untill task"},{"line_number":12,"context_line":"  pass validation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3acd31a7_2ccfe780","line":9,"in_reply_to":"5ad0253b_cee2a39f","updated":"2015-04-30 10:13:35.000000000","message":"Done","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Oleh Anufriiev \u003coanufriev@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-05 15:46:10 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"task validation and task start printout. The next one is that we"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"9af37de9_0f90c5eb","line":7,"updated":"2015-05-09 19:57:16.000000000","message":"Please use imperative here, e.g.:\n Remove task validation from api.Task.start\n\nThis is a rule for at least the Git itself:\nhttp://git.kernel.org/cgit/git/git.git/tree/Documentation/SubmittingPatches?id\u003dHEAD\n\n Describe your changes in imperative mood, e.g. \"make xyzzy do frotz\"\ninstead of \"[This patch] makes xyzzy do frotz\" or \"[I] changed xyzzy\nto do frotz\", as if you are giving orders to the codebase to change\nits behaviour.  Try to make sure your explanation can be understood\nwithout external resources. Instead of giving a URL to a mailing list\narchive, summarize the relevant points of the discussion.","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Oleh Anufriiev \u003coanufriev@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-05 15:46:10 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"task validation and task start printout. The next one is that we"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a016987_2fbe1eff","line":7,"in_reply_to":"9af37de9_0f90c5eb","updated":"2015-05-22 01:15:08.000000000","message":"Done","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"task validation and task start printout. The next one is that we"},{"line_number":11,"context_line":"should not create task db record and set task\u0027s status untill task"},{"line_number":12,"context_line":"pass validation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"9af37de9_efbb4174","line":9,"updated":"2015-05-09 19:57:16.000000000","message":"Please use a bullet list here. The commit messages must be as readable as it can be.","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"task validation and task start printout. The next one is that we"},{"line_number":11,"context_line":"should not create task db record and set task\u0027s status untill task"},{"line_number":12,"context_line":"pass validation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a016987_0fb92215","line":9,"in_reply_to":"9af37de9_efbb4174","updated":"2015-05-22 01:15:08.000000000","message":"Done","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"443adec2dfb34c1b4602165395efb525439d5788","unresolved":false,"context_lines":[{"line_number":9,"context_line":"* one of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task validation and task start printout."},{"line_number":11,"context_line":"* the next one is that we"},{"line_number":12,"context_line":"  should not create task db record and set task\u0027s status untill task"},{"line_number":13,"context_line":"  pass validation."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6b22eeaebfd2854715b07bcca5c5dfcb8c756ad8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7a016987_fde8a4b4","line":12,"updated":"2015-05-23 10:05:46.000000000","message":"* typo until","commit_id":"16321437369f36718da6897d0450ce24c0468d23"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"f72959d0e5455c5287ba6ef50bce4e5744d7c016","unresolved":false,"context_lines":[{"line_number":9,"context_line":"* one of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task validation and task start printout."},{"line_number":11,"context_line":"* the next one is that we"},{"line_number":12,"context_line":"  should not create task db record and set task\u0027s status untill task"},{"line_number":13,"context_line":"  pass validation."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6b22eeaebfd2854715b07bcca5c5dfcb8c756ad8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7a016987_866b8db6","line":12,"in_reply_to":"7a016987_fde8a4b4","updated":"2015-05-25 12:17:20.000000000","message":"Done","commit_id":"16321437369f36718da6897d0450ce24c0468d23"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* one of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task validation and task start printout."},{"line_number":11,"context_line":"* the next one is that we"},{"line_number":12,"context_line":"  should not create task db record and set task\u0027s status until task"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"7a016987_8d6b17b9","line":9,"updated":"2015-05-29 01:06:21.000000000","message":"Bullets indicate that `one of the goals\u0027 and `the next one\u0027\n\nJust put:\n * separate log output of the task validation and task start printout\n * don\u0027t create task db record until task passes validation","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"2fe13dfb8a9c1ea10d12577f96bbf4c66fc30e76","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove task validation from api.Task.start"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* one of the goals of this patch is to separate log output of"},{"line_number":10,"context_line":"  task validation and task start printout."},{"line_number":11,"context_line":"* the next one is that we"},{"line_number":12,"context_line":"  should not create task db record and set task\u0027s status until task"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"5afe65bd_3599776f","line":9,"in_reply_to":"7a016987_8d6b17b9","updated":"2015-06-02 14:28:35.000000000","message":"Done","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"}],"rally/api.py":[{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        return objects.Task(deployment_uuid\u003ddeployment_uuid, tag\u003dtag)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def validate(cls, deployment, config, **task_additional_attributes):"},{"line_number":159,"context_line":"        \"\"\"Validate a task config against specified deployment."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_4120a7f7","line":158,"updated":"2015-03-23 12:49:05.000000000","message":"Don\u0027t forget to complete docstrings if you add new parameters.","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        return objects.Task(deployment_uuid\u003ddeployment_uuid, tag\u003dtag)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def validate(cls, deployment, config, **task_additional_attributes):"},{"line_number":159,"context_line":"        \"\"\"Validate a task config against specified deployment."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_62eff8e9","line":158,"in_reply_to":"1a6ced46_4120a7f7","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        benchmark_engine \u003d engine.BenchmarkEngine("},{"line_number":168,"context_line":"            config, task, admin\u003ddeployment[\"admin\"], users\u003ddeployment[\"users\"])"},{"line_number":169,"context_line":"        try:"},{"line_number":170,"context_line":"            benchmark_engine.validate()"},{"line_number":171,"context_line":"            return task"},{"line_number":172,"context_line":"        except exceptions.InvalidTaskException:"},{"line_number":173,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_f4714f78","line":170,"updated":"2015-03-23 12:49:05.000000000","message":"I prefer just run benchmark_engine.validate() without try here to get exceptions.InvalidTaskException here if task is not valid and than handle it in _load_and_validate_task","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        benchmark_engine \u003d engine.BenchmarkEngine("},{"line_number":168,"context_line":"            config, task, admin\u003ddeployment[\"admin\"], users\u003ddeployment[\"users\"])"},{"line_number":169,"context_line":"        try:"},{"line_number":170,"context_line":"            benchmark_engine.validate()"},{"line_number":171,"context_line":"            return task"},{"line_number":172,"context_line":"        except exceptions.InvalidTaskException:"},{"line_number":173,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_87ede6b9","line":170,"in_reply_to":"1a6ced46_f4714f78","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.fake:"},{"line_number":193,"context_line":"            task.make_real()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":196,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_c1e737e3","line":193,"updated":"2015-03-23 12:49:05.000000000","message":"I prefere something more clear like task.write_to_db() here (please look at my comments to rally/objects/task.py)","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.fake:"},{"line_number":193,"context_line":"            task.make_real()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":196,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_2be154fe","line":193,"in_reply_to":"1a6ced46_c1e737e3","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b263d485e709853f3650c19d983b2df33819f076","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":162,"context_line":"        :param config: a dict with a task configuration"},{"line_number":163,"context_line":"        :param tas_attributes: task attributes, such as uuid, status, tag etc."},{"line_number":164,"context_line":"        :returns: validated Task object"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa963961_ef920257","line":163,"updated":"2015-03-27 15:19:05.000000000","message":"typo * task_attributes","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"54416f2fa50885d5dd86b96f609df472e47c5c9a","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":162,"context_line":"        :param config: a dict with a task configuration"},{"line_number":163,"context_line":"        :param tas_attributes: task attributes, such as uuid, status, tag etc."},{"line_number":164,"context_line":"        :returns: validated Task object"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_1d40cfa4","line":163,"in_reply_to":"fa963961_ef920257","updated":"2015-03-31 16:37:39.000000000","message":"Done","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"091442e93f8a902d77860fe5dbf31178db223196","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.fake:"},{"line_number":193,"context_line":"            task \u003d objects.Task(task\u003dNone, fake\u003dFalse, **task.task)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_64486e5c","line":192,"updated":"2015-03-30 01:49:39.000000000","message":"I strongly prefer to remove this code or raise some nasty Exception, like you are using wrongly rally and so on.","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"54416f2fa50885d5dd86b96f609df472e47c5c9a","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.fake:"},{"line_number":193,"context_line":"            task \u003d objects.Task(task\u003dNone, fake\u003dFalse, **task.task)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_fd3c0b31","line":192,"in_reply_to":"da9b358b_64486e5c","updated":"2015-03-31 16:37:39.000000000","message":"Done","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"be4febcc3a58c939dbd715ae04fee9e67417bd7f","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.fake:"},{"line_number":193,"context_line":"            raise exceptions.FakeTaskException(task[\"uuid\"])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa041b7_f7ce5b59","line":192,"updated":"2015-04-02 13:59:37.000000000","message":"Just a recommendation: IMHO `task.is_fake\u0027 is much better","commit_id":"0336fc6d4c8033713d27661822fcbeb69885b9ae"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"94ac2500974e241cf67c77c24d88a5fff413bf05","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.fake:"},{"line_number":193,"context_line":"            raise exceptions.FakeTaskException(task[\"uuid\"])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa041b7_0ccbdfa6","line":192,"in_reply_to":"baa041b7_f7ce5b59","updated":"2015-04-03 00:42:04.000000000","message":"Done","commit_id":"0336fc6d4c8033713d27661822fcbeb69885b9ae"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"781b83efd5757962e7d7fd3fcfb0ae287011994d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.is_fake:"},{"line_number":193,"context_line":"            raise exceptions.FakeTaskException(task[\"uuid\"])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":196,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa041b7_892a1d2b","line":193,"updated":"2015-04-04 00:38:53.000000000","message":"We are working on reducing amount of useless exceptions. This is ideal candidate of what we are trying to remove from Rally code base. \n\n\njust do: \n\n  if task.is_fake: \n     raise ValueError(_(\"You are doing something wrong, you can\u0027t run fake task\"))","commit_id":"a22ed4e0af786182965107ef6d3ab0ad15943701"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"fa97563dc920e8b23e715505d996e1e2e99382b8","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if task.is_fake:"},{"line_number":193,"context_line":"            raise exceptions.FakeTaskException(task[\"uuid\"])"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":196,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa53dc9_85e70612","line":193,"in_reply_to":"baa041b7_892a1d2b","updated":"2015-04-06 13:09:45.000000000","message":"Done","commit_id":"a22ed4e0af786182965107ef6d3ab0ad15943701"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c6734d087ad9fdc8151c41726b24de951cc1568f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":167,"context_line":"        task \u003d objects.Task(deployment_uuid\u003ddeployment[\"uuid\"], fake\u003dTrue,"},{"line_number":168,"context_line":"                            **task_attributes)"},{"line_number":169,"context_line":"        benchmark_engine \u003d engine.BenchmarkEngine("},{"line_number":170,"context_line":"            config, task, admin\u003ddeployment[\"admin\"], users\u003ddeployment[\"users\"])"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_db8721d6","line":168,"updated":"2015-04-12 09:25:03.000000000","message":"why we need this to pass here? \nI am really not sure...","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"af3f7ea4b13f703dbcc44cc98e48ca10d2011408","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":167,"context_line":"        task \u003d objects.Task(deployment_uuid\u003ddeployment[\"uuid\"], fake\u003dTrue,"},{"line_number":168,"context_line":"                            **task_attributes)"},{"line_number":169,"context_line":"        benchmark_engine \u003d engine.BenchmarkEngine("},{"line_number":170,"context_line":"            config, task, admin\u003ddeployment[\"admin\"], users\u003ddeployment[\"users\"])"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9abe1de1_b1f7f0f4","line":168,"in_reply_to":"7aaa499b_db8721d6","updated":"2015-04-27 14:21:47.000000000","message":"Done","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":162,"context_line":"        :param config: a dict with a task configuration"},{"line_number":163,"context_line":"        :param task_attributes: task attributes, such as uuid, status, tag etc."},{"line_number":164,"context_line":"        :returns: validated Task object"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_02b06f42","line":163,"updated":"2015-04-29 13:04:35.000000000","message":"Missing parameter.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":162,"context_line":"        :param config: a dict with a task configuration"},{"line_number":163,"context_line":"        :param task_attributes: task attributes, such as uuid, status, tag etc."},{"line_number":164,"context_line":"        :returns: validated Task object"},{"line_number":165,"context_line":"        \"\"\""},{"line_number":166,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_ecad6f89","line":163,"in_reply_to":"5ad0253b_02b06f42","updated":"2015-04-30 10:13:35.000000000","message":"Done","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        if task.is_fake:"},{"line_number":191,"context_line":"            raise ValueError(_("},{"line_number":192,"context_line":"                \"You are doing something wrong, you can\u0027t run fake task\"))"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_427c2772","line":191,"updated":"2015-04-29 13:04:35.000000000","message":"I don\u0027t like ValueError.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        task \u003d task or objects.Task(deployment_uuid\u003ddeployment[\"uuid\"])"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        if task.is_fake:"},{"line_number":191,"context_line":"            raise ValueError(_("},{"line_number":192,"context_line":"                \"You are doing something wrong, you can\u0027t run fake task\"))"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_6c995f6e","line":191,"in_reply_to":"5ad0253b_427c2772","updated":"2015-04-30 10:13:35.000000000","message":"That was Boris\u0027 recomendation on patchset #11\n\n\u003e\u003e\u003e\nWe are working on reducing amount of useless exceptions. This is ideal candidate of what we are trying to remove from Rally code base.\njust do:\n  if task.is_fake: \n     raise ValueError(_(\"You are doing something wrong, you can\u0027t run fake task\"))","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0c8caeb88d9df63f7b2b2427334c1cb6894ddc73","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":162,"context_line":"        :param config: a dict with a task configuration"},{"line_number":163,"context_line":"        :returns: validated Task object"},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":166,"context_line":"        task \u003d objects.Task(deployment_uuid\u003ddeployment[\"uuid\"], fake\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_e3830055","line":163,"updated":"2015-05-03 03:14:19.000000000","message":"this method doesn\u0027t return anything","commit_id":"e0f5d95650d31437193fedf70479593797bdac68"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bc2f12f6109134bf966aa0ff1ae19c219444ad3d","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param deployment: UUID or name of the deployment"},{"line_number":162,"context_line":"        :param config: a dict with a task configuration"},{"line_number":163,"context_line":"        :returns: validated Task object"},{"line_number":164,"context_line":"        \"\"\""},{"line_number":165,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":166,"context_line":"        task \u003d objects.Task(deployment_uuid\u003ddeployment[\"uuid\"], fake\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_c5d696f0","line":163,"in_reply_to":"3acd31a7_e3830055","updated":"2015-05-05 12:15:41.000000000","message":"Done","commit_id":"e0f5d95650d31437193fedf70479593797bdac68"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if task.is_temporary:"},{"line_number":189,"context_line":"            raise ValueError(_("},{"line_number":190,"context_line":"                \"You are doing something wrong, you can\u0027t run temporary task\"))"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":193,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":17,"id":"9af37de9_8fba756d","line":190,"updated":"2015-05-09 19:57:16.000000000","message":"This line is too long.\n\nStart with the exact cause and continue with the explanation. Please use third form:\n \"Unable to run a temporary task. Please check your code\"","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if task.is_temporary:"},{"line_number":189,"context_line":"            raise ValueError(_("},{"line_number":190,"context_line":"                \"You are doing something wrong, you can\u0027t run temporary task\"))"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":193,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_af40ce07","line":190,"in_reply_to":"9af37de9_8fba756d","updated":"2015-05-22 01:15:08.000000000","message":"Done","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3ee609265c91bf0f2a74d75fb3f3dcb2e2c332d8","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if task.is_temporary:"},{"line_number":196,"context_line":"            raise ValueError(_("},{"line_number":197,"context_line":"                \"Unable to run a temporary task. Please check your code.\"))"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":200,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba3cc151_f0cd7366","line":197,"updated":"2015-07-02 22:55:02.000000000","message":"I think we should specify why this temporary task was created.","commit_id":"60b86f2b3e0c18dfeb82c1e58c3924307318123d"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"5acb491949882e5c478cd389f542d1a1115d6dad","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if task.is_temporary:"},{"line_number":196,"context_line":"            raise ValueError(_("},{"line_number":197,"context_line":"                \"Unable to run a temporary task. Please check your code.\"))"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":200,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_e756e2cd","line":197,"updated":"2015-07-06 03:54:21.000000000","message":"We should create a new exception in rally/exceptions.py to describe what is not excepted here.","commit_id":"1f2c86b1809d589575752ad5091558cba8848dc8"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"dc4e0121b698af9125e22e8f1ebffe6eabe15b9d","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if task.is_temporary:"},{"line_number":196,"context_line":"            raise ValueError(_("},{"line_number":197,"context_line":"                \"Unable to run a temporary task. Please check your code.\"))"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":200,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_784b1e5a","line":197,"in_reply_to":"ba3cc151_02540a52","updated":"2015-07-07 03:35:47.000000000","message":"like this:\n\nif task.is_temporary:\n    rasie exceptions.TemporaryTaskNotAllowed()","commit_id":"1f2c86b1809d589575752ad5091558cba8848dc8"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"50ee38487b3e54adc479769fd63bce35e353a125","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if task.is_temporary:"},{"line_number":196,"context_line":"            raise ValueError(_("},{"line_number":197,"context_line":"                \"Unable to run a temporary task. Please check your code.\"))"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":200,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_9b030e42","line":197,"in_reply_to":"ba3cc151_784b1e5a","updated":"2015-07-08 23:38:13.000000000","message":"Whell...\n\nBoris Pavlovic\nApr 4 3:38 AM\n\nPatch Set 11: Code-Review-1\n\n(3 comments)\nrally/api.py\nLine 193:\n\nWe are working on reducing amount of useless exceptions. This is ideal candidate of what we are trying to remove from Rally code base.\n\njust do:\n\nif task.is_fake:\nraise ValueError(_(\"You are doing something wrong, you can\u0027t run fake task\"))","commit_id":"1f2c86b1809d589575752ad5091558cba8848dc8"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"d7f01186c56fa82365440662baff42b8ce6312dd","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if task.is_temporary:"},{"line_number":196,"context_line":"            raise ValueError(_("},{"line_number":197,"context_line":"                \"Unable to run a temporary task. Please check your code.\"))"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        LOG.info(\"Benchmark Task %s on Deployment %s\" % (task[\"uuid\"],"},{"line_number":200,"context_line":"                                                         deployment[\"uuid\"]))"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba3cc151_02540a52","line":197,"in_reply_to":"ba3cc151_e756e2cd","updated":"2015-07-06 11:29:50.000000000","message":"please clarify your point\n\u003e\u003e describe what is not excepted here","commit_id":"1f2c86b1809d589575752ad5091558cba8848dc8"}],"rally/cli/commands/task.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"8986fcb66046b307f13e35c1ef7de02b83b43e89","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"            print(_(\"Input task is:\\n%s\\n\") % rendered_task)"},{"line_number":115,"context_line":"            try:"},{"line_number":116,"context_line":"                parsed_task \u003d yaml.safe_load(rendered_task)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            except Exception as e:"},{"line_number":119,"context_line":"                print(_(\"Wrong format of rendered input task. It should be \""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba3cc151_b6a91292","line":116,"updated":"2015-07-03 10:39:01.000000000","message":"Do we really need this variable?","commit_id":"60b86f2b3e0c18dfeb82c1e58c3924307318123d"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"8986fcb66046b307f13e35c1ef7de02b83b43e89","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                      file\u003dsys.stderr)"},{"line_number":122,"context_line":"                raise FailedToLoadTask()"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"            print(_(\"Task syntax is correct :)\"))"},{"line_number":125,"context_line":"            return parsed_task"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba3cc151_f68a3a1a","line":124,"updated":"2015-07-03 10:39:01.000000000","message":"I think two prints \"Task syntax is correct :)\" and \"Task config is valid :)\" is overhead) Don\u0027t the second mean the first print?","commit_id":"60b86f2b3e0c18dfeb82c1e58c3924307318123d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"55ec7b901227362ec86659e76d4e4d9b0783b569","unresolved":false,"context_lines":[{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        This will produce a lot of output data about every iteration."},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        :param task_id: Task uuid"},{"line_number":441,"context_line":"        \"\"\""},{"line_number":442,"context_line":"        results \u003d [{\"key\": x[\"key\"], \"result\": x[\"data\"][\"raw\"],"},{"line_number":443,"context_line":"                    \"sla\": x[\"data\"][\"sla\"],"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba3cc151_5d7b2f7b","line":440,"updated":"2015-07-03 09:14:52.000000000","message":"please, add here check that task is not failed.","commit_id":"60b86f2b3e0c18dfeb82c1e58c3924307318123d"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9b2a4a072abb1498f9315f6b2bfc032985f4de2a","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        \"\"\""},{"line_number":163,"context_line":"        try:"},{"line_number":164,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":165,"context_line":"                                         deployment)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        except (exceptions.InvalidTaskException, FailedToLoadTask) as e:"},{"line_number":168,"context_line":"            print(e, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa1b9901_47b4e680","line":165,"updated":"2015-08-19 22:16:24.000000000","message":"This doesn\u0027t work for us. As I previously said long long ago: \n\n  - rally task validate (doesn\u0027t create a task)\n\n  - rally task start (creates task and validates) \n\nIt means that we will store information about validation failure if it fails to start because of validation. \n\nIn your patch in both cases we are using temporary task during validation.\n\n\nWhat we should do here is: \n\n  - create task \n  - pass to self._load_and_validate_task TaskUUID of created task \n    and if validation failed store validation logs (as it was done before) \n\nin case of validation: \n\n  - just call self._load_and_validate_task (which will create temporary task)","commit_id":"a8f31c72007802b0e59a366f44af6aa90ca99b81"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"21228be52da5cf26f80658e95380e12e0403f293","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        task_instance \u003d api.Task.create(deployment, tag)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            input_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment,"},{"line_number":214,"context_line":"                task_instance\u003dtask_instance)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_fb5d0b49","line":212,"updated":"2015-09-02 03:20:49.000000000","message":"actually these codes could be replace with validate() from L148","commit_id":"284b9d92b5d3d779e53b56bae6ee43fa3403dba5"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"608c32162b2e1f797351450f643168f91c4bdaa3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        task_instance \u003d api.Task.create(deployment, tag)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            input_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment,"},{"line_number":214,"context_line":"                task_instance\u003dtask_instance)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"da20952f_fb0b9422","line":212,"in_reply_to":"da20952f_fb5d0b49","updated":"2015-09-03 01:36:30.000000000","message":"It\u0027s not. Cause cli specific decorators of \u0027validate\u0027","commit_id":"284b9d92b5d3d779e53b56bae6ee43fa3403dba5"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"1bc6d2ccacfd19c8ef516191c9d14500826f7f7f","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"},{"line_number":132,"context_line":"                                deployment, task_instance\u003dNone):"},{"line_number":133,"context_line":"        if task_instance and not os.path.isfile(task):"},{"line_number":134,"context_line":"            task_instance.set_failed(log\u003d\"No such file \u0027%s\u0027\" % task)"},{"line_number":135,"context_line":"            raise IOError(\"File \u0027%s\u0027 is not found.\" % task)"},{"line_number":136,"context_line":"        input_task \u003d self._load_task(task, task_args, task_args_file)"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a1a9d01_41ec3dc7","line":133,"range":{"start_line":133,"start_character":11,"end_line":133,"end_character":25},"updated":"2015-09-25 14:13:19.000000000","message":"I think this if block should be rewritten with:\n\n if not os.path.isfile(task):\n     if task_instance:\n         task_instance.set_failed(log\u003d\"No such file \u0027%s\u0027\" % task)\n     raise IOError(\"File \u0027%s\u0027 is not found.\" % task)\n\n\nBecause we have buggy validation message if run `task validate\u0027 for missed file: http://paste.openstack.org/show/474040/","commit_id":"8f9adb789455d17542514ddb4a72c82cbbdd049d"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"f65ccc8b120b77b35b7033a85b25fafee0ce584b","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"},{"line_number":132,"context_line":"                                deployment, task_instance\u003dNone):"},{"line_number":133,"context_line":"        if task_instance and not os.path.isfile(task):"},{"line_number":134,"context_line":"            task_instance.set_failed(log\u003d\"No such file \u0027%s\u0027\" % task)"},{"line_number":135,"context_line":"            raise IOError(\"File \u0027%s\u0027 is not found.\" % task)"},{"line_number":136,"context_line":"        input_task \u003d self._load_task(task, task_args, task_args_file)"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a1a9d01_21b6e98a","line":133,"range":{"start_line":133,"start_character":11,"end_line":133,"end_character":25},"in_reply_to":"9a1a9d01_41ec3dc7","updated":"2015-09-25 14:47:14.000000000","message":"Done","commit_id":"8f9adb789455d17542514ddb4a72c82cbbdd049d"}],"rally/cmd/commands/task.py":[{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                raise FailedToLoadTask()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            task \u003d api.Task.validate(deployment, task_conf,"},{"line_number":127,"context_line":"                                     **additional_task_attributes)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            if task:"},{"line_number":130,"context_line":"                return (task, task_conf)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_a18ddb33","line":127,"updated":"2015-03-23 12:49:05.000000000","message":"I prefer not to return something from api.Task.validate but get proper exception from it and call api.Task.validate into a try block after yaml.safe_load to get more structured code like http://pastebin.com/XEEgk7qc","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                raise FailedToLoadTask()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            task \u003d api.Task.validate(deployment, task_conf,"},{"line_number":127,"context_line":"                                     **additional_task_attributes)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            if task:"},{"line_number":130,"context_line":"                return (task, task_conf)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_b92da797","line":127,"in_reply_to":"1a6ced46_a18ddb33","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ce977011cf40666f8a2496bd5008f9094c9e3399","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            if task:"},{"line_number":130,"context_line":"                return (task, task_conf)"},{"line_number":131,"context_line":"            else:"},{"line_number":132,"context_line":"                raise FailedToLoadTask()"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @cliutils.deprecated_args("}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_24d219d1","line":131,"updated":"2015-03-20 16:53:09.000000000","message":"This `else\u0027 is not required (we have `return\u0027 above)","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"            if task:"},{"line_number":130,"context_line":"                return (task, task_conf)"},{"line_number":131,"context_line":"            else:"},{"line_number":132,"context_line":"                raise FailedToLoadTask()"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @cliutils.deprecated_args("}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_d91ee35e","line":131,"in_reply_to":"9a80dd14_24d219d1","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ce977011cf40666f8a2496bd5008f9094c9e3399","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                               is jinja2 template."},{"line_number":162,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":163,"context_line":"        \"\"\""},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":166,"context_line":"                                         deployment)"},{"line_number":167,"context_line":"            print(\"Task config is valid :)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_3f7860c3","line":164,"updated":"2015-03-20 16:53:09.000000000","message":"Now, in this method, we only call _load_and_validate_task(), so IMHO this can be simplified:\n\n * move body of _load_and_validate_task here\n * delete _load_and_validate_task\n * refactor another calls of _load_and_validate_task() to validate()","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                               is jinja2 template."},{"line_number":162,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":163,"context_line":"        \"\"\""},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":166,"context_line":"                                         deployment)"},{"line_number":167,"context_line":"            print(\"Task config is valid :)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_947e5be3","line":164,"in_reply_to":"9a80dd14_3f7860c3","updated":"2015-03-23 12:49:05.000000000","message":"+1 to Alexander\u0027s comment","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                               is jinja2 template."},{"line_number":162,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":163,"context_line":"        \"\"\""},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":166,"context_line":"                                         deployment)"},{"line_number":167,"context_line":"            print(\"Task config is valid :)\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_508b9dc2","line":164,"in_reply_to":"9a80dd14_3f7860c3","updated":"2015-03-25 15:54:45.000000000","message":"there are many of cli related stuff in decoratos of \u0027validate\u0027 and \u0027start\u0027 methods. We need no this stuff during load from json/yaml and validation. Mean \u0027validate\u0027 as a cli wrapper of _load_and_validate","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            validated_task, task_conf \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment, tag\u003dtag)"},{"line_number":214,"context_line":"            print(\"Task config is valid :)\")"},{"line_number":215,"context_line":"        except FailedToLoadTask:"},{"line_number":216,"context_line":"            return(1)"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_94657b47","line":214,"updated":"2015-03-23 12:49:05.000000000","message":"We already have this message in \"validate\" method","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            validated_task, task_conf \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment, tag\u003dtag)"},{"line_number":214,"context_line":"            print(\"Task config is valid :)\")"},{"line_number":215,"context_line":"        except FailedToLoadTask:"},{"line_number":216,"context_line":"            return(1)"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_f06ac9ec","line":214,"in_reply_to":"1a6ced46_94657b47","updated":"2015-03-25 15:54:45.000000000","message":"Done","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"091442e93f8a902d77860fe5dbf31178db223196","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                raise FailedToLoadTask()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            print(_(\"Input task is:\\n%s\\n\") % rendered_task)"},{"line_number":116,"context_line":"            try:"},{"line_number":117,"context_line":"                task_conf \u003d yaml.safe_load(rendered_task)"},{"line_number":118,"context_line":"                task \u003d api.Task.validate(deployment, task_conf,"},{"line_number":119,"context_line":"                                         **additional_task_attributes)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_64bbce0f","line":116,"updated":"2015-03-30 01:49:39.000000000","message":"This method is already TOO complicated don\u0027t make it absolutely untestable. \n\n\nSplit validation and load operations in separated methods","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"54416f2fa50885d5dd86b96f609df472e47c5c9a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                raise FailedToLoadTask()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            print(_(\"Input task is:\\n%s\\n\") % rendered_task)"},{"line_number":116,"context_line":"            try:"},{"line_number":117,"context_line":"                task_conf \u003d yaml.safe_load(rendered_task)"},{"line_number":118,"context_line":"                task \u003d api.Task.validate(deployment, task_conf,"},{"line_number":119,"context_line":"                                         **additional_task_attributes)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_15318805","line":116,"in_reply_to":"da9b358b_64bbce0f","updated":"2015-03-31 16:37:39.000000000","message":"Done","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b263d485e709853f3650c19d983b2df33819f076","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                      file\u003dsys.stderr)"},{"line_number":128,"context_line":"                raise FailedToLoadTask()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"            print(\"Task config is valid :)\")"},{"line_number":131,"context_line":"            return (task, task_conf)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @cliutils.deprecated_args("}],"source_content_type":"text/x-python","patch_set":6,"id":"fa963961_8f0ed332","line":130,"updated":"2015-03-27 15:19:05.000000000","message":"Why we don\u0027t use internationalization here?","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"54416f2fa50885d5dd86b96f609df472e47c5c9a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                      file\u003dsys.stderr)"},{"line_number":128,"context_line":"                raise FailedToLoadTask()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"            print(\"Task config is valid :)\")"},{"line_number":131,"context_line":"            return (task, task_conf)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @cliutils.deprecated_args("}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_bd4b23b0","line":130,"in_reply_to":"fa963961_8f0ed332","updated":"2015-03-31 16:37:39.000000000","message":"Done","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"091442e93f8a902d77860fe5dbf31178db223196","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":165,"context_line":"                                         deployment)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        except FailedToLoadTask:"},{"line_number":168,"context_line":"            return(1)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @cliutils.deprecated_args("}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_84b93231","line":167,"updated":"2015-03-30 01:49:39.000000000","message":"This is bad. You shouldn\u0027t hide InvalidTaks under FailedToLoadTask exception. These things are absolutelly different and should be processed in different ways","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"54416f2fa50885d5dd86b96f609df472e47c5c9a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":165,"context_line":"                                         deployment)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        except FailedToLoadTask:"},{"line_number":168,"context_line":"            return(1)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @cliutils.deprecated_args("}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_f52bc492","line":167,"in_reply_to":"da9b358b_84b93231","updated":"2015-03-31 16:37:39.000000000","message":"Done","commit_id":"122c70659aa622a8227ccf397e7c304121d6c13b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"be4febcc3a58c939dbd715ae04fee9e67417bd7f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    Set of commands that allow you to manage benchmarking tasks and results."},{"line_number":51,"context_line":"    \"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _load_task(self, task_file, task_args\u003dNone,"},{"line_number":54,"context_line":"                   task_args_file\u003dNone):"},{"line_number":55,"context_line":"        \"\"\"Load tasks template from file and render it with passed args."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        :param task_file: Path to file with input task"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa041b7_12de6d6d","line":54,"range":{"start_line":53,"start_character":0,"end_line":54,"end_character":40},"updated":"2015-04-02 13:59:37.000000000","message":"What is the reason to move `task_args_file\u0027 to next line? There is enough space to keep method signature in one line","commit_id":"0336fc6d4c8033713d27661822fcbeb69885b9ae"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"94ac2500974e241cf67c77c24d88a5fff413bf05","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    Set of commands that allow you to manage benchmarking tasks and results."},{"line_number":51,"context_line":"    \"\"\""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def _load_task(self, task_file, task_args\u003dNone,"},{"line_number":54,"context_line":"                   task_args_file\u003dNone):"},{"line_number":55,"context_line":"        \"\"\"Load tasks template from file and render it with passed args."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        :param task_file: Path to file with input task"}],"source_content_type":"text/x-python","patch_set":10,"id":"baa041b7_6c8cab7f","line":54,"range":{"start_line":53,"start_character":0,"end_line":54,"end_character":40},"in_reply_to":"baa041b7_12de6d6d","updated":"2015-04-03 00:42:04.000000000","message":"Done","commit_id":"0336fc6d4c8033713d27661822fcbeb69885b9ae"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"781b83efd5757962e7d7fd3fcfb0ae287011994d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                               is jinja2 template."},{"line_number":154,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":155,"context_line":"        \"\"\""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            task_conf \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":158,"context_line":"            api.Task.validate(deployment, task_conf)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"baa041b7_09460dbf","line":156,"updated":"2015-04-04 00:38:53.000000000","message":"What I asked is to make common method for validate and task start methods.\n\nWhat I thought is: \n\n  def load_and_validate_task(self, deployment, task, task_args, task_args_file): \n     input_task \u003d self._load_task(task, task_args, task_args_file)\n\n     try: \n        api.Task.validate(deployment, input_task)      \n     except exceptions.InvalidTaskException as e :\n        print(e, file\u003dsys.stderr)\n        raise \n\n     return input task \n\n\n\n  def validate()\n     try: \n        input_task \u003d self.load_and_validate_tast(deployment, input_task)\n     except (exceptions.InvalidTaskException, FailedToLoadTask): \n        return 1\n\n\n   def start():\n      try: \n        input_task \u003d self.load_and_validate_tast(deployment, input_task)\n     except (exceptions.InvalidTaskException, FailedToLoadTask): \n        return 1\n    \n      # rest of code.","commit_id":"a22ed4e0af786182965107ef6d3ab0ad15943701"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"fa97563dc920e8b23e715505d996e1e2e99382b8","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                               is jinja2 template."},{"line_number":154,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":155,"context_line":"        \"\"\""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            task_conf \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":158,"context_line":"            api.Task.validate(deployment, task_conf)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa53dc9_05889621","line":156,"in_reply_to":"baa041b7_09460dbf","updated":"2015-04-06 13:09:45.000000000","message":"Done","commit_id":"a22ed4e0af786182965107ef6d3ab0ad15943701"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"781b83efd5757962e7d7fd3fcfb0ae287011994d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        \"\"\""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            task_conf \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":158,"context_line":"            api.Task.validate(deployment, task_conf)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        except exceptions.InvalidTaskException as e:"},{"line_number":161,"context_line":"            print(e, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa041b7_e9a2c9ad","line":158,"updated":"2015-04-04 00:38:53.000000000","message":"task_conf is bad name, that I am trying to replace in Rally for a long amount of time. \n\nIt should be called input_task (because it is not task configuration) so please keep old name. \n\nIt is better to have separated try/except it\u0027s more pythonic way to do.","commit_id":"a22ed4e0af786182965107ef6d3ab0ad15943701"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"fa97563dc920e8b23e715505d996e1e2e99382b8","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        \"\"\""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            task_conf \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":158,"context_line":"            api.Task.validate(deployment, task_conf)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        except exceptions.InvalidTaskException as e:"},{"line_number":161,"context_line":"            print(e, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa53dc9_25c5da5a","line":158,"in_reply_to":"baa041b7_e9a2c9ad","updated":"2015-04-06 13:09:45.000000000","message":"Done","commit_id":"a22ed4e0af786182965107ef6d3ab0ad15943701"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"81d573dfc159c61eb042ce0a8d1ba20f492395d9","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":165,"context_line":"                                         deployment)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        except Exception as e:"},{"line_number":168,"context_line":"            print(e, file\u003dsys.stderr)"},{"line_number":169,"context_line":"            return(1)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_e2b692db","line":167,"updated":"2015-04-07 15:19:29.000000000","message":"Catching all exceptions is often a bad solution - it is recommended to catch only *expected* exceptions (ref. https://docs.python.org/2/howto/doanddont.html#except)\n\nExample:\n\n except (exceptions.InvalidTaskException, FailedToLoadTask) as e:\n     ...","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bfc55f34ebe448128c492862b96bcf404670caf6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            self._load_and_validate_task(task, task_args, task_args_file,"},{"line_number":165,"context_line":"                                         deployment)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        except Exception as e:"},{"line_number":168,"context_line":"            print(e, file\u003dsys.stderr)"},{"line_number":169,"context_line":"            return(1)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_c11a147d","line":167,"in_reply_to":"9aa53dc9_e2b692db","updated":"2015-04-09 12:07:34.000000000","message":"Done","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c6734d087ad9fdc8151c41726b24de951cc1568f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            print(_(\"Task syntax is correct :)\"))"},{"line_number":124,"context_line":"            return parsed_task"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"},{"line_number":127,"context_line":"                                deployment):"},{"line_number":128,"context_line":"        input_task \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":129,"context_line":"        validated_task \u003d api.Task.validate(deployment, input_task)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_5b7431fc","line":126,"updated":"2015-04-12 09:25:03.000000000","message":"So after reading in more details code we should pass here\n\n task_object that may be fake in case of validation or real, but it should be create in api.Task.validate at all","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"af3f7ea4b13f703dbcc44cc98e48ca10d2011408","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            print(_(\"Task syntax is correct :)\"))"},{"line_number":124,"context_line":"            return parsed_task"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"},{"line_number":127,"context_line":"                                deployment):"},{"line_number":128,"context_line":"        input_task \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":129,"context_line":"        validated_task \u003d api.Task.validate(deployment, input_task)"}],"source_content_type":"text/x-python","patch_set":13,"id":"9abe1de1_cc7beb7a","line":126,"in_reply_to":"7aaa499b_5b7431fc","updated":"2015-04-27 14:21:47.000000000","message":"Done","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c6734d087ad9fdc8151c41726b24de951cc1568f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"},{"line_number":127,"context_line":"                                deployment):"},{"line_number":128,"context_line":"        input_task \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":129,"context_line":"        validated_task \u003d api.Task.validate(deployment, input_task)"},{"line_number":130,"context_line":"        print(_(\"Task config is valid :)\"))"},{"line_number":131,"context_line":"        return (input_task, validated_task)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_1b7ea9e4","line":129,"updated":"2015-04-12 09:25:03.000000000","message":"Validated task should be actually the same as input task.","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"af3f7ea4b13f703dbcc44cc98e48ca10d2011408","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def _load_and_validate_task(self, task, task_args, task_args_file,"},{"line_number":127,"context_line":"                                deployment):"},{"line_number":128,"context_line":"        input_task \u003d self._load_task(task, task_args, task_args_file)"},{"line_number":129,"context_line":"        validated_task \u003d api.Task.validate(deployment, input_task)"},{"line_number":130,"context_line":"        print(_(\"Task config is valid :)\"))"},{"line_number":131,"context_line":"        return (input_task, validated_task)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9abe1de1_0c820353","line":129,"in_reply_to":"7aaa499b_1b7ea9e4","updated":"2015-04-27 14:21:47.000000000","message":"Done","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c6734d087ad9fdc8151c41726b24de951cc1568f","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            input_task, validated_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            real_task \u003d objects.Task(task\u003dNone, fake\u003dFalse, tag\u003dtag,"},{"line_number":216,"context_line":"                                     **validated_task.task)"},{"line_number":217,"context_line":"            print(cliutils.make_header("},{"line_number":218,"context_line":"                  _(\"Task %(tag)s %(uuid)s: started\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_5b1d51bc","line":215,"updated":"2015-04-12 09:25:03.000000000","message":"real_task doesn\u0027t mean anything. \n\n  task_object","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"af3f7ea4b13f703dbcc44cc98e48ca10d2011408","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            input_task, validated_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            real_task \u003d objects.Task(task\u003dNone, fake\u003dFalse, tag\u003dtag,"},{"line_number":216,"context_line":"                                     **validated_task.task)"},{"line_number":217,"context_line":"            print(cliutils.make_header("},{"line_number":218,"context_line":"                  _(\"Task %(tag)s %(uuid)s: started\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"9abe1de1_8c961393","line":215,"in_reply_to":"7aaa499b_5b1d51bc","updated":"2015-04-27 14:21:47.000000000","message":"Done","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        \"\"\""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            input_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            task \u003d api.Task.create(deployment, tag)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_42ab078a","line":212,"updated":"2015-04-29 13:04:35.000000000","message":"I don\u0027t like this variable name. It should be called `input_task_description\u0027 or `input_task_params\u0027 IMO.\n\n`parsed_task\u0027 is fine.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        \"\"\""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        try:"},{"line_number":212,"context_line":"            input_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            task \u003d api.Task.create(deployment, tag)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_0c6b0b20","line":212,"in_reply_to":"5ad0253b_42ab078a","updated":"2015-04-30 10:13:35.000000000","message":"This comment isn\u0027t related to my task. I shouldn\u0027t rename variables.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            input_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            task \u003d api.Task.create(deployment, tag)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            print(cliutils.make_header("},{"line_number":218,"context_line":"                  _(\"Task %(tag)s %(uuid)s: started\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_e21d7310","line":215,"updated":"2015-04-29 13:04:35.000000000","message":"I don\u0027t like overwriting the argument.\n\nI think argument should be called `task_file\u0027 instead but this is unrelated change.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            input_task \u003d self._load_and_validate_task("},{"line_number":213,"context_line":"                task, task_args, task_args_file, deployment)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            task \u003d api.Task.create(deployment, tag)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            print(cliutils.make_header("},{"line_number":218,"context_line":"                  _(\"Task %(tag)s %(uuid)s: started\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_ec77af00","line":215,"in_reply_to":"5ad0253b_e21d7310","updated":"2015-04-30 10:13:35.000000000","message":"same as above","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":193,"context_line":"              tag\u003dNone, do_use\u003dFalse, abort_on_sla_failure\u003dFalse):"},{"line_number":194,"context_line":"        \"\"\"Start benchmark task."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        :param task: a file with yaml/json task"},{"line_number":197,"context_line":"        :param task_args: Input task args (dict in json/yaml). These args are"},{"line_number":198,"context_line":"                          used to render input task that is jinja2 template."},{"line_number":199,"context_line":"        :param task_args_file: File with input task args (dict in json/yaml)."}],"source_content_type":"text/x-python","patch_set":17,"id":"9af37de9_4f748dce","line":196,"updated":"2015-05-09 19:57:16.000000000","message":"please rename the parameter to the `task_file\u0027","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":193,"context_line":"              tag\u003dNone, do_use\u003dFalse, abort_on_sla_failure\u003dFalse):"},{"line_number":194,"context_line":"        \"\"\"Start benchmark task."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        :param task: a file with yaml/json task"},{"line_number":197,"context_line":"        :param task_args: Input task args (dict in json/yaml). These args are"},{"line_number":198,"context_line":"                          used to render input task that is jinja2 template."},{"line_number":199,"context_line":"        :param task_args_file: File with input task args (dict in json/yaml)."}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_6f4f7637","line":196,"in_reply_to":"9af37de9_4f748dce","updated":"2015-05-22 01:15:08.000000000","message":"This change is not related to my task.","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"}],"rally/objects/task.py":[{"author":{"_account_id":9180,"name":"Olga Kopylova","email":"olkonami@gmail.com","username":"olkonami"},"change_message_id":"9810d126f1ff8bba279c9b1850ffecf6288aae27","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.fake \u003d False"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if self.fake:"},{"line_number":126,"context_line":"            self.task \u003d task or {\"uuid\": str(uuid.uuid4())}"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_d717f54f","line":123,"updated":"2015-03-23 12:49:05.000000000","message":"I think we can get rid of this unclear \"fake\" at all. Just call\n\nself.task \u003d task or {\"uuid\": str(uuid.uuid4())}\n\nself.task.update(attributes)\n\nwhen creating objects.Task and write task to database after explicit call of appropriate method instead of calling \"make_real\"","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"b1671c5cc18c0e7f2aed2f46c17b95401569bf11","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self.fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.fake \u003d False"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if self.fake:"},{"line_number":126,"context_line":"            self.task \u003d task or {\"uuid\": str(uuid.uuid4())}"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6ced46_702419c5","line":123,"in_reply_to":"1a6ced46_d717f54f","updated":"2015-03-25 15:54:45.000000000","message":"We should have some way to determine, is the task real or fake. For this purpose \u0027self.fake\u0027 is.","commit_id":"adf30ce2dfa3bad7a7b98ff439da6c9e05f26eb2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c6734d087ad9fdc8151c41726b24de951cc1568f","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from rally import consts"},{"line_number":20,"context_line":"from rally import db"},{"line_number":21,"context_line":"from rally.db.sqlalchemy import models"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"TASK_RESULT_SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_9b23d905","line":21,"updated":"2015-04-12 09:25:03.000000000","message":"Please don\u0027t import models anywhere except rally.db.sqlalchemy.api they are for internal usage","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c6734d087ad9fdc8151c41726b24de951cc1568f","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.is_fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.is_fake \u003d False"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if self.is_fake:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_7b200df8","line":122,"updated":"2015-04-12 09:25:03.000000000","message":"It should be impossible to pass here models.Task","commit_id":"fd778e3df33e4fab823ed7491220d29fe7f345d0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            record. Used for special purposes, like task config validation."},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.is_fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.is_fake \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_6265e343","line":120,"updated":"2015-04-29 13:04:35.000000000","message":"I don\u0027t like the name `fake\u0027 -- it is not fake but incomplete. I think `dummy\u0027 or `validation\u0027 is a better name for this.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            record. Used for special purposes, like task config validation."},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.is_fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.is_fake \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_e74b4858","line":120,"in_reply_to":"5ad0253b_6265e343","updated":"2015-04-30 10:13:35.000000000","message":"IMO \u0027dummy\u0027 and \u0027validation\u0027 have as much sense as \u0027fake\u0027.\n\u003e\u003e but incomplete\nit\u0027s not incompleete - it\u0027s just fake, cause it\u0027s not in db, so, it has no state and can\u0027t be started or failed.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0c8caeb88d9df63f7b2b2427334c1cb6894ddc73","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from rally import consts"},{"line_number":20,"context_line":"from rally import db"},{"line_number":21,"context_line":"from rally.db.sqlalchemy import models"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"TASK_RESULT_SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_c386c464","line":21,"updated":"2015-05-03 03:14:19.000000000","message":"One more time. This is totally wrong. \n\n  cmd -\u003e api -\u003e objects -\u003e db.api -\u003e db.sqlalchemy.api -\u003e db.sqlalchemy.models","commit_id":"e0f5d95650d31437193fedf70479593797bdac68"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bc2f12f6109134bf966aa0ff1ae19c219444ad3d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from rally import consts"},{"line_number":20,"context_line":"from rally import db"},{"line_number":21,"context_line":"from rally.db.sqlalchemy import models"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"TASK_RESULT_SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_a58a7a19","line":21,"in_reply_to":"3acd31a7_c386c464","updated":"2015-05-05 12:15:41.000000000","message":"Done. Thanks.","commit_id":"e0f5d95650d31437193fedf70479593797bdac68"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0c8caeb88d9df63f7b2b2427334c1cb6894ddc73","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            like task config validation."},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.is_fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.is_fake \u003d False"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_639810c1","line":120,"updated":"2015-05-03 03:14:19.000000000","message":"Maybe we should call this temporary task","commit_id":"e0f5d95650d31437193fedf70479593797bdac68"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bc2f12f6109134bf966aa0ff1ae19c219444ad3d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            like task config validation."},{"line_number":118,"context_line":"        \"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.is_fake \u003d fake"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if isinstance(task, models.Task):"},{"line_number":123,"context_line":"            self.is_fake \u003d False"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_85a89e8e","line":120,"in_reply_to":"3acd31a7_639810c1","updated":"2015-05-05 12:15:41.000000000","message":"good point. thanks","commit_id":"e0f5d95650d31437193fedf70479593797bdac68"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \"\"\"Task object init"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        :param task: dictionary like object, that represents a task"},{"line_number":114,"context_line":"        :param temporary: if True, will be created task object with random"},{"line_number":115,"context_line":"            UUID. Does not create database record. Used for special purposes,"},{"line_number":116,"context_line":"            like task config validation."},{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        self.is_temporary \u003d temporary"}],"source_content_type":"text/x-python","patch_set":17,"id":"9af37de9_0f7e85ae","line":116,"range":{"start_line":114,"start_character":8,"end_line":116,"end_character":40},"updated":"2015-05-09 19:57:16.000000000","message":"The text here is bad. Please consult someone to write a better text (I\u0027m unable to do it, but I feel this is a bad text).","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \"\"\"Task object init"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        :param task: dictionary like object, that represents a task"},{"line_number":114,"context_line":"        :param temporary: if True, will be created task object with random"},{"line_number":115,"context_line":"            UUID. Does not create database record. Used for special purposes,"},{"line_number":116,"context_line":"            like task config validation."},{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        self.is_temporary \u003d temporary"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_2f6cde9a","line":116,"range":{"start_line":114,"start_character":8,"end_line":116,"end_character":40},"in_reply_to":"9af37de9_0f7e85ae","updated":"2015-05-22 01:15:08.000000000","message":"This text was approved by Boris. So, think your request already satisfied","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \"\"\"Task object init"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        :param task: dictionary like object, that represents a task"},{"line_number":114,"context_line":"        :param temporary: if True, will be created task object with random"},{"line_number":115,"context_line":"            UUID. Does not create database record. Used for special purposes,"},{"line_number":116,"context_line":"            like task config validation."},{"line_number":117,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"7a016987_edb3ab4b","line":114,"updated":"2015-05-29 01:06:21.000000000","message":"\"whenever this param is True the task will be created with a random UUID and no database record\".","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"2fe13dfb8a9c1ea10d12577f96bbf4c66fc30e76","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \"\"\"Task object init"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        :param task: dictionary like object, that represents a task"},{"line_number":114,"context_line":"        :param temporary: if True, will be created task object with random"},{"line_number":115,"context_line":"            UUID. Does not create database record. Used for special purposes,"},{"line_number":116,"context_line":"            like task config validation."},{"line_number":117,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"5afe65bd_55307356","line":114,"in_reply_to":"7a016987_edb3ab4b","updated":"2015-06-02 14:28:35.000000000","message":"Done","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"}],"tests/functional/test_cli_task.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"81d573dfc159c61eb042ce0a8d1ba20f492395d9","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        cfg \u003d self._get_sample_task_config()"},{"line_number":267,"context_line":"        config \u003d utils.TaskConfig(cfg)"},{"line_number":268,"context_line":"        output \u003d rally(\"task validate --task %s\" % config.filename)"},{"line_number":269,"context_line":"        self.assertIn(\"Task syntax is correct\", output)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_validate_is_invalid(self):"},{"line_number":272,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_dc2b73ea","line":269,"updated":"2015-04-07 15:19:29.000000000","message":"This is check for internationalized message, so in different locale this test (with proper translations) will fail.\n\nI recommend using one of 2 approaches:\n\n1) Remove this assertIn at all\n\nor,\n\n2) (IMHO this is better) make internationalized check:\n\n self.assertEqual(_(\"Task syntax is correct :)\\n\"), output)","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bfc55f34ebe448128c492862b96bcf404670caf6","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        cfg \u003d self._get_sample_task_config()"},{"line_number":267,"context_line":"        config \u003d utils.TaskConfig(cfg)"},{"line_number":268,"context_line":"        output \u003d rally(\"task validate --task %s\" % config.filename)"},{"line_number":269,"context_line":"        self.assertIn(\"Task syntax is correct\", output)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_validate_is_invalid(self):"},{"line_number":272,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_a47b9e8b","line":269,"in_reply_to":"9aa53dc9_dc2b73ea","updated":"2015-04-09 12:07:34.000000000","message":"Done","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"0c8caeb88d9df63f7b2b2427334c1cb6894ddc73","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        cfg \u003d self._get_sample_task_config()"},{"line_number":267,"context_line":"        config \u003d utils.TaskConfig(cfg)"},{"line_number":268,"context_line":"        output \u003d rally(\"task validate --task %s\" % config.filename)"},{"line_number":269,"context_line":"        self.assertIn(\"Task config is valid\", output)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_validate_is_invalid(self):"},{"line_number":272,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_2392189f","side":"PARENT","line":269,"updated":"2015-05-03 03:14:19.000000000","message":"why did you remove this?","commit_id":"7da396549d101670e54660561c7140e9076f35b8"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bc2f12f6109134bf966aa0ff1ae19c219444ad3d","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        cfg \u003d self._get_sample_task_config()"},{"line_number":267,"context_line":"        config \u003d utils.TaskConfig(cfg)"},{"line_number":268,"context_line":"        output \u003d rally(\"task validate --task %s\" % config.filename)"},{"line_number":269,"context_line":"        self.assertIn(\"Task config is valid\", output)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_validate_is_invalid(self):"},{"line_number":272,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3acd31a7_c5a57647","side":"PARENT","line":269,"in_reply_to":"3acd31a7_2392189f","updated":"2015-05-05 12:15:41.000000000","message":"Done","commit_id":"7da396549d101670e54660561c7140e9076f35b8"}],"tests/unit/cli/commands/test_task.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"c249b223edc5b6d177579791c3e86a676e8b1ae3","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    @mock.patch(\"rally.cli.commands.task.TaskCommands._load_task\","},{"line_number":107,"context_line":"                return_value\u003d{\"uuid\": \"some_uuid\"})"},{"line_number":108,"context_line":"    def test__load_and_validate_task(self, mock_load, mock_validate):"},{"line_number":109,"context_line":"            deployment \u003d \"some_deployment_uuid\""},{"line_number":110,"context_line":"            self.task._load_and_validate_task(\"some_task\", \"task_args\","},{"line_number":111,"context_line":"                                              \"task_args_file\", deployment)"},{"line_number":112,"context_line":"            mock_load.asselrt_called_once_with(\"some_task\", \"task_args\","}],"source_content_type":"text/x-python","patch_set":19,"id":"7a016987_e665a144","line":109,"updated":"2015-05-25 12:41:59.000000000","message":"Indentation seems to be 8 spaces instead of 4","commit_id":"2329f8ccb0603bfa9eece6a265234d689ea59ea8"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ec2933b4175a03cc9348b469e1aafb7159aab558","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    @mock.patch(\"rally.cli.commands.task.TaskCommands._load_task\","},{"line_number":107,"context_line":"                return_value\u003d{\"uuid\": \"some_uuid\"})"},{"line_number":108,"context_line":"    def test__load_and_validate_task(self, mock_load, mock_validate):"},{"line_number":109,"context_line":"            deployment \u003d \"some_deployment_uuid\""},{"line_number":110,"context_line":"            self.task._load_and_validate_task(\"some_task\", \"task_args\","},{"line_number":111,"context_line":"                                              \"task_args_file\", deployment)"},{"line_number":112,"context_line":"            mock_load.asselrt_called_once_with(\"some_task\", \"task_args\","}],"source_content_type":"text/x-python","patch_set":19,"id":"7a016987_41769f06","line":109,"in_reply_to":"7a016987_e665a144","updated":"2015-05-25 13:16:41.000000000","message":"Done","commit_id":"2329f8ccb0603bfa9eece6a265234d689ea59ea8"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        ]"},{"line_number":46,"context_line":"        task_conf \u003d self.task._load_task("},{"line_number":47,"context_line":"            \"in_task\", task_args_file\u003d\"in_args_path\")"},{"line_number":48,"context_line":"        self.assertEqual(task_conf, {\"ab\": 1})"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        mock_open.side_effect \u003d ["},{"line_number":51,"context_line":"            mock.mock_open(read_data\u003dinput_task).return_value"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a016987_ad881372","line":48,"updated":"2015-05-29 01:06:21.000000000","message":"AFAIR, order is otherwise.","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"2fe13dfb8a9c1ea10d12577f96bbf4c66fc30e76","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        ]"},{"line_number":46,"context_line":"        task_conf \u003d self.task._load_task("},{"line_number":47,"context_line":"            \"in_task\", task_args_file\u003d\"in_args_path\")"},{"line_number":48,"context_line":"        self.assertEqual(task_conf, {\"ab\": 1})"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        mock_open.side_effect \u003d ["},{"line_number":51,"context_line":"            mock.mock_open(read_data\u003dinput_task).return_value"}],"source_content_type":"text/x-python","patch_set":20,"id":"5afe65bd_75600f36","line":48,"in_reply_to":"7a016987_ad881372","updated":"2015-06-02 14:28:35.000000000","message":"Done","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        deployment \u003d \"some_deployment_uuid\""},{"line_number":110,"context_line":"        self.task._load_and_validate_task(\"some_task\", \"task_args\","},{"line_number":111,"context_line":"                                          \"task_args_file\", deployment)"},{"line_number":112,"context_line":"        mock_load.asselrt_called_once_with(\"some_task\", \"task_args\","},{"line_number":113,"context_line":"                                           \"task_args_file\")"},{"line_number":114,"context_line":"        mock_validate.assert_called_once_with(deployment,"},{"line_number":115,"context_line":"                                              mock_load.return_value)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a016987_6d7e9b6b","line":112,"updated":"2015-05-29 01:06:21.000000000","message":"Please call `assert_called_once_with\u0027","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"2fe13dfb8a9c1ea10d12577f96bbf4c66fc30e76","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        deployment \u003d \"some_deployment_uuid\""},{"line_number":110,"context_line":"        self.task._load_and_validate_task(\"some_task\", \"task_args\","},{"line_number":111,"context_line":"                                          \"task_args_file\", deployment)"},{"line_number":112,"context_line":"        mock_load.asselrt_called_once_with(\"some_task\", \"task_args\","},{"line_number":113,"context_line":"                                           \"task_args_file\")"},{"line_number":114,"context_line":"        mock_validate.assert_called_once_with(deployment,"},{"line_number":115,"context_line":"                                              mock_load.return_value)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5afe65bd_55f3d373","line":112,"in_reply_to":"7a016987_6d7e9b6b","updated":"2015-06-02 14:28:35.000000000","message":"Done","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"}],"tests/unit/cmd/commands/test_task.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"81d573dfc159c61eb042ce0a8d1ba20f492395d9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        super(TaskCommandsTestCase, self).setUp()"},{"line_number":33,"context_line":"        self.task \u003d task.TaskCommands()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch(\"rally.cmd.commands.task.api.Task.validate\","},{"line_number":36,"context_line":"                return_value\u003dfakes.FakeTask(uuid\u003d\"some_uuid\"))"},{"line_number":37,"context_line":"    @mock.patch(\"rally.cmd.commands.task.open\", create\u003dTrue)"},{"line_number":38,"context_line":"    def test_load_task(self, mock_open, mock_api_validate):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_56fa9fbe","line":35,"updated":"2015-04-07 15:19:29.000000000","message":"This mock is not required","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bfc55f34ebe448128c492862b96bcf404670caf6","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        super(TaskCommandsTestCase, self).setUp()"},{"line_number":33,"context_line":"        self.task \u003d task.TaskCommands()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @mock.patch(\"rally.cmd.commands.task.api.Task.validate\","},{"line_number":36,"context_line":"                return_value\u003dfakes.FakeTask(uuid\u003d\"some_uuid\"))"},{"line_number":37,"context_line":"    @mock.patch(\"rally.cmd.commands.task.open\", create\u003dTrue)"},{"line_number":38,"context_line":"    def test_load_task(self, mock_open, mock_api_validate):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_24966e93","line":35,"in_reply_to":"9aa53dc9_56fa9fbe","updated":"2015-04-09 12:07:34.000000000","message":"Done","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"81d573dfc159c61eb042ce0a8d1ba20f492395d9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        ]"},{"line_number":103,"context_line":"        self.assertRaises(task.FailedToLoadTask,"},{"line_number":104,"context_line":"                          self.task._load_task, \"in_task\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @mock.patch(\"rally.cmd.commands.task.objects.Task\","},{"line_number":107,"context_line":"                return_value\u003dfakes.FakeTask(uuid\u003d\"some_new_uuid\", tag\u003d\"tag\"))"},{"line_number":108,"context_line":"    @mock.patch(\"rally.cmd.commands.task.TaskCommands.use\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_36383bd3","line":105,"updated":"2015-04-07 15:19:29.000000000","message":"Here must be `def test__load_and_validate_task\u0027 (this test is missed)","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"bfc55f34ebe448128c492862b96bcf404670caf6","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        ]"},{"line_number":103,"context_line":"        self.assertRaises(task.FailedToLoadTask,"},{"line_number":104,"context_line":"                          self.task._load_task, \"in_task\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    @mock.patch(\"rally.cmd.commands.task.objects.Task\","},{"line_number":107,"context_line":"                return_value\u003dfakes.FakeTask(uuid\u003d\"some_new_uuid\", tag\u003d\"tag\"))"},{"line_number":108,"context_line":"    @mock.patch(\"rally.cmd.commands.task.TaskCommands.use\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"9aa53dc9_0457ea26","line":105,"in_reply_to":"9aa53dc9_36383bd3","updated":"2015-04-09 12:07:34.000000000","message":"Done","commit_id":"338b8837bcf5762d8574bcc5a8c66c9bb1ed1108"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        ]"},{"line_number":46,"context_line":"        task_conf \u003d self.task._load_task("},{"line_number":47,"context_line":"            \"in_task\", task_args_file\u003d\"in_args_path\")"},{"line_number":48,"context_line":"        self.assertEqual(task_conf, {\"ab\": 1})"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        mock_open.side_effect \u003d ["},{"line_number":51,"context_line":"            mock.mock_open(read_data\u003dinput_task).return_value"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_e2c7b343","line":48,"updated":"2015-04-29 13:04:35.000000000","message":"AFAIK, arguments order is reversed.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        ]"},{"line_number":46,"context_line":"        task_conf \u003d self.task._load_task("},{"line_number":47,"context_line":"            \"in_task\", task_args_file\u003d\"in_args_path\")"},{"line_number":48,"context_line":"        self.assertEqual(task_conf, {\"ab\": 1})"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        mock_open.side_effect \u003d ["},{"line_number":51,"context_line":"            mock.mock_open(read_data\u003dinput_task).return_value"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_e7f108cf","line":48,"in_reply_to":"5ad0253b_e2c7b343","updated":"2015-04-30 10:13:35.000000000","message":"https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertEqual\ncan you please provide proof link?","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            deployment \u003d \"some_deployment_uuid\""},{"line_number":110,"context_line":"            self.task._load_and_validate_task(\"some_task\", \"task_args\","},{"line_number":111,"context_line":"                                              \"task_args_file\", deployment)"},{"line_number":112,"context_line":"            mock_load.asselrt_called_once_with(\"some_task\", \"task_args\","},{"line_number":113,"context_line":"                                               \"task_args_file\")"},{"line_number":114,"context_line":"            mock_validate.assert_called_once_with(deployment,"},{"line_number":115,"context_line":"                                                  mock_load.return_value)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_42fe676c","line":112,"updated":"2015-04-29 13:04:35.000000000","message":"asselrt.\n\nPlease run tests locally before submitting.\n\nIf `tox pep8\u0027 is not catching such kind of errors we have to implement this.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    @mock.patch(\"rally.cmd.commands.task.TaskCommands._load_task\","},{"line_number":122,"context_line":"                return_value\u003d{\"some\": \"json\"})"},{"line_number":123,"context_line":"    @mock.patch(\"rally.cmd.commands.task.api.Task.validate\","},{"line_number":124,"context_line":"                return_value\u003dfakes.FakeTask(some\u003d\"json\", uuid\u003d\"some_uuid\","},{"line_number":125,"context_line":"                                            temporary\u003dTrue))"},{"line_number":126,"context_line":"    @mock.patch(\"rally.cmd.commands.task.api.Task.start\")"},{"line_number":127,"context_line":"    def test_start(self, mock_api, mock_validate, mock_load,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9af37de9_6f5e3147","line":124,"updated":"2015-05-09 19:57:16.000000000","message":"I would prefer `return_value\u0027 that is so complicated to be specified in the test code, not in the decorator.","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    @mock.patch(\"rally.cmd.commands.task.TaskCommands._load_task\","},{"line_number":122,"context_line":"                return_value\u003d{\"some\": \"json\"})"},{"line_number":123,"context_line":"    @mock.patch(\"rally.cmd.commands.task.api.Task.validate\","},{"line_number":124,"context_line":"                return_value\u003dfakes.FakeTask(some\u003d\"json\", uuid\u003d\"some_uuid\","},{"line_number":125,"context_line":"                                            temporary\u003dTrue))"},{"line_number":126,"context_line":"    @mock.patch(\"rally.cmd.commands.task.api.Task.start\")"},{"line_number":127,"context_line":"    def test_start(self, mock_api, mock_validate, mock_load,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_af0e8ee2","line":124,"in_reply_to":"9af37de9_6f5e3147","updated":"2015-05-22 01:15:08.000000000","message":"Some time ago was a rule in our team to define return value in decorator","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"}],"tests/unit/fakes.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"81204eeb6f38d726decd648743e49f7d3a2071c9","unresolved":false,"context_lines":[{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"class FakeTask(dict):"},{"line_number":1527,"context_line":""},{"line_number":1528,"context_line":"    def __init__(self, task\u003dNone, fake\u003dFalse, **attributes):"},{"line_number":1529,"context_line":"        self.is_fake \u003d fake"},{"line_number":1530,"context_line":"        self.task \u003d task or attributes"},{"line_number":1531,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"5ad0253b_223a4b37","line":1528,"updated":"2015-04-29 13:04:35.000000000","message":"Common name is `kwargs\u0027.","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"eecfcafc18a0e24cdd65513d2b29cff643f3dea7","unresolved":false,"context_lines":[{"line_number":1525,"context_line":""},{"line_number":1526,"context_line":"class FakeTask(dict):"},{"line_number":1527,"context_line":""},{"line_number":1528,"context_line":"    def __init__(self, task\u003dNone, fake\u003dFalse, **attributes):"},{"line_number":1529,"context_line":"        self.is_fake \u003d fake"},{"line_number":1530,"context_line":"        self.task \u003d task or attributes"},{"line_number":1531,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_67829802","line":1528,"in_reply_to":"5ad0253b_223a4b37","updated":"2015-04-30 10:13:35.000000000","message":"Done","commit_id":"79c9e38bb1b221e9e671d24f0edaca65d953811e"}],"tests/unit/test_api.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    @mock.patch(\"rally.api.engine.BenchmarkEngine\")"},{"line_number":83,"context_line":"    def test_validate_engine_exception(self, mock_engine, mock_deployment,"},{"line_number":84,"context_line":"                                       mock_task):"},{"line_number":85,"context_line":"        mock_engine().validate.side_effect \u003d exceptions.InvalidTaskException()"},{"line_number":86,"context_line":"        self.assertRaises(exceptions.InvalidTaskException, api.Task.validate,"},{"line_number":87,"context_line":"                          mock_deployment.return_value[\"uuid\"], \"config\")"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9af37de9_cf351df8","line":85,"updated":"2015-05-09 19:57:16.000000000","message":"Please use `return_value.validate.side_effect\u0027.","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"ece6e204b9b66dbd7339388c5b97906517856baf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    @mock.patch(\"rally.api.engine.BenchmarkEngine\")"},{"line_number":83,"context_line":"    def test_validate_engine_exception(self, mock_engine, mock_deployment,"},{"line_number":84,"context_line":"                                       mock_task):"},{"line_number":85,"context_line":"        mock_engine().validate.side_effect \u003d exceptions.InvalidTaskException()"},{"line_number":86,"context_line":"        self.assertRaises(exceptions.InvalidTaskException, api.Task.validate,"},{"line_number":87,"context_line":"                          mock_deployment.return_value[\"uuid\"], \"config\")"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a016987_6f24165d","line":85,"in_reply_to":"9af37de9_cf351df8","updated":"2015-05-22 01:15:08.000000000","message":"Done","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7e4b401cfdd08900b3a5cbddcd7cd615f3b70f44","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        api.Task.start(mock_deployment_get.return_value[\"uuid\"], \"config\")"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        mock_engine.assert_has_calls(["},{"line_number":130,"context_line":"            mock.call(\"config\", mock_task.return_value,"},{"line_number":131,"context_line":"                      admin\u003dmock_deployment_get.return_value[\"admin\"],"},{"line_number":132,"context_line":"                      users\u003d[], abort_on_sla_failure\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":17,"id":"9af37de9_2f2f09a3","line":129,"updated":"2015-05-09 19:57:16.000000000","message":"I think this should be rewritten in the following way:\n mock_engine.return_value \u003d mock.Mock()\n mock_engine.assert_called_once_with(...)\n mock_engine.return_value.run.assert_called_once_with()\n\nThis is because `assert_called_once\u0027 is more strict than the `has_calls\u0027.","commit_id":"fdeec5461af7eb122d58137f480a62d32a565ee2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        mock_task.assert_called_once_with("},{"line_number":118,"context_line":"            deployment_uuid\u003dmock_d_get.return_value[\"uuid\"], tag\u003dtag)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @mock.patch(\"rally.api.objects.Task\","},{"line_number":121,"context_line":"                return_value\u003dfakes.FakeTask(uuid\u003d\"some_uuid\"))"},{"line_number":122,"context_line":"    @mock.patch(\"rally.api.objects.Deployment.get\","},{"line_number":123,"context_line":"                return_value\u003dfakes.FakeDeployment(uuid\u003d\"deployment_uuid\","}],"source_content_type":"text/x-python","patch_set":20,"id":"7a016987_0d53a7e3","line":120,"updated":"2015-05-29 01:06:21.000000000","message":"I find it rather puzzling that this code uses `rally.api.objects\u0027 and above uses `rally.objects\u0027.","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock.call().run(),"},{"line_number":135,"context_line":"        ])"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        exp_task_calls \u003d ["},{"line_number":138,"context_line":"            mock.call("},{"line_number":139,"context_line":"                deployment_uuid\u003dmock_deployment_get.return_value[\"uuid\"])]"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7a016987_edfdebb1","line":137,"updated":"2015-05-29 01:06:21.000000000","message":"What is the reason to change `assert_called_once_with\u0027 to `assert_has_calls\u0027?","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"2fe13dfb8a9c1ea10d12577f96bbf4c66fc30e76","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            mock.call().run(),"},{"line_number":135,"context_line":"        ])"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        exp_task_calls \u003d ["},{"line_number":138,"context_line":"            mock.call("},{"line_number":139,"context_line":"                deployment_uuid\u003dmock_deployment_get.return_value[\"uuid\"])]"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5afe65bd_4bee9023","line":137,"in_reply_to":"7a016987_edfdebb1","updated":"2015-06-02 14:28:35.000000000","message":"Done","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c97d3b183f4c4d9f9b6d7ef4a689311547f0afb7","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    @mock.patch(\"rally.api.engine.BenchmarkEngine\")"},{"line_number":162,"context_line":"    def test_start_exception(self, mock_engine, mock_deployment_get,"},{"line_number":163,"context_line":"                             mock_task):"},{"line_number":164,"context_line":"        mock_engine().run.side_effect \u003d TypeError"},{"line_number":165,"context_line":"        self.assertRaises(ValueError, api.Task.start,"},{"line_number":166,"context_line":"                          \"deployment_uuid\", \"config\")"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7a016987_cdd46f21","line":164,"updated":"2015-05-29 01:06:21.000000000","message":"Use `mock_engine.return_value.run.side_effect\u0027.","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"2fe13dfb8a9c1ea10d12577f96bbf4c66fc30e76","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    @mock.patch(\"rally.api.engine.BenchmarkEngine\")"},{"line_number":162,"context_line":"    def test_start_exception(self, mock_engine, mock_deployment_get,"},{"line_number":163,"context_line":"                             mock_task):"},{"line_number":164,"context_line":"        mock_engine().run.side_effect \u003d TypeError"},{"line_number":165,"context_line":"        self.assertRaises(ValueError, api.Task.start,"},{"line_number":166,"context_line":"                          \"deployment_uuid\", \"config\")"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5afe65bd_c8c72644","line":164,"in_reply_to":"7a016987_cdd46f21","updated":"2015-06-02 14:28:35.000000000","message":"Done","commit_id":"85f96047c82e0939c95ee5a0b3d65f7773734a11"}]}
