)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"193d4c56d22c0c2d5e0d7c972f8a0c30d996d8e5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Functionality added by this patch is not used"},{"line_number":10,"context_line":"in the existing code but will be required"},{"line_number":11,"context_line":"for translation to the new task format."},{"line_number":12,"context_line":"It exists as a separate patch in order to reduce"},{"line_number":13,"context_line":"pain of reviewing/rebasing/merging of a big chunk"},{"line_number":14,"context_line":"of code."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa1b9901_7f146ef4","line":12,"updated":"2015-08-18 12:05:54.000000000","message":"If it exists that would be great to see it in dependent patch.","commit_id":"145e75ec2f01a6fe9ee95c35aa148442716b1775"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"6de8bec832110230a8cf0a1c1199693654987024","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Functionality added by this patch is not used"},{"line_number":10,"context_line":"in the existing code but will be required"},{"line_number":11,"context_line":"for translation to the new task format."},{"line_number":12,"context_line":"It exists as a separate patch in order to reduce"},{"line_number":13,"context_line":"pain of reviewing/rebasing/merging of a big chunk"},{"line_number":14,"context_line":"of code."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da20952f_14c71b46","line":12,"updated":"2015-08-28 14:38:58.000000000","message":"This remark is not required.","commit_id":"387b03255d46c5b1c34257ed53dff0d58dd9697e"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"ed1104e309dbecacbd1e143bc19489bbdd0c1f8e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Functionality added by this patch is not used"},{"line_number":10,"context_line":"in the existing code but will be required"},{"line_number":11,"context_line":"for translation to the new task format."},{"line_number":12,"context_line":"It exists as a separate patch in order to reduce"},{"line_number":13,"context_line":"pain of reviewing/rebasing/merging of a big chunk"},{"line_number":14,"context_line":"of code."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da20952f_5fc6cc68","line":12,"in_reply_to":"da20952f_14c71b46","updated":"2015-08-31 09:19:50.000000000","message":"Done","commit_id":"387b03255d46c5b1c34257ed53dff0d58dd9697e"}],"doc/specs/in-progress/new_rally_input_task_format.rst":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c3dadfd9fa63f254452a4d54af6d20bf2e9d1cea","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                            \"items\": {"},{"line_number":144,"context_line":"                                \"type\": \"object\","},{"line_number":145,"context_line":"                                \"properties\": {"},{"line_number":146,"context_line":"                                    \"name\": {\"type\": \"string\"},"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                                    \"args\": {"},{"line_number":149,"context_line":"                                        \"type\": \"object\""}],"source_content_type":"text/x-rst","patch_set":43,"id":"9a1a9d01_501089a8","side":"PARENT","line":146,"updated":"2015-10-02 09:35:56.000000000","message":"We actually need name parameter","commit_id":"626999e744066b38f49a2b8f26b4033c3f774c59"}],"rally/task/engine.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b8099855757c9598b9f46ed4e6f217df7f5ad1fb","unresolved":false,"context_lines":[{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"NEW_CONFIG_SCHEMA \u003d {"},{"line_number":43,"context_line":"    \"type\": \"object\","},{"line_number":44,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":45,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_4def121e","line":42,"updated":"2015-08-12 12:51:11.000000000","message":"see my comment below","commit_id":"8a0234d67d2698c9b607b1a740c88cfec393f297"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b8099855757c9598b9f46ed4e6f217df7f5ad1fb","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"def convert_config(old_config, title\u003d\"Task\"):"},{"line_number":372,"context_line":"    \"\"\"Convert config from old format into new one."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    :param old_config: Dictionary object with task configuration"},{"line_number":375,"context_line":"                       in old format"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_2d83a657","line":372,"updated":"2015-08-12 12:51:11.000000000","message":"Imo, \"new\" and \"old\" terms should not be used. \u0027config_v0\u0027 and \u0027config_v1\u0027 would be better.","commit_id":"8a0234d67d2698c9b607b1a740c88cfec393f297"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"e8a516e479c6711934e8ff58778188923f4cacaa","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"def convert_config(old_config, title\u003d\"Task\"):"},{"line_number":372,"context_line":"    \"\"\"Convert config from old format into new one."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    :param old_config: Dictionary object with task configuration"},{"line_number":375,"context_line":"                       in old format"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_dfb15202","line":372,"in_reply_to":"1a4dcd0f_2d83a657","updated":"2015-08-13 10:21:55.000000000","message":"Done","commit_id":"8a0234d67d2698c9b607b1a740c88cfec393f297"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"df74cc2346b2408011caa5234eb177ebb7d79cce","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"def convert_config(v0_config, title\u003d\"Task\"):"},{"line_number":372,"context_line":"    \"\"\"Convert config from version 0 format into version 1."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    :param v0_config: Dictionary object with task configuration"},{"line_number":375,"context_line":"                       in old format"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_663173ec","line":372,"updated":"2015-08-17 15:27:31.000000000","message":"Before I have heard about old and new format but order of formats 0 or 1.. Its better to rename to \u0027old_format_config\u0027 and \u0027new_format_config\u0027? As I understand its one-time event. I saw Andrey comment in previous patch, so its not -1 from me.","commit_id":"d810ba7eaf866bda582609f82e7294862635ea95"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"9885a1b9c299398f54c53c66781111e8fa558ac2","unresolved":false,"context_lines":[{"line_number":369,"context_line":""},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"def convert_config(v0_config, title\u003d\"Task\"):"},{"line_number":372,"context_line":"    \"\"\"Convert config from version 0 format into version 1."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    :param v0_config: Dictionary object with task configuration"},{"line_number":375,"context_line":"                       in old format"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_f34be057","line":372,"in_reply_to":"fa1b9901_663173ec","updated":"2015-08-18 09:28:21.000000000","message":"There were complaints to patchset #5 exactly to rename {old, new} \u003d\u003e numbered versions ))","commit_id":"d810ba7eaf866bda582609f82e7294862635ea95"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"df74cc2346b2408011caa5234eb177ebb7d79cce","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    \"\"\""},{"line_number":379,"context_line":"    jsonschema.validate(v0_config, CONFIG_SCHEMA)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    v1_config \u003d {}"},{"line_number":382,"context_line":"    v1_config[\"version\"] \u003d 1"},{"line_number":383,"context_line":"    v1_config[\"title\"] \u003d title"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_466c6f9c","line":381,"updated":"2015-08-17 15:27:31.000000000","message":"This line could be deleted.","commit_id":"d810ba7eaf866bda582609f82e7294862635ea95"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"9885a1b9c299398f54c53c66781111e8fa558ac2","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    \"\"\""},{"line_number":379,"context_line":"    jsonschema.validate(v0_config, CONFIG_SCHEMA)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    v1_config \u003d {}"},{"line_number":382,"context_line":"    v1_config[\"version\"] \u003d 1"},{"line_number":383,"context_line":"    v1_config[\"title\"] \u003d title"},{"line_number":384,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_78448f73","line":381,"in_reply_to":"fa1b9901_466c6f9c","updated":"2015-08-18 09:28:21.000000000","message":"No, it can not. v1_config should be associated with a dict first.\nThen we could assign values to the dict\u0027s elements.","commit_id":"d810ba7eaf866bda582609f82e7294862635ea95"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"df74cc2346b2408011caa5234eb177ebb7d79cce","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    for name, v0_scenarios in six.iteritems(v0_config):"},{"line_number":387,"context_line":"        subtask \u003d {\"title\": name}"},{"line_number":388,"context_line":"        subtask[\"scenarios\"] \u003d []"},{"line_number":389,"context_line":"        for n, v0_scenario in enumerate(v0_scenarios):"},{"line_number":390,"context_line":"            scenario \u003d {\"name\": \"Scenario #{0}\".format(n + 1)}"},{"line_number":391,"context_line":"            scenario.update(v0_scenario)"},{"line_number":392,"context_line":"            subtask[\"scenarios\"].append(scenario)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_6be29ea1","line":389,"updated":"2015-08-17 15:27:31.000000000","message":"Lets \u0027n\u0027 rename to \u0027num\u0027 or \u0027number\u0027. I mean that I whant something meaningful.","commit_id":"d810ba7eaf866bda582609f82e7294862635ea95"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"9885a1b9c299398f54c53c66781111e8fa558ac2","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    for name, v0_scenarios in six.iteritems(v0_config):"},{"line_number":387,"context_line":"        subtask \u003d {\"title\": name}"},{"line_number":388,"context_line":"        subtask[\"scenarios\"] \u003d []"},{"line_number":389,"context_line":"        for n, v0_scenario in enumerate(v0_scenarios):"},{"line_number":390,"context_line":"            scenario \u003d {\"name\": \"Scenario #{0}\".format(n + 1)}"},{"line_number":391,"context_line":"            scenario.update(v0_scenario)"},{"line_number":392,"context_line":"            subtask[\"scenarios\"].append(scenario)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_13e53436","line":389,"in_reply_to":"fa1b9901_6be29ea1","updated":"2015-08-18 09:28:21.000000000","message":"\u0027n\u0027 is a rather common abbreviation for number. The only difference could be whether \u0027n\u0027 denotes \u0027total\u0027 or \u0027current\u0027, but in this case I think there is no ambiguity.\nAnd keeping short-lived var\u0027s names short is usually considered as a good practice.","commit_id":"d810ba7eaf866bda582609f82e7294862635ea95"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"193d4c56d22c0c2d5e0d7c972f8a0c30d996d8e5","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    v1_config \u003d {}"},{"line_number":381,"context_line":"    v1_config[\"version\"] \u003d 1"},{"line_number":382,"context_line":"    v1_config[\"title\"] \u003d title"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    v1_config[\"subtasks\"] \u003d []"},{"line_number":385,"context_line":"    for name, v0_scenarios in six.iteritems(v0_config):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_dfbedafe","line":382,"updated":"2015-08-18 12:05:54.000000000","message":"v1_config \u003d {\n   \"version\": 1, \n   \"title\": title,\n   \"subtasks\": []\n}\nIts more pythonic.","commit_id":"145e75ec2f01a6fe9ee95c35aa148442716b1775"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"9c59f9ec1cd69ffe1406eb6899f55ece9e1d5251","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    v1_config \u003d {}"},{"line_number":381,"context_line":"    v1_config[\"version\"] \u003d 1"},{"line_number":382,"context_line":"    v1_config[\"title\"] \u003d title"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    v1_config[\"subtasks\"] \u003d []"},{"line_number":385,"context_line":"    for name, v0_scenarios in six.iteritems(v0_config):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_7bebf4b0","line":382,"in_reply_to":"fa1b9901_dfbedafe","updated":"2015-08-19 08:23:19.000000000","message":"Done","commit_id":"145e75ec2f01a6fe9ee95c35aa148442716b1775"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd374b448af528a88194d8c675cdf2d14bef2945","unresolved":false,"context_lines":[{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CONFIG_SCHEMA_V1 \u003d {"},{"line_number":43,"context_line":"    \"type\": \"object\","},{"line_number":44,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":45,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_32ba840b","line":42,"updated":"2015-08-25 02:03:22.000000000","message":"put in all proper places that additionProperties are not allowed","commit_id":"b9eff61ddaa4cec3bbc52a1c2fcc713e5d25bb7f"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"1f36c0b787d48c486288ae4f290e22d834e3e0fc","unresolved":false,"context_lines":[{"line_number":39,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CONFIG_SCHEMA_V1 \u003d {"},{"line_number":43,"context_line":"    \"type\": \"object\","},{"line_number":44,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":45,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_e7967393","line":42,"in_reply_to":"fa1b9901_32ba840b","updated":"2015-08-25 12:41:32.000000000","message":"Done","commit_id":"b9eff61ddaa4cec3bbc52a1c2fcc713e5d25bb7f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd374b448af528a88194d8c675cdf2d14bef2945","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        },"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        \"subtasks\": {"},{"line_number":55,"context_line":"            \"type\": \"array\","},{"line_number":56,"context_line":"            \"items\": {"},{"line_number":57,"context_line":"                \"type\": \"object\","},{"line_number":58,"context_line":"                \"properties\": {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_f29e4cb7","line":55,"updated":"2015-08-25 02:03:22.000000000","message":"there is special parameter to specify that length of subtasks should be \u003e\u003d1","commit_id":"b9eff61ddaa4cec3bbc52a1c2fcc713e5d25bb7f"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"1f36c0b787d48c486288ae4f290e22d834e3e0fc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        },"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        \"subtasks\": {"},{"line_number":55,"context_line":"            \"type\": \"array\","},{"line_number":56,"context_line":"            \"items\": {"},{"line_number":57,"context_line":"                \"type\": \"object\","},{"line_number":58,"context_line":"                \"properties\": {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_277c6b71","line":55,"in_reply_to":"fa1b9901_f29e4cb7","updated":"2015-08-25 12:41:32.000000000","message":"Done","commit_id":"b9eff61ddaa4cec3bbc52a1c2fcc713e5d25bb7f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd374b448af528a88194d8c675cdf2d14bef2945","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    \"required\": [\"title\", \"subtasks\"]"},{"line_number":96,"context_line":"}"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"CONFIG_SCHEMA \u003d {"},{"line_number":99,"context_line":"    \"type\": \"object\","},{"line_number":100,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":101,"context_line":"    \"patternProperties\": {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_675a7c52","line":98,"updated":"2015-08-25 02:03:22.000000000","message":"this should be like \nCONFIG_SCHEMA_1 and that first should be CONFIG_SCHEMA_V2","commit_id":"b9eff61ddaa4cec3bbc52a1c2fcc713e5d25bb7f"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"1f36c0b787d48c486288ae4f290e22d834e3e0fc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    \"required\": [\"title\", \"subtasks\"]"},{"line_number":96,"context_line":"}"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"CONFIG_SCHEMA \u003d {"},{"line_number":99,"context_line":"    \"type\": \"object\","},{"line_number":100,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":101,"context_line":"    \"patternProperties\": {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_c78b2f67","line":98,"in_reply_to":"fa1b9901_675a7c52","updated":"2015-08-25 12:41:32.000000000","message":"Done","commit_id":"b9eff61ddaa4cec3bbc52a1c2fcc713e5d25bb7f"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"6de8bec832110230a8cf0a1c1199693654987024","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \"scenarios\": {"},{"line_number":70,"context_line":"                        \"type\": \"array\","},{"line_number":71,"context_line":"                        \"minItems\": 1,"},{"line_number":72,"context_line":"                        \"items\": {"},{"line_number":73,"context_line":"                            \"type\": \"object\","},{"line_number":74,"context_line":"                            \"properties\": {"},{"line_number":75,"context_line":"                                \"name\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":15,"id":"da20952f_941c8b78","line":72,"updated":"2015-08-28 14:38:58.000000000","message":"Please implement this as a common definition of the JSON schema.\n\nhttp://spacetelescope.github.io/understanding-json-schema/structuring.html","commit_id":"387b03255d46c5b1c34257ed53dff0d58dd9697e"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"9fcebc3e05a7ee69494813911b89fc40fcde6215","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \"scenarios\": {"},{"line_number":70,"context_line":"                        \"type\": \"array\","},{"line_number":71,"context_line":"                        \"minItems\": 1,"},{"line_number":72,"context_line":"                        \"items\": {"},{"line_number":73,"context_line":"                            \"type\": \"object\","},{"line_number":74,"context_line":"                            \"properties\": {"},{"line_number":75,"context_line":"                                \"name\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":15,"id":"da20952f_6b6d05cb","line":72,"in_reply_to":"da20952f_941c8b78","updated":"2015-08-31 14:15:24.000000000","message":"1) Pls note that \"scenario\" items in v1 and v2 have slightly different structure -- we add \"name\" in v2\n2) One would suggest using \"allOf\" and extend v1 scenario scheme with additional property \"name\", rather than use explicit and mostly duplicated schemes for v1 and v2. Unfortunately, \"allOf\" mechanism does not support clause \"additionalProperties\": false  (see http://spacetelescope.github.io/understanding-json-schema/reference/combining.html#combining for explanation)\n\nSo I suggest to leave it as it is.","commit_id":"387b03255d46c5b1c34257ed53dff0d58dd9697e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"6de8bec832110230a8cf0a1c1199693654987024","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            \"subtasks\": [{\"title\": \"The only subtask\", \"scenarios\": []}]"},{"line_number":416,"context_line":"        }"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        for name, v1_scenarios in six.iteritems(v1_config):"},{"line_number":419,"context_line":"            for v1_scenario in v1_scenarios:"},{"line_number":420,"context_line":"                v1_scenario[\"name\"] \u003d name"},{"line_number":421,"context_line":"                v2_config[\"subtasks\"][0][\"scenarios\"].append(v1_scenario)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da20952f_9467ab24","line":418,"updated":"2015-08-28 14:38:58.000000000","message":"I think it is better to work on a deepcopy of v1_config.","commit_id":"387b03255d46c5b1c34257ed53dff0d58dd9697e"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"ed1104e309dbecacbd1e143bc19489bbdd0c1f8e","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            \"subtasks\": [{\"title\": \"The only subtask\", \"scenarios\": []}]"},{"line_number":416,"context_line":"        }"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        for name, v1_scenarios in six.iteritems(v1_config):"},{"line_number":419,"context_line":"            for v1_scenario in v1_scenarios:"},{"line_number":420,"context_line":"                v1_scenario[\"name\"] \u003d name"},{"line_number":421,"context_line":"                v2_config[\"subtasks\"][0][\"scenarios\"].append(v1_scenario)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da20952f_5f9d6c64","line":418,"in_reply_to":"da20952f_9467ab24","updated":"2015-08-31 09:19:50.000000000","message":"Done","commit_id":"387b03255d46c5b1c34257ed53dff0d58dd9697e"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"037d551cc2f92f5f4e74d3e997785913bd47479e","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        self.task.update_status(consts.TaskStatus.FINISHED)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"class TaskConfiguration(object):"},{"line_number":365,"context_line":"    \"\"\"Version-aware wrapper around task configuration."},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    This class provides basic syntax validation and"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_0b7c89b3","line":364,"updated":"2015-08-31 14:31:47.000000000","message":"I will just call this Task","commit_id":"cd1a811d20897aafebbbfc7752ae19257b68a99c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"037d551cc2f92f5f4e74d3e997785913bd47479e","unresolved":false,"context_lines":[{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        return v2_config"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"    def scenarios(self):"},{"line_number":427,"context_line":"        \"\"\"Iterator for scenarios in the tasks.\"\"\""},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        for subtask in self.config[\"subtasks\"]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"da20952f_2b294d9e","line":426,"updated":"2015-08-31 14:31:47.000000000","message":"subtasks","commit_id":"cd1a811d20897aafebbbfc7752ae19257b68a99c"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bd4637b4e0b89fe517c898f65d55b2b13787e60f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013: Mirantis Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":35,"id":"da20952f_9aea8073","side":"PARENT","line":1,"updated":"2015-09-14 10:53:46.000000000","message":"Why `Copyright\u0027 is removed?","commit_id":"634a8d2dadcb7b81cf58373366ece1cc87f71303"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"ebb2ec33b2d65d4a3d350e9bd33dbf469263621c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013: Mirantis Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba15a1d1_e77497d0","side":"PARENT","line":1,"in_reply_to":"da20952f_9aea8073","updated":"2015-09-14 11:01:03.000000000","message":"Oh, thanks","commit_id":"634a8d2dadcb7b81cf58373366ece1cc87f71303"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bd4637b4e0b89fe517c898f65d55b2b13787e60f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        \"\"\""},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            self.config \u003d Task(config)"},{"line_number":226,"context_line":"        except Exception as e:"},{"line_number":227,"context_line":"            log \u003d [str(type(e)), str(e), json.dumps(traceback.format_exc())]"},{"line_number":228,"context_line":"            task.set_failed(log\u003dlog)"},{"line_number":229,"context_line":"            raise exceptions.InvalidTaskException(str(e))"}],"source_content_type":"text/x-python","patch_set":35,"id":"da20952f_b52517af","line":226,"updated":"2015-09-14 10:53:46.000000000","message":"It is better to catch explicit exception type(s)","commit_id":"c51cb24c474b1ec54355bba839167b0b74017250"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"ebb2ec33b2d65d4a3d350e9bd33dbf469263621c","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        \"\"\""},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            self.config \u003d Task(config)"},{"line_number":226,"context_line":"        except Exception as e:"},{"line_number":227,"context_line":"            log \u003d [str(type(e)), str(e), json.dumps(traceback.format_exc())]"},{"line_number":228,"context_line":"            task.set_failed(log\u003dlog)"},{"line_number":229,"context_line":"            raise exceptions.InvalidTaskException(str(e))"}],"source_content_type":"text/x-python","patch_set":35,"id":"ba15a1d1_ea377ee1","line":226,"in_reply_to":"da20952f_b52517af","updated":"2015-09-14 11:01:03.000000000","message":"Well, I believe that here I should catch everything, since I\u0027ll just log it and wrap into InvalidTaskException. The logic is taken from line 259 of the previous version of the file.","commit_id":"c51cb24c474b1ec54355bba839167b0b74017250"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"711aa8356e33d8e4e612bbd5629ac14cc9b2276f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        \"tags\": {"},{"line_number":49,"context_line":"            \"type\": \"array\","},{"line_number":50,"context_line":"            \"items\": {\"type\": \"string\"}"},{"line_number":51,"context_line":"        },"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        \"run_in_parallel\": {\"type\": \"boolean\"},"},{"line_number":54,"context_line":"        \"scenarios\": {"}],"source_content_type":"text/x-python","patch_set":40,"id":"9a1a9d01_f6cfac53","line":51,"updated":"2015-09-30 15:12:29.000000000","message":"add  \"group\": {\"type\": \"string\"},","commit_id":"1d25fb6356702390493444421ab1a711f5c1d159"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"711aa8356e33d8e4e612bbd5629ac14cc9b2276f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"run_in_parallel\": {\"type\": \"boolean\"},"},{"line_number":54,"context_line":"        \"scenarios\": {"},{"line_number":55,"context_line":"            \"type\": \"array\","},{"line_number":56,"context_line":"            \"minItems\": 1,"},{"line_number":57,"context_line":"            \"items\": {"},{"line_number":58,"context_line":"                \"type\": \"object\","},{"line_number":59,"context_line":"                \"properties\": {"}],"source_content_type":"text/x-python","patch_set":40,"id":"9a1a9d01_f6a1ec94","line":56,"updated":"2015-09-30 15:12:29.000000000","message":"add \"maxItems\": 1 -- temporarily","commit_id":"1d25fb6356702390493444421ab1a711f5c1d159"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4d85497f531c2d8f8885111628beae5fa45d7fc5","unresolved":false,"context_lines":[{"line_number":482,"context_line":""},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"class SubTask(object):"},{"line_number":485,"context_line":"    \"\"\"Subtask."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    \"\"\""},{"line_number":488,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"9a1a9d01_7328db86","line":485,"updated":"2015-09-29 02:32:48.000000000","message":"meaningless description.","commit_id":"1d25fb6356702390493444421ab1a711f5c1d159"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4d85497f531c2d8f8885111628beae5fa45d7fc5","unresolved":false,"context_lines":[{"line_number":489,"context_line":"    CONFIG_SCHEMA \u003d SUBTASK_SCHEMA"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    def __init__(self, config):"},{"line_number":492,"context_line":"        \"\"\"Task constructor."},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        :param config: Dict with configuration of specified subtask"},{"line_number":495,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"9a1a9d01_f3438b40","line":492,"updated":"2015-09-29 02:32:48.000000000","message":"SubTask","commit_id":"1d25fb6356702390493444421ab1a711f5c1d159"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                \"required\": [\"name\", \"runner\"]"},{"line_number":76,"context_line":"            }"},{"line_number":77,"context_line":"        },"},{"line_number":78,"context_line":"        \"context\": {\"type\": \"object\"}"},{"line_number":79,"context_line":"    },"},{"line_number":80,"context_line":"    \"additionalProperties\": False,"},{"line_number":81,"context_line":"    \"required\": [\"title\", \"scenarios\"]"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_8cc88556","line":78,"updated":"2015-10-01 07:32:07.000000000","message":"remove this context for now.","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"237f77a36e239baae818aee33bd63a69a6cb20cd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                \"required\": [\"name\", \"runner\"]"},{"line_number":76,"context_line":"            }"},{"line_number":77,"context_line":"        },"},{"line_number":78,"context_line":"        \"context\": {\"type\": \"object\"}"},{"line_number":79,"context_line":"    },"},{"line_number":80,"context_line":"    \"additionalProperties\": False,"},{"line_number":81,"context_line":"    \"required\": [\"title\", \"scenarios\"]"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_700a9b27","line":78,"in_reply_to":"9a1a9d01_8cc88556","updated":"2015-10-01 11:33:51.000000000","message":"Done","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \"\"\"ResultConsumer constructor."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        :param key: Scenario identifier"},{"line_number":139,"context_line":"        :param task: Instance of objects.Task, task to run"},{"line_number":140,"context_line":"        :param runner: ScenarioRunner instance that produces results to be"},{"line_number":141,"context_line":"                       consumed"},{"line_number":142,"context_line":"        :param abort_on_sla_failure: True if the execution should be stopped"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_54768106","line":139,"updated":"2015-10-01 07:32:07.000000000","message":"objects. Task \n\n(missing whitespace)","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"237f77a36e239baae818aee33bd63a69a6cb20cd","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        \"\"\"ResultConsumer constructor."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        :param key: Scenario identifier"},{"line_number":139,"context_line":"        :param task: Instance of objects.Task, task to run"},{"line_number":140,"context_line":"        :param runner: ScenarioRunner instance that produces results to be"},{"line_number":141,"context_line":"                       consumed"},{"line_number":142,"context_line":"        :param abort_on_sla_failure: True if the execution should be stopped"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_2b5cb617","line":139,"in_reply_to":"9a1a9d01_54768106","updated":"2015-10-01 11:33:51.000000000","message":"It\u0027s actually a reference to the Task class from objects package.\nBut I removed \u0027objects\u0027 since we rename engine.Task to TaskConfig","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":398,"context_line":"        self.task.update_status(consts.TaskStatus.RUNNING)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        for subtask in self.config.subtasks:"},{"line_number":401,"context_line":"            for n, kw in enumerate(subtask.scenarios):"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"                if ResultConsumer.is_task_in_aborting_status("},{"line_number":404,"context_line":"                        self.task[\"uuid\"]):"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_d7836601","line":401,"updated":"2015-10-01 07:32:07.000000000","message":"Please replace it to: \n\n  for n, scenario in enumerate(subtask.scenarios): \n    ...","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"237f77a36e239baae818aee33bd63a69a6cb20cd","unresolved":false,"context_lines":[{"line_number":398,"context_line":"        self.task.update_status(consts.TaskStatus.RUNNING)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        for subtask in self.config.subtasks:"},{"line_number":401,"context_line":"            for n, kw in enumerate(subtask.scenarios):"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"                if ResultConsumer.is_task_in_aborting_status("},{"line_number":404,"context_line":"                        self.task[\"uuid\"]):"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_4bb24a4d","line":401,"in_reply_to":"9a1a9d01_d7836601","updated":"2015-10-01 11:33:51.000000000","message":"Done","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                    self.task.update_status(consts.TaskStatus.ABORTED)"},{"line_number":407,"context_line":"                    return"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"                name \u003d kw[\"name\"]"},{"line_number":410,"context_line":"                key \u003d {\"name\": name, \"pos\": n, \"kw\": kw}"},{"line_number":411,"context_line":"                LOG.info(\"Running benchmark with key: \\n%s\""},{"line_number":412,"context_line":"                         % json.dumps(key, indent\u003d2))"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_77a61aaf","line":409,"updated":"2015-10-01 07:32:07.000000000","message":"why we have name here? it should be title? \n\nWhy this is dictinior and not instance of SubTask? And why we are not accessing it like: SubTask.title? \n\nBy the way I would suggest to create full name in case of task v2: \n\n\n   \"%s.%s\" % (self.group or \"default\", self.title)","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"237f77a36e239baae818aee33bd63a69a6cb20cd","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                    self.task.update_status(consts.TaskStatus.ABORTED)"},{"line_number":407,"context_line":"                    return"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"                name \u003d kw[\"name\"]"},{"line_number":410,"context_line":"                key \u003d {\"name\": name, \"pos\": n, \"kw\": kw}"},{"line_number":411,"context_line":"                LOG.info(\"Running benchmark with key: \\n%s\""},{"line_number":412,"context_line":"                         % json.dumps(key, indent\u003d2))"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_cbd2da5b","line":409,"in_reply_to":"9a1a9d01_77a61aaf","updated":"2015-10-01 11:33:51.000000000","message":"Done","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"45d067b04f08ec1a2b75ae082943cedef64d4687","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                    self.task.update_status(consts.TaskStatus.ABORTED)"},{"line_number":407,"context_line":"                    return"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"                name \u003d kw[\"name\"]"},{"line_number":410,"context_line":"                key \u003d {\"name\": name, \"pos\": n, \"kw\": kw}"},{"line_number":411,"context_line":"                LOG.info(\"Running benchmark with key: \\n%s\""},{"line_number":412,"context_line":"                         % json.dumps(key, indent\u003d2))"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_164ead96","line":409,"in_reply_to":"9a1a9d01_77a61aaf","updated":"2015-10-01 15:05:35.000000000","message":"We use title of the form \"ClassName.method_name\" to load corresponding scenario plugin. Group as a part of the title does not fit to this scheme so I leave it as it is. We should elaborate better on it.","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            self.task.update_status(consts.TaskStatus.FINISHED)"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"class Task(object):"},{"line_number":431,"context_line":"    \"\"\"Version-aware wrapper around task."},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_0ce315da","line":430,"updated":"2015-10-01 07:32:07.000000000","message":"Maybe TaskConfig ? \n\nTask seems too common and it\u0027s overlapping with rally.objects.task","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            for name, v1_scenarios in six.iteritems(config):"},{"line_number":478,"context_line":"                for v1_scenario in v1_scenarios:"},{"line_number":479,"context_line":"                    v2_scenario \u003d copy.deepcopy(v1_scenario)"},{"line_number":480,"context_line":"                    v2_scenario[\"name\"] \u003d name"},{"line_number":481,"context_line":"                    subtasks.append("},{"line_number":482,"context_line":"                        SubTask({\"title\": name, \"scenarios\": [v2_scenario]}))"},{"line_number":483,"context_line":"            return subtasks"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_f7a30ab0","line":480,"updated":"2015-10-01 07:32:07.000000000","message":"v2_scenario shouldn\u0027t have name","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"53a4500052cb68c57112208c5d194ff003f60bd5","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            for name, v1_scenarios in six.iteritems(config):"},{"line_number":478,"context_line":"                for v1_scenario in v1_scenarios:"},{"line_number":479,"context_line":"                    v2_scenario \u003d copy.deepcopy(v1_scenario)"},{"line_number":480,"context_line":"                    v2_scenario[\"name\"] \u003d name"},{"line_number":481,"context_line":"                    subtasks.append("},{"line_number":482,"context_line":"                        SubTask({\"title\": name, \"scenarios\": [v2_scenario]}))"},{"line_number":483,"context_line":"            return subtasks"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_d7d11c31","line":480,"in_reply_to":"9a1a9d01_4b232a56","updated":"2015-10-01 11:59:53.000000000","message":"Actually spec says there should be a name, https://github.com/openstack/rally/blame/master/doc/specs/in-progress/new_rally_input_task_format.rst#L146\n\nI remove it (the name) for now, but pls let me know should we get it back or update the spec.","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"237f77a36e239baae818aee33bd63a69a6cb20cd","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            for name, v1_scenarios in six.iteritems(config):"},{"line_number":478,"context_line":"                for v1_scenario in v1_scenarios:"},{"line_number":479,"context_line":"                    v2_scenario \u003d copy.deepcopy(v1_scenario)"},{"line_number":480,"context_line":"                    v2_scenario[\"name\"] \u003d name"},{"line_number":481,"context_line":"                    subtasks.append("},{"line_number":482,"context_line":"                        SubTask({\"title\": name, \"scenarios\": [v2_scenario]}))"},{"line_number":483,"context_line":"            return subtasks"}],"source_content_type":"text/x-python","patch_set":41,"id":"9a1a9d01_4b232a56","line":480,"in_reply_to":"9a1a9d01_f7a30ab0","updated":"2015-10-01 11:33:51.000000000","message":"Done","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b31c957b480fe6ea5a196834071fe7d92b80296e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"SUBTASK_SCHEMA \u003d {"},{"line_number":44,"context_line":"    \"type\": \"object\","},{"line_number":45,"context_line":"    \"properties\": {"},{"line_number":46,"context_line":"        \"title\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":45,"id":"7a2fa921_51daf318","line":43,"updated":"2015-10-12 10:18:18.000000000","message":"ove this to \tCONFIG_SCHEMA_V2","commit_id":"ba1402ee9d0d8405ef2f615ecfaec70553eac51e"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"2636ed03c6b1ae15830c4cd064177269487b4826","unresolved":false,"context_lines":[{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"SUBTASK_SCHEMA \u003d {"},{"line_number":44,"context_line":"    \"type\": \"object\","},{"line_number":45,"context_line":"    \"properties\": {"},{"line_number":46,"context_line":"        \"title\": {\"type\": \"string\"},"}],"source_content_type":"text/x-python","patch_set":45,"id":"7a2fa921_4a78f58f","line":43,"in_reply_to":"7a2fa921_51daf318","updated":"2015-10-12 12:06:04.000000000","message":"Done","commit_id":"ba1402ee9d0d8405ef2f615ecfaec70553eac51e"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b31c957b480fe6ea5a196834071fe7d92b80296e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \"required\": [\"title\", \"subtasks\"]"},{"line_number":104,"context_line":"}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"CONFIG_SCHEMA_V1 \u003d {"},{"line_number":107,"context_line":"    \"type\": \"object\","},{"line_number":108,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":109,"context_line":"    \"patternProperties\": {"}],"source_content_type":"text/x-python","patch_set":45,"id":"7a2fa921_d1fcc374","line":106,"updated":"2015-10-12 10:18:18.000000000","message":"change the order of schemas","commit_id":"ba1402ee9d0d8405ef2f615ecfaec70553eac51e"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"2636ed03c6b1ae15830c4cd064177269487b4826","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \"required\": [\"title\", \"subtasks\"]"},{"line_number":104,"context_line":"}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"CONFIG_SCHEMA_V1 \u003d {"},{"line_number":107,"context_line":"    \"type\": \"object\","},{"line_number":108,"context_line":"    \"$schema\": consts.JSON_SCHEMA,"},{"line_number":109,"context_line":"    \"patternProperties\": {"}],"source_content_type":"text/x-python","patch_set":45,"id":"7a2fa921_2a7339b6","line":106,"in_reply_to":"7a2fa921_d1fcc374","updated":"2015-10-12 12:06:04.000000000","message":"Done","commit_id":"ba1402ee9d0d8405ef2f615ecfaec70553eac51e"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b31c957b480fe6ea5a196834071fe7d92b80296e","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        self.context \u003d config.get(\"context\", {})"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    @classmethod"},{"line_number":507,"context_line":"    def _validate_json(cls, config):"},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            jsonschema.validate(config, cls.CONFIG_SCHEMA)"},{"line_number":510,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":45,"id":"7a2fa921_b1c6e747","line":507,"updated":"2015-10-12 10:18:18.000000000","message":"remove validation because it is not required.","commit_id":"ba1402ee9d0d8405ef2f615ecfaec70553eac51e"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"2636ed03c6b1ae15830c4cd064177269487b4826","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        self.context \u003d config.get(\"context\", {})"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    @classmethod"},{"line_number":507,"context_line":"    def _validate_json(cls, config):"},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            jsonschema.validate(config, cls.CONFIG_SCHEMA)"},{"line_number":510,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":45,"id":"7a2fa921_6a4a9157","line":507,"in_reply_to":"7a2fa921_b1c6e747","updated":"2015-10-12 12:06:04.000000000","message":"Done","commit_id":"ba1402ee9d0d8405ef2f615ecfaec70553eac51e"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"26e8594feb817265c37e137b14eac1abf2229e14","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Task validation of syntax.\"))"},{"line_number":205,"context_line":"    def _validate_config_syntax(self, config):"},{"line_number":206,"context_line":"        for subtask in config.subtasks:"},{"line_number":207,"context_line":"            for pos, scenario_obj in enumerate(subtask.scenarios):"},{"line_number":208,"context_line":"                try:"},{"line_number":209,"context_line":"                    runner.ScenarioRunner.validate("},{"line_number":210,"context_line":"                        scenario_obj.get(\"runner\", {}))"}],"source_content_type":"text/x-python","patch_set":46,"id":"5a2ca52d_127e5819","line":207,"updated":"2015-10-15 11:14:22.000000000","message":"The naming is misleading, beucase in scenario we have runner and context. But at this point I can\u0027t find better.","commit_id":"d0f079230602705251512448a135f8598c0a29b3"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"22da09a036120f09d8553726be81262c31cfda76","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Task validation of syntax.\"))"},{"line_number":205,"context_line":"    def _validate_config_syntax(self, config):"},{"line_number":206,"context_line":"        for subtask in config.subtasks:"},{"line_number":207,"context_line":"            for pos, scenario_obj in enumerate(subtask.scenarios):"},{"line_number":208,"context_line":"                try:"},{"line_number":209,"context_line":"                    runner.ScenarioRunner.validate("},{"line_number":210,"context_line":"                        scenario_obj.get(\"runner\", {}))"}],"source_content_type":"text/x-python","patch_set":46,"id":"5a2ca52d_b578ae90","line":207,"in_reply_to":"5a2ca52d_127e5819","updated":"2015-10-15 11:25:57.000000000","message":"Not sure that I follow you exactly, but here scenario does contain runner and context alone with sla and args.","commit_id":"d0f079230602705251512448a135f8598c0a29b3"}],"samples/tasks/scenarios/nova/boot-and-delete-v2.json":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"220ef3225879fb20e6249f664b8eb408a66cf4fd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"version\": 2,"},{"line_number":3,"context_line":"    \"title\": \"boot-and-delete\","},{"line_number":4,"context_line":"    \"tags\": [\"nova\"],"}],"source_content_type":"application/json","patch_set":19,"id":"da20952f_ee7595ca","line":1,"updated":"2015-08-31 19:12:17.000000000","message":"This is not exactly what I meant.\n\nhttps://github.com/openstack/rally/tree/master/rally-jobs dir contains yaml files, which we use in our gates. If we port one of this file, we will be able to check config v2 in gates. I suppose that  rally.yaml and rally-neutron.yaml are most universal jobs, so it would be nice to have config v2 for one of these jobs.","commit_id":"68bc29b1eefc096e5a2e58cfbba9b22eccabab53"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c715b9f99892a52da9a3392673be24f8daa10da3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% set flavor_name \u003d flavor_name or \"m1.tiny\" %}"},{"line_number":2,"context_line":"{"},{"line_number":3,"context_line":"    \"version\": 2,"},{"line_number":4,"context_line":"    \"title\": \"boot-and-delete\","}],"source_content_type":"application/json","patch_set":41,"id":"9a1a9d01_4ca4ad49","line":1,"updated":"2015-10-01 07:32:07.000000000","message":"I dislike adding this file at this moment to samples. \n\nLet\u0027s just add functional test that will run task in new format and ensure that it works well","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"d2cf52f038dc803f4c417b07faafa6e64fdda935","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% set flavor_name \u003d flavor_name or \"m1.tiny\" %}"},{"line_number":2,"context_line":"{"},{"line_number":3,"context_line":"    \"version\": 2,"},{"line_number":4,"context_line":"    \"title\": \"boot-and-delete\","}],"source_content_type":"application/json","patch_set":41,"id":"9a1a9d01_6b94e943","line":1,"in_reply_to":"9a1a9d01_4ca4ad49","updated":"2015-10-01 13:21:17.000000000","message":"Done","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"1e42436eb5fc4a56fffb0ab1584c3a7ab5e8dd3c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{% set flavor_name \u003d flavor_name or \"m1.tiny\" %}"},{"line_number":2,"context_line":"{"},{"line_number":3,"context_line":"    \"version\": 2,"},{"line_number":4,"context_line":"    \"title\": \"boot-and-delete\","}],"source_content_type":"application/json","patch_set":41,"id":"9a1a9d01_8bd4b447","line":1,"in_reply_to":"9a1a9d01_6b94e943","updated":"2015-10-02 09:35:09.000000000","message":"so this was not done","commit_id":"c8cad5a472e6a2f1491020cc2713ce0d21efa993"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c3dadfd9fa63f254452a4d54af6d20bf2e9d1cea","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"version\": 2,"},{"line_number":3,"context_line":"    \"title\": \"boot-and-delete\","},{"line_number":4,"context_line":"    \"tags\": [\"nova\"],"},{"line_number":5,"context_line":"    \"subtasks\": [{"}],"source_content_type":"application/json","patch_set":43,"id":"9a1a9d01_0b48a42c","line":2,"updated":"2015-10-02 09:35:56.000000000","message":"Please remove these samples and add functional tests in dsvm-cli job that will test that you can run tasks with new format","commit_id":"cf02bd069408a7fd24f38dc4c8ec96fde6a9a5f1"}]}
