)]}'
{"etc/rally.bash_completion":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    OPTS[\"task_import\"]\u003d\"--file --deployment --tag\""},{"line_number":36,"context_line":"    OPTS[\"task_list\"]\u003d\"--deployment --all-deployments --status --tag --uuids-only\""},{"line_number":37,"context_line":"    OPTS[\"task_report\"]\u003d\"--uuid --out --open --html --html-static --json\""},{"line_number":38,"context_line":"    OPTS[\"task_results\"]\u003d\"--uuid --close-warning\""},{"line_number":39,"context_line":"    OPTS[\"task_sla-check\"]\u003d\"--uuid --json\""},{"line_number":40,"context_line":"    OPTS[\"task_sla_check\"]\u003d\"--uuid --json\""},{"line_number":41,"context_line":"    OPTS[\"task_start\"]\u003d\"--deployment --task --task-args --task-args-file --tag --no-use --abort-on-sla-failure\""}],"source_content_type":"application/x-shellscript","patch_set":19,"id":"7f287b81_350a00d2","line":38,"updated":"2017-08-23 20:42:23.000000000","message":"so not sure that I like the name of this parameter? maybe you thought about --hide-deprecation-warnings? \n\nas well maybe it makes sense to have this option on top level command e.g. rally t --hide-deprecation-warnings \u003ccommand\u003e instead of here where it looks like dirty hack..\n\nIf some it makes sense to implement it as separate change","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"}],"rally/api.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"48d1296408ec3d6ab904838b924365d4a140bbd3","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class _Task(APIGroup):"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    TASK_RESULT_SCHEMA \u003d objects.task.TASK_RESULT_SCHEMA"},{"line_number":265,"context_line":"    TASK_EXTENDED_RESULT_SCHEMA \u003d objects.task.TASK_EXTENDED_RESULT_SCHEMA"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @api_wrapper(path\u003dAPI_REQUEST_PREFIX + \"/task/list\","},{"line_number":268,"context_line":"                 method\u003d\"GET\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_4b6a0ded","line":265,"range":{"start_line":264,"start_character":4,"end_line":265,"end_character":74},"updated":"2017-07-05 10:00:41.000000000","message":"do we need 2 separate schemas?","commit_id":"c7fd1748ac239189652aef6f8cb3815b35e6d8e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d1332b2824534014102ea3a6045d3a655b1c32bc","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class _Task(APIGroup):"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    TASK_RESULT_SCHEMA \u003d objects.task.TASK_RESULT_SCHEMA"},{"line_number":265,"context_line":"    TASK_EXTENDED_RESULT_SCHEMA \u003d objects.task.TASK_EXTENDED_RESULT_SCHEMA"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @api_wrapper(path\u003dAPI_REQUEST_PREFIX + \"/task/list\","},{"line_number":268,"context_line":"                 method\u003d\"GET\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_1ef7835b","line":265,"range":{"start_line":264,"start_character":4,"end_line":265,"end_character":74},"in_reply_to":"3f1d235d_49bb0ec4","updated":"2017-07-06 10:36:17.000000000","message":"1) it looks like TASK_RESULT_SCHEMA relates only to the old format. the only place which still supports that format is CLI, let\u0027s move the whole scheme there.\n\n2) as for extended_result_schema it should become a regular scheme, i.e objects.task.TASK_SCHEMA . The validation should move from CLI to API layer to prevent errors while using rally.api.API directly.","commit_id":"c7fd1748ac239189652aef6f8cb3815b35e6d8e3"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"5f33954014b779134dc784809c08b5e971e790e2","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"class _Task(APIGroup):"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    TASK_RESULT_SCHEMA \u003d objects.task.TASK_RESULT_SCHEMA"},{"line_number":265,"context_line":"    TASK_EXTENDED_RESULT_SCHEMA \u003d objects.task.TASK_EXTENDED_RESULT_SCHEMA"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    @api_wrapper(path\u003dAPI_REQUEST_PREFIX + \"/task/list\","},{"line_number":268,"context_line":"                 method\u003d\"GET\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_49bb0ec4","line":265,"range":{"start_line":264,"start_character":4,"end_line":265,"end_character":74},"in_reply_to":"3f1d235d_4b6a0ded","updated":"2017-07-06 08:11:57.000000000","message":"I do not like it too, The format was changed a lot. do you have else idea?","commit_id":"c7fd1748ac239189652aef6f8cb3815b35e6d8e3"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        except jsonschema.ValidationError as e:"},{"line_number":542,"context_line":"            msg \u003d six.text_type(e)"},{"line_number":543,"context_line":"            raise exceptions.RallyException("},{"line_number":544,"context_line":"                _(\"ERROR: Invalid task result format\\n\\n\\t%s\") % msg)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":547,"context_line":"        if deployment[\"status\"] !\u003d consts.DeployStatus.DEPLOY_FINISHED:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_d5cf3c7d","line":544,"updated":"2017-08-23 20:42:23.000000000","message":"not sure that we should translate messages of exceptions","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"60bf08da0aaf5fc19a7e397ca2fc780fde9e651e","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        except jsonschema.ValidationError as e:"},{"line_number":542,"context_line":"            msg \u003d six.text_type(e)"},{"line_number":543,"context_line":"            raise exceptions.RallyException("},{"line_number":544,"context_line":"                _(\"ERROR: Invalid task result format\\n\\n\\t%s\") % msg)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        deployment \u003d objects.Deployment.get(deployment)"},{"line_number":547,"context_line":"        if deployment[\"status\"] !\u003d consts.DeployStatus.DEPLOY_FINISHED:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_3ae78115","line":544,"in_reply_to":"7f287b81_d5cf3c7d","updated":"2017-08-24 08:23:31.000000000","message":"We always did it. Despite the fact that I personally dislike the fact that we are forcing to use oslo.i18n with all user-exposed messages for many years without even enabling translations, I\u0027m for sameness.","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":"            for data in workload[\"data\"]:"},{"line_number":566,"context_line":"                if not task_inst.result_has_valid_schema(data):"},{"line_number":567,"context_line":"                    raise exceptions.RallyException("},{"line_number":568,"context_line":"                        \"Task %s is trying to import \""},{"line_number":569,"context_line":"                        \"results in wrong format\" % task_inst[\"uuid\"])"},{"line_number":570,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_b5d710c0","line":567,"updated":"2017-08-23 20:42:23.000000000","message":"This is going to produce useless exception for end user, user doesn\u0027t have any information that can help him to fix input task and understand why it can\u0027t be loaded.","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"60bf08da0aaf5fc19a7e397ca2fc780fde9e651e","unresolved":false,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":"            for data in workload[\"data\"]:"},{"line_number":566,"context_line":"                if not task_inst.result_has_valid_schema(data):"},{"line_number":567,"context_line":"                    raise exceptions.RallyException("},{"line_number":568,"context_line":"                        \"Task %s is trying to import \""},{"line_number":569,"context_line":"                        \"results in wrong format\" % task_inst[\"uuid\"])"},{"line_number":570,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_3ad0a11f","line":567,"in_reply_to":"7f287b81_b5d710c0","updated":"2017-08-24 08:23:31.000000000","message":"you are wrong, please look at how result_has_valid_schema works. it has a bunch of LOG messages.","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"}],"rally/cli/commands/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a2d6fa108653a9a13cbb2c8dade6a906f764e3b3","unresolved":false,"context_lines":[{"line_number":481,"context_line":"    @envutils.with_default_task_id"},{"line_number":482,"context_line":"    @cliutils.suppress_warnings"},{"line_number":483,"context_line":"    def results(self, api, task_id\u003dNone):"},{"line_number":484,"context_line":"        \"\"\"Display raw task results."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"        This will produce a lot of output data about every iteration."},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        :param task_id: Task uuid"},{"line_number":489,"context_line":"        \"\"\""},{"line_number":490,"context_line":"        task \u003d api.task.get(task_id\u003dtask_id, detailed\u003dTrue)"},{"line_number":491,"context_line":"        finished_statuses \u003d (consts.TaskStatus.FINISHED,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_c6d66b28","line":488,"range":{"start_line":484,"start_character":8,"end_line":488,"end_character":33},"updated":"2017-07-01 10:28:39.000000000","message":"please mention here that it is deprecated. also, it would be nice to print a deprecated message to stderr (like you did it previously)","commit_id":"9567fa6dc5975603c01bea4455f270d86e339102"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a2d6fa108653a9a13cbb2c8dade6a906f764e3b3","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                            }"},{"line_number":707,"context_line":"                task[\"subtasks\"].append({\"workloads\": [workload]})"},{"line_number":708,"context_line":"            return task"},{"line_number":709,"context_line":"        else:"},{"line_number":710,"context_line":"            raise FailedToLoadResults("},{"line_number":711,"context_line":"                source\u003dtask_id, msg\u003d\"Wrong format\")"},{"line_number":712,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_46e25b03","line":709,"range":{"start_line":709,"start_character":8,"end_line":709,"end_character":13},"updated":"2017-07-01 10:28:39.000000000","message":"let\u0027s add support for the new format","commit_id":"9567fa6dc5975603c01bea4455f270d86e339102"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"ee42e0b7bdbff5712d33788cb7877018d452c5eb","unresolved":false,"context_lines":[{"line_number":706,"context_line":"                            }"},{"line_number":707,"context_line":"                task[\"subtasks\"].append({\"workloads\": [workload]})"},{"line_number":708,"context_line":"            return task"},{"line_number":709,"context_line":"        else:"},{"line_number":710,"context_line":"            raise FailedToLoadResults("},{"line_number":711,"context_line":"                source\u003dtask_id, msg\u003d\"Wrong format\")"},{"line_number":712,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_489384a4","line":709,"range":{"start_line":709,"start_character":8,"end_line":709,"end_character":13},"in_reply_to":"3f1d235d_46e25b03","updated":"2017-07-02 09:22:56.000000000","message":"yes, i planned to do it at another patch. well, it is ok at this patch.\nAlso, we should add a json schema, some id fields is required in json schema?","commit_id":"9567fa6dc5975603c01bea4455f270d86e339102"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"61df6f2d14ed70dec0aa3bdebce8cf5885a1db6e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                \"type\": \"object\","},{"line_number":93,"context_line":"                \"properties\": {"},{"line_number":94,"context_line":"                    \"atomic_actions\": {"},{"line_number":95,"context_line":"                        # NOTE(chenhb): back compatible, old format is dict"},{"line_number":96,"context_line":"                        \"oneOf\": [{\"type\": \"array\"},"},{"line_number":97,"context_line":"                                  {\"type\": \"object\"}]"},{"line_number":98,"context_line":"                    },"},{"line_number":99,"context_line":"                    \"duration\": {"},{"line_number":100,"context_line":"                        \"type\": \"number\""}],"source_content_type":"text/x-python","patch_set":17,"id":"bf3e73b7_ee3166ee","line":97,"range":{"start_line":95,"start_character":24,"end_line":97,"end_character":53},"updated":"2017-08-07 11:36:18.000000000","message":"as far as I understand, we should have a new format only.","commit_id":"17bd4d2d88b6550ee7d145fec4ab3f28e2d196e7"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"14570ba6041261e0e7e474d21b1f2df9b222c07c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                        \"type\": \"number\""},{"line_number":107,"context_line":"                    },"},{"line_number":108,"context_line":"                    # NOTE(amaretskiy): \"scenario_output\" is deprecated"},{"line_number":109,"context_line":"                    #                   in favor of \"output\""},{"line_number":110,"context_line":"                    \"scenario_output\": {"},{"line_number":111,"context_line":"                        \"type\": \"object\","},{"line_number":112,"context_line":"                        \"properties\": {"}],"source_content_type":"text/x-python","patch_set":17,"id":"bf3e73b7_76e8c815","line":109,"updated":"2017-10-17 21:23:43.000000000","message":"this seems like deprecated for years, maybe it\u0027s time to remove it...","commit_id":"17bd4d2d88b6550ee7d145fec4ab3f28e2d196e7"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"61df6f2d14ed70dec0aa3bdebce8cf5885a1db6e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    \"idle_duration\": {"},{"line_number":106,"context_line":"                        \"type\": \"number\""},{"line_number":107,"context_line":"                    },"},{"line_number":108,"context_line":"                    # NOTE(amaretskiy): \"scenario_output\" is deprecated"},{"line_number":109,"context_line":"                    #                   in favor of \"output\""},{"line_number":110,"context_line":"                    \"scenario_output\": {"},{"line_number":111,"context_line":"                        \"type\": \"object\","},{"line_number":112,"context_line":"                        \"properties\": {"},{"line_number":113,"context_line":"                            \"data\": {"},{"line_number":114,"context_line":"                                \"type\": \"object\""},{"line_number":115,"context_line":"                            },"},{"line_number":116,"context_line":"                            \"errors\": {"},{"line_number":117,"context_line":"                                \"type\": \"string\""},{"line_number":118,"context_line":"                            },"},{"line_number":119,"context_line":"                        },"},{"line_number":120,"context_line":"                        \"required\": [\"data\", \"errors\"]"},{"line_number":121,"context_line":"                    },"},{"line_number":122,"context_line":"                    \"output\": {\"type\": \"object\"}"},{"line_number":123,"context_line":"                },"},{"line_number":124,"context_line":"                \"required\": [\"atomic_actions\", \"duration\", \"error\","}],"source_content_type":"text/x-python","patch_set":17,"id":"bf3e73b7_4e407236","line":121,"range":{"start_line":108,"start_character":20,"end_line":121,"end_character":22},"updated":"2017-08-07 11:36:18.000000000","message":"the migration is added which removes it.","commit_id":"17bd4d2d88b6550ee7d145fec4ab3f28e2d196e7"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"TASK_RESULT_SCHEMA \u003d {"},{"line_number":53,"context_line":"    \"type\": \"object\","},{"line_number":54,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":55,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_b5003036","line":52,"updated":"2017-08-23 20:42:23.000000000","message":"this doesn\u0027t look like a good place to store schema. \nI would prefer to keep it somewhere else for example in rally.task.egnine or sort of","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"60bf08da0aaf5fc19a7e397ca2fc780fde9e651e","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"TASK_RESULT_SCHEMA \u003d {"},{"line_number":53,"context_line":"    \"type\": \"object\","},{"line_number":54,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":55,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_7ab629fd","line":52,"in_reply_to":"7f287b81_b5003036","updated":"2017-08-24 08:23:31.000000000","message":"\u003e I would prefer to keep it somewhere else for example in rally.task.egnine or sort of\n\nit is used only in CLI, everything except CLI know nothing about an old result schema.","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"8a4d9a3f751a8bef9804de8afa4971e37bbc8d3a","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"TASK_RESULT_SCHEMA \u003d {"},{"line_number":53,"context_line":"    \"type\": \"object\","},{"line_number":54,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":55,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_8c9f664f","line":52,"in_reply_to":"7f287b81_b5003036","updated":"2017-08-24 06:01:58.000000000","message":"I did not like to store it at here as you, it is hard to find a good place, it is only used to check old json report at line #711.","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a517b1312c810f2a89c09bf3cf064149f16a66b2","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        print(\"\\trally task export %s --type junit --to output.xml\\n\" %"},{"line_number":550,"context_line":"              task[\"uuid\"])"},{"line_number":551,"context_line":"        print(\"* To get raw JSON output of task results, run:\")"},{"line_number":552,"context_line":"        print(\"\\trally task report %s --json --out output.json\\n\" %"},{"line_number":553,"context_line":"              task[\"uuid\"])"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    @cliutils.args(\"--uuid\", type\u003dstr, dest\u003d\"task_id\", help\u003d\"UUID of task.\")"},{"line_number":556,"context_line":"    @envutils.with_default_task_id"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f4e5783_48e5a8a7","line":553,"range":{"start_line":552,"start_character":8,"end_line":553,"end_character":27},"updated":"2017-10-13 07:58:17.000000000","message":"in cli tests we use old string to obtain the uuid of task","commit_id":"de40842e1b296fe4d77ef5d3d3a2efd6a723c115"}],"rally/common/objects/task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d1332b2824534014102ea3a6045d3a655b1c32bc","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                }"},{"line_number":279,"context_line":"            }"},{"line_number":280,"context_line":"        },"},{"line_number":281,"context_line":"        \"data\": {"},{"line_number":282,"context_line":"            \"type\": \"array\","},{"line_number":283,"context_line":"            \"items\": {"},{"line_number":284,"context_line":"                \"type\": \"object\","},{"line_number":285,"context_line":"                \"properties\": {"},{"line_number":286,"context_line":"                    \"timestamp\": {\"type\": \"number\"},"},{"line_number":287,"context_line":"                    \"error\": {\"type\": \"array\"},"},{"line_number":288,"context_line":"                    \"output\": {\"type\": \"object\"},"},{"line_number":289,"context_line":"                    \"idle_duration\": {\"type\": \"number\"},"},{"line_number":290,"context_line":"                    \"atomic_actions\": {"},{"line_number":291,"context_line":"                        \"type\": \"array\","},{"line_number":292,"context_line":"                        \"items\": {"},{"line_number":293,"context_line":"                            \"type\": \"object\","},{"line_number":294,"context_line":"                            \"properties\": {"},{"line_number":295,"context_line":"                                \"finished_at\": {\"type\": \"number\"},"},{"line_number":296,"context_line":"                                \"started_at\": {\"type\": \"number\"},"},{"line_number":297,"context_line":"                                \"name\": {\"type\": \"string\"},"},{"line_number":298,"context_line":"                                \"children\": {\"type\": \"array\"}"},{"line_number":299,"context_line":"                            }"},{"line_number":300,"context_line":"                        }"},{"line_number":301,"context_line":"                    }"},{"line_number":302,"context_line":"                },"},{"line_number":303,"context_line":"                \"required\": [\"timestamp\", \"idle_duration\", \"atomic_actions\"]"},{"line_number":304,"context_line":"            }"},{"line_number":305,"context_line":"        },"},{"line_number":306,"context_line":"        \"failed_iteration_count\": {\"type\": \"number\"},"},{"line_number":307,"context_line":"        \"created_at\": {\"type\": \"string\"},"},{"line_number":308,"context_line":"        \"context\": {\"type\": \"object\"},"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_be6befee","line":305,"range":{"start_line":281,"start_character":8,"end_line":305,"end_character":10},"updated":"2017-07-06 10:36:17.000000000","message":"it is a problem for us. Let make https://github.com/openstack/rally/blob/master/rally/task/runner.py#L236-L315 public (move it to rally.common.objects.task) and use for validation of data while importing results","commit_id":"c7fd1748ac239189652aef6f8cb3815b35e6d8e3"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from rally.common import logging"},{"line_number":24,"context_line":"from rally import consts"},{"line_number":25,"context_line":"from rally import exceptions"},{"line_number":26,"context_line":"from rally.task.processing import charts"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_d524dcc8","line":26,"updated":"2017-08-23 20:42:23.000000000","message":"this is looking messy, why inside the objects.task (that should store in db data) we are importing charts?","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    \"additionalProperties\": False,"},{"line_number":140,"context_line":"}"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"TASK_WORKLOADS_SCHEMA \u003d {"},{"line_number":143,"context_line":"    \"type\": \"object\","},{"line_number":144,"context_line":"    \"properties\": {"},{"line_number":145,"context_line":"        \"max_duration\": {\"type\": \"number\"},"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_67321bf4","line":142,"updated":"2017-08-23 20:42:23.000000000","message":"Can you elaborate all these changes. Why results schema is moved to commands and why this is refactored if it is only about new exporter? \n\nCan you put changes related to schema to seperate patch? and explain exactly what you are doing. \n\nIt\u0027s very important: \n- this change may affect performance of Rally \n- this change may break the validation","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"}],"rally/plugins/common/exporter/reporters.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"@exporter.configure(\"json\")"},{"line_number":31,"context_line":"class JSONExporter(exporter.TaskExporter):"},{"line_number":32,"context_line":"    \"\"\"Generates task report in JSON format.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_c721cf4f","line":31,"updated":"2017-08-23 20:42:23.000000000","message":"This looks like separate change from everything that I saw before and it\u0027s actually about what in commit message is described","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        results \u003d {\"info\": {\"rally_version\": rally_version.version_string(),"},{"line_number":45,"context_line":"                            \"generated_at\": dt.datetime.strftime("},{"line_number":46,"context_line":"                                timeutils.utcnow(), TIMEFORMAT),"},{"line_number":47,"context_line":"                            \"format\": \"1\"},"},{"line_number":48,"context_line":"                   \"tasks\": self.tasks_results}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        results \u003d json.dumps(results, sort_keys\u003dFalse, indent\u003d4)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_a7d92384","line":47,"updated":"2017-08-23 20:42:23.000000000","message":"- so format: 1 doesn\u0027t sound quite usual, I would prefer format_version or just version","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"dd374c9b48cb655981f4ccfc0823c15df6397f57","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                            \"generated_at\": dt.datetime.strftime("},{"line_number":46,"context_line":"                                timeutils.utcnow(), TIMEFORMAT),"},{"line_number":47,"context_line":"                            \"format\": \"1\"},"},{"line_number":48,"context_line":"                   \"tasks\": self.tasks_results}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        results \u003d json.dumps(results, sort_keys\u003dFalse, indent\u003d4)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7f287b81_4705dfc1","line":48,"updated":"2017-08-23 20:42:23.000000000","message":"how we are going to gurantee that we are not changing the format of task_results","commit_id":"de78597fee1b434da605ae3a1991c2d29ec7d593"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3a54fed0502ad006c5a6df84acb4a57ceeff9907","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # nothing to check :)"},{"line_number":41,"context_line":"        pass"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def generate(self):"},{"line_number":44,"context_line":"        results \u003d {\"info\": {\"rally_version\": rally_version.version_string(),"},{"line_number":45,"context_line":"                            \"generated_at\": dt.datetime.strftime("},{"line_number":46,"context_line":"                                timeutils.utcnow(), TIMEFORMAT),"}],"source_content_type":"text/x-python","patch_set":22,"id":"7f515b1d_d72c5c03","line":43,"updated":"2017-09-28 14:31:37.000000000","message":"To ensure that our inner implementation is hidden and the user will see only what we want in what we expect format, let\u0027s iterate over all tasks, subtasks, workloads and construct a new dictionary. just do something like:\n\n\n    tasks \u003d []\n    for task in self.task_results:\n        # let\u0027s use OrderedDict, so the reports will look unified\n        new_task \u003d OrderedDict()\n        new_task[\"uuid\"] \u003d task[\"uuid\"]\n        new_task[\"title\"] \u003d task[\"title\"]\n\nPS: https://review.openstack.org/#/c/504059/ changes the way of storing runners, hooks. In the database, we start storing tuples whereas for user we need to convert it to the regular dict.","commit_id":"6e852ec4bf02354071574a2379418527a1db6244"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"936a5ab1c0d59eecd0c7b498154dd67ceb451f8b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                            [(\"uuid\", workload[\"uuid\"]),"},{"line_number":54,"context_line":"                             (\"name\", workload[\"name\"]),"},{"line_number":55,"context_line":"                             (\"description\", workload[\"description\"]),"},{"line_number":56,"context_line":"                             (\"runner\", workload[\"runner\"]),"},{"line_number":57,"context_line":"                             (\"runner_type\", workload[\"runner_type\"]),"},{"line_number":58,"context_line":"                             (\"hooks\", workload[\"hooks\"]),"},{"line_number":59,"context_line":"                             (\"args\", workload[\"args\"]),"},{"line_number":60,"context_line":"                             (\"min_duration\", workload[\"min_duration\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_64906d44","line":57,"range":{"start_line":56,"start_character":29,"end_line":57,"end_character":70},"updated":"2017-10-09 11:40:31.000000000","message":"https://github.com/openstack/rally/commit/7165f31726e033c3a87f6676b40a968242db5ffc\n\n\nthese lines should be:\n\n    \"runner\": {workload[\"runner_type\"]: workload[\"runner\"]}","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"0204c80856e9da2d50d3b123dccf5ee2b9fa87b7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                            [(\"uuid\", workload[\"uuid\"]),"},{"line_number":54,"context_line":"                             (\"name\", workload[\"name\"]),"},{"line_number":55,"context_line":"                             (\"description\", workload[\"description\"]),"},{"line_number":56,"context_line":"                             (\"runner\", workload[\"runner\"]),"},{"line_number":57,"context_line":"                             (\"runner_type\", workload[\"runner_type\"]),"},{"line_number":58,"context_line":"                             (\"hooks\", workload[\"hooks\"]),"},{"line_number":59,"context_line":"                             (\"args\", workload[\"args\"]),"},{"line_number":60,"context_line":"                             (\"min_duration\", workload[\"min_duration\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_9518351e","line":57,"range":{"start_line":56,"start_character":29,"end_line":57,"end_character":70},"in_reply_to":"7f515b1d_5f641e22","updated":"2017-10-09 13:06:13.000000000","message":"we need to transform contexts to context while importing the new task format results.\n\nSoon, we will need to work on db migration, so the terms will be used the same everywhere.","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"54bd81cf2f3d0a3a2a9505c78264f2f9fb602877","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                            [(\"uuid\", workload[\"uuid\"]),"},{"line_number":54,"context_line":"                             (\"name\", workload[\"name\"]),"},{"line_number":55,"context_line":"                             (\"description\", workload[\"description\"]),"},{"line_number":56,"context_line":"                             (\"runner\", workload[\"runner\"]),"},{"line_number":57,"context_line":"                             (\"runner_type\", workload[\"runner_type\"]),"},{"line_number":58,"context_line":"                             (\"hooks\", workload[\"hooks\"]),"},{"line_number":59,"context_line":"                             (\"args\", workload[\"args\"]),"},{"line_number":60,"context_line":"                             (\"min_duration\", workload[\"min_duration\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_bf48b22c","line":57,"range":{"start_line":56,"start_character":29,"end_line":57,"end_character":70},"in_reply_to":"7f515b1d_64906d44","updated":"2017-10-09 12:01:50.000000000","message":"oh, i wrote them like these lines and we also should fix them.\nhttps://github.com/openstack/rally/blob/master/rally/cli/commands/task.py#L774-L775","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"3a3c36808f09fea62b188e627988b2911e322e5f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                            [(\"uuid\", workload[\"uuid\"]),"},{"line_number":54,"context_line":"                             (\"name\", workload[\"name\"]),"},{"line_number":55,"context_line":"                             (\"description\", workload[\"description\"]),"},{"line_number":56,"context_line":"                             (\"runner\", workload[\"runner\"]),"},{"line_number":57,"context_line":"                             (\"runner_type\", workload[\"runner_type\"]),"},{"line_number":58,"context_line":"                             (\"hooks\", workload[\"hooks\"]),"},{"line_number":59,"context_line":"                             (\"args\", workload[\"args\"]),"},{"line_number":60,"context_line":"                             (\"min_duration\", workload[\"min_duration\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_5f641e22","line":57,"range":{"start_line":56,"start_character":29,"end_line":57,"end_character":70},"in_reply_to":"7f515b1d_7f1b5ac9","updated":"2017-10-09 12:19:32.000000000","message":"ok. Also, our TASK_SCHEMA validation was used for json report which was imported or was used to validate the json struct which would be imported database? Now the data which is exported the json report is different from the data which is saved in database. Example: context or contexts","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"626bad54fd66088ca3b7e56066b540b6f5aac6d1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                            [(\"uuid\", workload[\"uuid\"]),"},{"line_number":54,"context_line":"                             (\"name\", workload[\"name\"]),"},{"line_number":55,"context_line":"                             (\"description\", workload[\"description\"]),"},{"line_number":56,"context_line":"                             (\"runner\", workload[\"runner\"]),"},{"line_number":57,"context_line":"                             (\"runner_type\", workload[\"runner_type\"]),"},{"line_number":58,"context_line":"                             (\"hooks\", workload[\"hooks\"]),"},{"line_number":59,"context_line":"                             (\"args\", workload[\"args\"]),"},{"line_number":60,"context_line":"                             (\"min_duration\", workload[\"min_duration\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_7f1b5ac9","line":57,"range":{"start_line":56,"start_character":29,"end_line":57,"end_character":70},"in_reply_to":"7f515b1d_9f45f6b6","updated":"2017-10-09 12:12:30.000000000","message":"We do not want to present to users json format is we use for over inner purpose, we should make as much as possible user-friednly format.","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8b7390cdb2bb269829d0176378a273d49fa1b6cc","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                            [(\"uuid\", workload[\"uuid\"]),"},{"line_number":54,"context_line":"                             (\"name\", workload[\"name\"]),"},{"line_number":55,"context_line":"                             (\"description\", workload[\"description\"]),"},{"line_number":56,"context_line":"                             (\"runner\", workload[\"runner\"]),"},{"line_number":57,"context_line":"                             (\"runner_type\", workload[\"runner_type\"]),"},{"line_number":58,"context_line":"                             (\"hooks\", workload[\"hooks\"]),"},{"line_number":59,"context_line":"                             (\"args\", workload[\"args\"]),"},{"line_number":60,"context_line":"                             (\"min_duration\", workload[\"min_duration\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_9f45f6b6","line":57,"range":{"start_line":56,"start_character":29,"end_line":57,"end_character":70},"in_reply_to":"7f515b1d_bf48b22c","updated":"2017-10-09 12:11:36.000000000","message":"see https://github.com/openstack/rally/blob/master/rally/cli/commands/task.py#L752\n\nit took runner_type from the runner config (in the old format it was included there) and put it separately.\nActually, storing runner_cfg and runner_type separately is done only for filtering stuff, so you can filter in the database workloads with specific load config.","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"936a5ab1c0d59eecd0c7b498154dd67ceb451f8b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                              workload[\"total_iteration_count\"]),"},{"line_number":71,"context_line":"                             (\"created_at\", workload[\"created_at\"]),"},{"line_number":72,"context_line":"                             (\"updated_at\", workload[\"updated_at\"]),"},{"line_number":73,"context_line":"                             (\"context\", workload[\"context\"]),"},{"line_number":74,"context_line":"                             (\"position\", workload[\"position\"]),"},{"line_number":75,"context_line":"                             (\"pass_sla\", workload[\"pass_sla\"]),"},{"line_number":76,"context_line":"                             (\"sla_results\", workload[\"sla_results\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_64de2d12","line":73,"range":{"start_line":73,"start_character":31,"end_line":73,"end_character":38},"updated":"2017-10-09 11:40:31.000000000","message":"let\u0027s name it contexts","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"936a5ab1c0d59eecd0c7b498154dd67ceb451f8b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                         (\"title\", subtask[\"title\"]),"},{"line_number":84,"context_line":"                         (\"description\", subtask[\"description\"]),"},{"line_number":85,"context_line":"                         (\"status\", subtask[\"status\"]),"},{"line_number":86,"context_line":"                         (\"run_in_parallel\", subtask[\"run_in_parallel\"]),"},{"line_number":87,"context_line":"                         (\"created_at\", subtask[\"created_at\"]),"},{"line_number":88,"context_line":"                         (\"updated_at\", subtask[\"updated_at\"]),"},{"line_number":89,"context_line":"                         (\"sla\", subtask[\"sla\"]),"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_c4a04193","line":86,"range":{"start_line":86,"start_character":25,"end_line":86,"end_character":73},"updated":"2017-10-09 11:40:31.000000000","message":"we do not use it, so let\u0027s remove it for now","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"936a5ab1c0d59eecd0c7b498154dd67ceb451f8b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                         (\"created_at\", subtask[\"created_at\"]),"},{"line_number":88,"context_line":"                         (\"updated_at\", subtask[\"updated_at\"]),"},{"line_number":89,"context_line":"                         (\"sla\", subtask[\"sla\"]),"},{"line_number":90,"context_line":"                         (\"context\", subtask[\"context\"]),"},{"line_number":91,"context_line":"                         (\"duration\", subtask[\"duration\"]),"},{"line_number":92,"context_line":"                         (\"workloads\", workloads)]"},{"line_number":93,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":31,"id":"7f515b1d_44be91b4","line":90,"range":{"start_line":90,"start_character":25,"end_line":90,"end_character":57},"updated":"2017-10-09 11:40:31.000000000","message":"same here","commit_id":"ca13735d16b7f977fa443cd4f52f2ff3141d4edf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c5baa28a89ab93952b3d8eebab900b8ead1487e1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"TIMEFORMAT \u003d \"%Y-%m-%dT%H:%M:%S\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@exporter.configure(\"json\")"},{"line_number":32,"context_line":"class JSONExporter(exporter.TaskExporter):"},{"line_number":33,"context_line":"    \"\"\"Generates task report in JSON format.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def validate(cls, output_destination):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f4e5783_4fecb328","line":33,"range":{"start_line":31,"start_character":0,"end_line":33,"end_character":47},"updated":"2017-10-12 06:46:59.000000000","message":"Can you move this class to the separate module json_exporter or something like that?","commit_id":"6966896dcceffcf1cc61821e306a75a8ee6d75e5"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"167a9d81393c7e7a5b32649e082aedb20c3aae28","unresolved":false,"context_lines":[{"line_number":28,"context_line":"TIMEFORMAT \u003d \"%Y-%m-%dT%H:%M:%S\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@exporter.configure(\"json\")"},{"line_number":32,"context_line":"class JSONExporter(exporter.TaskExporter):"},{"line_number":33,"context_line":"    \"\"\"Generates task report in JSON format.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def validate(cls, output_destination):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f4e5783_ef6c7f37","line":33,"range":{"start_line":31,"start_character":0,"end_line":33,"end_character":47},"in_reply_to":"5f4e5783_4fecb328","updated":"2017-10-12 07:14:04.000000000","message":"sure. could you tell me that for what? just split these classes into different modules?","commit_id":"6966896dcceffcf1cc61821e306a75a8ee6d75e5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2df1d9df646834765b296ea393af280fa728b9e0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"TIMEFORMAT \u003d \"%Y-%m-%dT%H:%M:%S\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@exporter.configure(\"json\")"},{"line_number":32,"context_line":"class JSONExporter(exporter.TaskExporter):"},{"line_number":33,"context_line":"    \"\"\"Generates task report in JSON format.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def validate(cls, output_destination):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f4e5783_90d52ce8","line":33,"range":{"start_line":31,"start_character":0,"end_line":33,"end_character":47},"in_reply_to":"5f4e5783_ef6c7f37","updated":"2017-10-12 08:55:40.000000000","message":"Putting all plugins into one module is impossible. Such module will be too long and it affects readability.\n\nIf some plugins have separate modules and other not, it will lead to incontinence and it would be hard to understand where to find the proper plugin.","commit_id":"6966896dcceffcf1cc61821e306a75a8ee6d75e5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c5baa28a89ab93952b3d8eebab900b8ead1487e1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"@exporter.configure(\"json\")"},{"line_number":32,"context_line":"class JSONExporter(exporter.TaskExporter):"},{"line_number":33,"context_line":"    \"\"\"Generates task report in JSON format.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def validate(cls, output_destination):"},{"line_number":37,"context_line":"        \"\"\"Validate destination of report."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        :param output_destination: Destination of report"},{"line_number":40,"context_line":"        \"\"\""},{"line_number":41,"context_line":"        # nothing to check :)"},{"line_number":42,"context_line":"        pass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _generate_tasks(self):"},{"line_number":45,"context_line":"        tasks \u003d []"}],"source_content_type":"text/x-python","patch_set":33,"id":"5f4e5783_4f871363","line":42,"range":{"start_line":34,"start_character":0,"end_line":42,"end_character":12},"updated":"2017-10-12 06:46:59.000000000","message":"it is nod needed anymore","commit_id":"6966896dcceffcf1cc61821e306a75a8ee6d75e5"}],"tests/functional/test_cli_task.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"84fdd5eba3885b4419b097c495585efb3b7d4846","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            r\"Using deployment: (?P\u003cuuid\u003e[0-9a-f\\-]{36})\","},{"line_number":95,"context_line":"            output).group(\"uuid\")"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _get_task_uuid(self, output):"},{"line_number":98,"context_line":"        return re.search("},{"line_number":99,"context_line":"            r\"\\trally task results (?P\u003cuuid\u003e[0-9a-f\\-]{36})\","},{"line_number":100,"context_line":"            output).group(\"uuid\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_status(self):"},{"line_number":103,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f4e5783_c883d8cb","line":100,"range":{"start_line":97,"start_character":4,"end_line":100,"end_character":33},"updated":"2017-10-13 07:56:09.000000000","message":"you need to fix this method.","commit_id":"de40842e1b296fe4d77ef5d3d3a2efd6a723c115"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e63b37a2b63a90cfa64741db2deac4a584663ddf","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        # json via json schema in next patch"},{"line_number":374,"context_line":"        for task in results[\"tasks\"]:"},{"line_number":375,"context_line":"            self.assertIn(\"subtasks\", task)"},{"line_number":376,"context_line":"            self.assertIn(\"workloads\", task[\"subtasks\"])"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def test_report_one_uuid_with_json(self):"},{"line_number":379,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f4e5783_ad22e6a2","line":376,"range":{"start_line":376,"start_character":39,"end_line":376,"end_character":56},"updated":"2017-10-13 11:59:20.000000000","message":"you should iterate over task[\"subtasks\"] to get subtask objects and then check that they have workloads key","commit_id":"ad237662834793275eea52a64e81e92a5d233026"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"c7fd8fd9adccf73746d9197c0ba3a05103a2cd51","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        # json via json schema in next patch"},{"line_number":374,"context_line":"        for task in results[\"tasks\"]:"},{"line_number":375,"context_line":"            self.assertIn(\"subtasks\", task)"},{"line_number":376,"context_line":"            self.assertIn(\"workloads\", task[\"subtasks\"])"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def test_report_one_uuid_with_json(self):"},{"line_number":379,"context_line":"        rally \u003d utils.Rally()"}],"source_content_type":"text/x-python","patch_set":39,"id":"5f4e5783_8dbbaa70","line":376,"range":{"start_line":376,"start_character":39,"end_line":376,"end_character":56},"in_reply_to":"5f4e5783_ad22e6a2","updated":"2017-10-13 12:45:33.000000000","message":":(","commit_id":"ad237662834793275eea52a64e81e92a5d233026"}]}
