)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"7b40441dc758fe942f3584eb149d1d2c1dffb68f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Oleh Anufriiev \u003coanufriev@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-24 05:11:13 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"notes v0.1.0"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I9cc351e251b2a4269127fd93d80905aeb7439807"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_022795b6","line":7,"updated":"2015-09-24 08:45:46.000000000","message":"release notes v0.1.0 - its a nit that someone except me might told to you","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"}],"doc/release_notes/latest.rst":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"  * now plugins are under rally/plugins directory"},{"line_number":39,"context_line":"  * plugins are separated on categories:"},{"line_number":40,"context_line":"    * openstack (openstack related plugins)"},{"line_number":41,"context_line":"    * common (need no openstack)"},{"line_number":42,"context_line":"  * implemented plugins base class, that all plugins have been inherited from"},{"line_number":43,"context_line":"    (rally.common.plugin.plugin.Plugin)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_379b2b19","line":40,"updated":"2015-09-11 08:17:00.000000000","message":"don\u0027t forget to point to rally.plugins.openstack.scenario module \n\nE.g. now we don\u0027t have inside rally.task.scenario.Scenario anything hardcoded to OpenStack","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"  * now plugins are under rally/plugins directory"},{"line_number":39,"context_line":"  * plugins are separated on categories:"},{"line_number":40,"context_line":"    * openstack (openstack related plugins)"},{"line_number":41,"context_line":"    * common (need no openstack)"},{"line_number":42,"context_line":"  * implemented plugins base class, that all plugins have been inherited from"},{"line_number":43,"context_line":"    (rally.common.plugin.plugin.Plugin)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_f6304beb","line":40,"in_reply_to":"da20952f_379b2b19","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  * plugins are separated on categories:"},{"line_number":40,"context_line":"    * openstack (openstack related plugins)"},{"line_number":41,"context_line":"    * common (need no openstack)"},{"line_number":42,"context_line":"  * implemented plugins base class, that all plugins have been inherited from"},{"line_number":43,"context_line":"    (rally.common.plugin.plugin.Plugin)"},{"line_number":44,"context_line":"    * Introduce meta class that allows to bind meta data to class"},{"line_number":45,"context_line":"      Like we have for context order and hidden, for scenarios validation types and so on."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_37e48ba6","line":42,"updated":"2015-09-11 08:17:00.000000000","message":"Instead of making this list (that nobody will understand because it\u0027s to techincal) let\u0027s just write samples of OLD vs NEW STYLE Plugins. \n\nso it will look like: \n\n * Context plugin interface has changed: \n\n   old: \n   sample\n\n   new: \n   same sample in format with all imports \n\nBy sample I mean like: \n \n  from rally.task import context\n \n  @context.configure(....)\n  class MyContext(context.Context): \n\n     def setup(): \n         ...\n     ...","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"447b15acf7a32a3e9cb4baa803bcf0e4bcf978e5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  * plugins are separated on categories:"},{"line_number":40,"context_line":"    * openstack (openstack related plugins)"},{"line_number":41,"context_line":"    * common (need no openstack)"},{"line_number":42,"context_line":"  * implemented plugins base class, that all plugins have been inherited from"},{"line_number":43,"context_line":"    (rally.common.plugin.plugin.Plugin)"},{"line_number":44,"context_line":"    * Introduce meta class that allows to bind meta data to class"},{"line_number":45,"context_line":"      Like we have for context order and hidden, for scenarios validation types and so on."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba15a1d1_fc493ab8","line":42,"in_reply_to":"da20952f_37e48ba6","updated":"2015-09-22 16:43:49.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    * Add from_func decorator that makes functional look like plugin"},{"line_number":50,"context_line":"    * Add support of plugins namespace"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* plugin framework moved from rally/benchmark to rally/task"},{"line_number":53,"context_line":"  we assume that this name is more intuitive"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Rename rally.cmd to rally.cli"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_d78c2fd9","line":52,"updated":"2015-09-11 08:17:00.000000000","message":"Task framework","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    * Add from_func decorator that makes functional look like plugin"},{"line_number":50,"context_line":"    * Add support of plugins namespace"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* plugin framework moved from rally/benchmark to rally/task"},{"line_number":53,"context_line":"  we assume that this name is more intuitive"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* Rename rally.cmd to rally.cli"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_63d9dbf2","line":52,"in_reply_to":"da20952f_d78c2fd9","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Rally cli changes:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  * rally --plugin-paths specify the list of folders with plugins"},{"line_number":60,"context_line":"  * rally task report —junit - generate a JUnit report"},{"line_number":61,"context_line":"    This allows users to feed reports to tools such as Jenkins."},{"line_number":62,"context_line":"  * rally task abort - abort started benchmarking task"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_97c1d7e6","line":59,"updated":"2015-09-11 08:17:00.000000000","message":"directories","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Rally cli changes:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  * rally --plugin-paths specify the list of folders with plugins"},{"line_number":60,"context_line":"  * rally task report —junit - generate a JUnit report"},{"line_number":61,"context_line":"    This allows users to feed reports to tools such as Jenkins."},{"line_number":62,"context_line":"  * rally task abort - abort started benchmarking task"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_63523b69","line":59,"in_reply_to":"da20952f_97c1d7e6","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  * rally --plugin-paths specify the list of folders with plugins"},{"line_number":60,"context_line":"  * rally task report —junit - generate a JUnit report"},{"line_number":61,"context_line":"    This allows users to feed reports to tools such as Jenkins."},{"line_number":62,"context_line":"  * rally task abort - abort started benchmarking task"},{"line_number":63,"context_line":"    when run with the --soft key, the \u0027rally task abort\u0027 command should wait until"},{"line_number":64,"context_line":"    the currently running benchmark is finished, otherwise the command interrupts benchmarking immediately"},{"line_number":65,"context_line":"    after running scenario iterations are finished."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_17ae272e","line":62,"updated":"2015-09-11 08:17:00.000000000","message":"aborts running rally task","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":59,"context_line":"  * rally --plugin-paths specify the list of folders with plugins"},{"line_number":60,"context_line":"  * rally task report —junit - generate a JUnit report"},{"line_number":61,"context_line":"    This allows users to feed reports to tools such as Jenkins."},{"line_number":62,"context_line":"  * rally task abort - abort started benchmarking task"},{"line_number":63,"context_line":"    when run with the --soft key, the \u0027rally task abort\u0027 command should wait until"},{"line_number":64,"context_line":"    the currently running benchmark is finished, otherwise the command interrupts benchmarking immediately"},{"line_number":65,"context_line":"    after running scenario iterations are finished."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_636b1b1f","line":62,"in_reply_to":"da20952f_17ae272e","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    This allows users to feed reports to tools such as Jenkins."},{"line_number":62,"context_line":"  * rally task abort - abort started benchmarking task"},{"line_number":63,"context_line":"    when run with the --soft key, the \u0027rally task abort\u0027 command should wait until"},{"line_number":64,"context_line":"    the currently running benchmark is finished, otherwise the command interrupts benchmarking immediately"},{"line_number":65,"context_line":"    after running scenario iterations are finished."},{"line_number":66,"context_line":"    Add Task get_status(uuid) and update_status_in_abort(...) methods to db sqlalchemy api."},{"line_number":67,"context_line":"  * rally plugin - show and list commands"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_3769ebf8","line":64,"updated":"2015-09-11 08:17:00.000000000","message":"/running benchmark/running task/ \n\nDo not use word benchmark at all","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    This allows users to feed reports to tools such as Jenkins."},{"line_number":62,"context_line":"  * rally task abort - abort started benchmarking task"},{"line_number":63,"context_line":"    when run with the --soft key, the \u0027rally task abort\u0027 command should wait until"},{"line_number":64,"context_line":"    the currently running benchmark is finished, otherwise the command interrupts benchmarking immediately"},{"line_number":65,"context_line":"    after running scenario iterations are finished."},{"line_number":66,"context_line":"    Add Task get_status(uuid) and update_status_in_abort(...) methods to db sqlalchemy api."},{"line_number":67,"context_line":"  * rally plugin - show and list commands"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_e37e4be3","line":64,"in_reply_to":"da20952f_3769ebf8","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    when run with the --soft key, the \u0027rally task abort\u0027 command should wait until"},{"line_number":64,"context_line":"    the currently running benchmark is finished, otherwise the command interrupts benchmarking immediately"},{"line_number":65,"context_line":"    after running scenario iterations are finished."},{"line_number":66,"context_line":"    Add Task get_status(uuid) and update_status_in_abort(...) methods to db sqlalchemy api."},{"line_number":67,"context_line":"  * rally plugin - show and list commands"},{"line_number":68,"context_line":"    * Introduce rally.common.plugin.info.InfoMixin and adds it to plugin base. It adds method get_info()"},{"line_number":69,"context_line":"      to all plugins. This method returns information about plugin such like title, description, arguments,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_774a0385","line":66,"updated":"2015-09-11 08:17:00.000000000","message":"this is internal change we shouldn\u0027t mention it at all","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    when run with the --soft key, the \u0027rally task abort\u0027 command should wait until"},{"line_number":64,"context_line":"    the currently running benchmark is finished, otherwise the command interrupts benchmarking immediately"},{"line_number":65,"context_line":"    after running scenario iterations are finished."},{"line_number":66,"context_line":"    Add Task get_status(uuid) and update_status_in_abort(...) methods to db sqlalchemy api."},{"line_number":67,"context_line":"  * rally plugin - show and list commands"},{"line_number":68,"context_line":"    * Introduce rally.common.plugin.info.InfoMixin and adds it to plugin base. It adds method get_info()"},{"line_number":69,"context_line":"      to all plugins. This method returns information about plugin such like title, description, arguments,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_a30db390","line":66,"in_reply_to":"da20952f_774a0385","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    after running scenario iterations are finished."},{"line_number":66,"context_line":"    Add Task get_status(uuid) and update_status_in_abort(...) methods to db sqlalchemy api."},{"line_number":67,"context_line":"  * rally plugin - show and list commands"},{"line_number":68,"context_line":"    * Introduce rally.common.plugin.info.InfoMixin and adds it to plugin base. It adds method get_info()"},{"line_number":69,"context_line":"      to all plugins. This method returns information about plugin such like title, description, arguments,"},{"line_number":70,"context_line":"      plugin module"},{"line_number":71,"context_line":"    * Introduce rally plugin show and list commnds that returns information about all plugins"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_7731a30a","line":68,"updated":"2015-09-11 08:17:00.000000000","message":"it\u0027s better to show samples here instead of text.","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"01a32a43df91c3ce1a87c58f1b036624a7713a1c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    after running scenario iterations are finished."},{"line_number":66,"context_line":"    Add Task get_status(uuid) and update_status_in_abort(...) methods to db sqlalchemy api."},{"line_number":67,"context_line":"  * rally plugin - show and list commands"},{"line_number":68,"context_line":"    * Introduce rally.common.plugin.info.InfoMixin and adds it to plugin base. It adds method get_info()"},{"line_number":69,"context_line":"      to all plugins. This method returns information about plugin such like title, description, arguments,"},{"line_number":70,"context_line":"      plugin module"},{"line_number":71,"context_line":"    * Introduce rally plugin show and list commnds that returns information about all plugins"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba15a1d1_6a48b55c","line":68,"in_reply_to":"da20952f_7731a30a","updated":"2015-09-24 02:20:44.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    * Moves info related methods from rally.common.utils to rally.common.plugin.info modul"},{"line_number":73,"context_line":"  * rally info - removed. \"rally plugin\" command does the thing in better way."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* Rename sla.base module to sla"},{"line_number":76,"context_line":"  Since rally/benchmark/sla dir contains only one module, we can easaly remove"},{"line_number":77,"context_line":"  it and move rally.benchmark.sla.base to rally.benchmark.sla"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_576a5eb6","line":75,"updated":"2015-09-11 08:17:00.000000000","message":"Moved rally.task.sla.base -\u003e rally.task.sla \n\nPlease combine all MV of dirs together with changes in framework. \n\nSo it should look like: \n\n  - Move plugins to separated dir \n  - Changes in rally framework plugin interface: \n    Bunch of files were moved: \n\n      rally.benchmark.sla.base -\u003e rally.task.sla \n      rally.benchamrk.context.base -\u003e rally.task.context\n      ....\n\n    We switching to single plugin base for all plugin types. So some changes in plugin description happend as well. Here are the sample of new/old context, sla, scenario, ....","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"447b15acf7a32a3e9cb4baa803bcf0e4bcf978e5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    * Moves info related methods from rally.common.utils to rally.common.plugin.info modul"},{"line_number":73,"context_line":"  * rally info - removed. \"rally plugin\" command does the thing in better way."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* Rename sla.base module to sla"},{"line_number":76,"context_line":"  Since rally/benchmark/sla dir contains only one module, we can easaly remove"},{"line_number":77,"context_line":"  it and move rally.benchmark.sla.base to rally.benchmark.sla"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba15a1d1_97cd77b9","line":75,"in_reply_to":"da20952f_576a5eb6","updated":"2015-09-22 16:43:49.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* Move rally.benchmark.context.base module"},{"line_number":83,"context_line":"  rally.benchmark.context.base -\u003e rally.benchmark.context"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* Remove deprecated code"},{"line_number":86,"context_line":"  * \u0027$rally use\u0027 cli command entirely"},{"line_number":87,"context_line":"  * Depraceted api: create_deploy, destroy_deploy, recreate_deploy,"},{"line_number":88,"context_line":"    task_template_render, create_task, task_validate, start_task, abort_task,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_3766caed","line":85,"updated":"2015-09-11 08:17:00.000000000","message":"This must be in the separated section of release notes. (It\u0027s about non backward compatible changes)","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* Move rally.benchmark.context.base module"},{"line_number":83,"context_line":"  rally.benchmark.context.base -\u003e rally.benchmark.context"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* Remove deprecated code"},{"line_number":86,"context_line":"  * \u0027$rally use\u0027 cli command entirely"},{"line_number":87,"context_line":"  * Depraceted api: create_deploy, destroy_deploy, recreate_deploy,"},{"line_number":88,"context_line":"    task_template_render, create_task, task_validate, start_task, abort_task,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_8a367c4f","line":85,"in_reply_to":"da20952f_3766caed","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  * Depraceted parameters min_size, max_size, volime_size at plugins/"},{"line_number":98,"context_line":"    openstack/scenarios/cinder/volumes.py. Now you should use size dict argument instead."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* Add rally.common.plugin.discover module"},{"line_number":101,"context_line":"  Move all related to plugins from utils to discover module"},{"line_number":102,"context_line":"  and fix the code and tests to make it work"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_b7a09af5","line":100,"updated":"2015-09-11 08:17:00.000000000","message":"this is internal change and should be in release notes","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  * Depraceted parameters min_size, max_size, volime_size at plugins/"},{"line_number":98,"context_line":"    openstack/scenarios/cinder/volumes.py. Now you should use size dict argument instead."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* Add rally.common.plugin.discover module"},{"line_number":101,"context_line":"  Move all related to plugins from utils to discover module"},{"line_number":102,"context_line":"  and fix the code and tests to make it work"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_e3308b58","line":100,"in_reply_to":"da20952f_b7a09af5","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":117,"context_line":"   and single cycling over iterations"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":" * Task results format for reports generation has been extended with aggregated information"},{"line_number":120,"context_line":"   about iterations (like maximum/minumum duration, start timestamp) and"},{"line_number":121,"context_line":"   iterations data represented by iterator, for streaming processing"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":" * rally.task.processing.plot has been rewritted for using new charts classes,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_77a68210","line":120,"updated":"2015-09-11 08:17:00.000000000","message":"this is internal change remove it from release notes","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":117,"context_line":"   and single cycling over iterations"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":" * Task results format for reports generation has been extended with aggregated information"},{"line_number":120,"context_line":"   about iterations (like maximum/minumum duration, start timestamp) and"},{"line_number":121,"context_line":"   iterations data represented by iterator, for streaming processing"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":" * rally.task.processing.plot has been rewritted for using new charts classes,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_23ec43ba","line":120,"in_reply_to":"da20952f_77a68210","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":121,"context_line":"   iterations data represented by iterator, for streaming processing"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":" * rally.task.processing.plot has been rewritted for using new charts classes,"},{"line_number":124,"context_line":"   so it became thin and clear, and now iterations data are processed in single"},{"line_number":125,"context_line":"   cycle - this allows to process arbitrary number of iterations with low memory usage"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":" * New LoadProfile chart is added. It shows number of parallel iterations for each benchmark moment"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_57efbe1c","line":124,"updated":"2015-09-11 08:17:00.000000000","message":"1 point related to charts and this should be merged resulting paragraph should contain next infromation: \n\n  - Reports were refactored to address scalability issues, now they are generate using only one iterations over the raw data as well now OOP is used and it\u0027s much simpler to extend reports.","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":121,"context_line":"   iterations data represented by iterator, for streaming processing"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":" * rally.task.processing.plot has been rewritted for using new charts classes,"},{"line_number":124,"context_line":"   so it became thin and clear, and now iterations data are processed in single"},{"line_number":125,"context_line":"   cycle - this allows to process arbitrary number of iterations with low memory usage"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":" * New LoadProfile chart is added. It shows number of parallel iterations for each benchmark moment"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_c536a702","line":124,"in_reply_to":"da20952f_57efbe1c","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b398f49a72afa08914b97ccd1b995a5e410b49d9","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  [feature request] Add abbility to caputre logs from tested services"},{"line_number":147,"context_line":"  Add abbility to caputre and store logs of test"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"  [spec] Refactoring Rally cleanup"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  [spec] Consistent resource names"},{"line_number":152,"context_line":"  Name resources consistently to improve cleanup and make Rally more generic."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_b7d5fa43","line":149,"updated":"2015-09-11 08:17:00.000000000","message":"put some information aboutthis spec","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"9630c8accec74d8485040e50afda646196f8c7af","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  [feature request] Add abbility to caputre logs from tested services"},{"line_number":147,"context_line":"  Add abbility to caputre and store logs of test"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"  [spec] Refactoring Rally cleanup"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  [spec] Consistent resource names"},{"line_number":152,"context_line":"  Name resources consistently to improve cleanup and make Rally more generic."}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_83e3cfd7","line":149,"in_reply_to":"da20952f_b7d5fa43","updated":"2015-09-11 14:43:20.000000000","message":"Done","commit_id":"f8f77dbda00bea08cf55026a8edb50dddb89aec9"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":12,"context_line":"+------------------+-----------------------+"},{"line_number":13,"context_line":"| Dev cycle        |      **117 days**     |"},{"line_number":14,"context_line":"+------------------+-----------------------+"},{"line_number":15,"context_line":"| Release date     | **9/September/2015**  |"},{"line_number":16,"context_line":"+------------------+-----------------------+"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_d1b2cd95","line":15,"updated":"2015-09-24 08:43:48.000000000","message":"Here is a sense to talk with Boris and write the exact date of release. For example at 27 September and in any case cut it in Sunday.","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Details"},{"line_number":20,"context_line":"-------"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"This release contains new features, new benchmark plugins, bug fixes, various code and API improvements."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"New Features \u0026 API changes"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_31f46959","line":22,"updated":"2015-09-24 08:43:48.000000000","message":"I suggest to add here the reason why this release was so long. Moving to plugin base...","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  * added parameters:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    * ``--develop`` parameter to install rally in editable (develop) mode"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    * ``--no-color`` to switch off output colorizing"},{"line_number":34,"context_line":"      usefull for autinated output parsing or else"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_0c7a6ef1","line":31,"updated":"2015-09-24 08:43:48.000000000","message":"There was added more parameters. You might forgot  to mention about --url and --branch.","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    * puts rally.conf under virtualenv etc/rally/"},{"line_number":37,"context_line":"      so you can have several rally installations in virtualenv"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* Move plugins to separated director"},{"line_number":40,"context_line":"  now plugins are under rally/plugins directory"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Changes in rally framework plugin interface:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_4cee26ee","line":39,"updated":"2015-09-24 08:43:48.000000000","message":"\"move ...INTO...\" -  maybe better","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      so you can have several rally installations in virtualenv"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* Move plugins to separated director"},{"line_number":40,"context_line":"  now plugins are under rally/plugins directory"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Changes in rally framework plugin interface:"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_8c40bea6","line":40,"updated":"2015-09-24 08:43:48.000000000","message":"I think the verb \"to place\" - would be better here. For example, \"now plugins placed under \". Also do english speakers understand the phrase \"placed under\"?)","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    * openstack (openstack related plugins)"},{"line_number":47,"context_line":"      these plugins should be subclasses of rally.plugins.openstack.scenario.OpenStackScenario"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    * common (need no openstack)"},{"line_number":50,"context_line":"      these plugins should be subclasses of rally.task.scenario.Scenario"},{"line_number":51,"context_line":"      now Scenario class has no any hardcoded OpenStack related stuff"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_ac702273","line":49,"updated":"2015-09-24 08:43:48.000000000","message":"\"need no\" - sounds like in russian)","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    * rally.benchamrk.context.base -\u003e rally.task.context"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    * rally.benchmark.scenarios.utils -\u003e rally.task.utils"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    We switching to single plugin base for all plugin types. So some changes in plugin description happend as well."},{"line_number":64,"context_line":"    Here are the sample of new/old context, sla, scenario:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_471d9fbc","line":61,"updated":"2015-09-24 08:43:48.000000000","message":"There was some moving work from Yair https://review.openstack.org/#/c/187569/ https://review.openstack.org/#/c/183906/","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    * rally.benchmark.scenarios.utils -\u003e rally.task.utils"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    We switching to single plugin base for all plugin types. So some changes in plugin description happend as well."},{"line_number":64,"context_line":"    Here are the sample of new/old context, sla, scenario:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":".."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_acd902f5","line":64,"updated":"2015-09-24 08:43:48.000000000","message":"* \"IS the sample\"?","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"33d9502b69ad78506ffb589eaa7287da90056352","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    * rally.benchmark.scenarios.utils -\u003e rally.task.utils"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    We switching to single plugin base for all plugin types. So some changes in plugin description happend as well."},{"line_number":64,"context_line":"    Here are the sample of new/old context, sla, scenario:"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":".."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a1a9d01_9adc2948","line":64,"in_reply_to":"ba15a1d1_acd902f5","updated":"2015-09-24 14:13:30.000000000","message":"Done","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* Rename context.context -\u003e context.configure"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"* Rename EngineFactory -\u003e Engine"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"* Move rally/db -\u003e rally/common/db"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_87141744","line":224,"updated":"2015-09-24 08:43:48.000000000","message":"You might forgot one rename https://review.openstack.org/#/c/192086 Also I think that \n\t* Move rally/db -\u003e rally/common/db\n        * Move rally/objects -\u003e rally/common/objects\nmust to be at 62 line.","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"33d9502b69ad78506ffb589eaa7287da90056352","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"* Rename context.context -\u003e context.configure"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"* Rename EngineFactory -\u003e Engine"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"* Move rally/db -\u003e rally/common/db"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a1a9d01_fac0c5e2","line":224,"in_reply_to":"ba15a1d1_87141744","updated":"2015-09-24 14:13:30.000000000","message":"Done","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Specs \u0026 Feature requests"},{"line_number":274,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"  [Feature request] Explicitly specify existing users for scenarios"},{"line_number":277,"context_line":"  Be able to specify explicitly users that should be used for each scenario."},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_a7aefb2b","line":275,"updated":"2015-09-24 08:43:48.000000000","message":"One more request https://review.openstack.org/#/c/222932/","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"33d9502b69ad78506ffb589eaa7287da90056352","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Specs \u0026 Feature requests"},{"line_number":274,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"  [Feature request] Explicitly specify existing users for scenarios"},{"line_number":277,"context_line":"  Be able to specify explicitly users that should be used for each scenario."},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9a1a9d01_da25c1ae","line":275,"in_reply_to":"ba15a1d1_a7aefb2b","updated":"2015-09-24 14:13:30.000000000","message":"Done","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":443,"context_line":"* Do not update the average when iteration failed"},{"line_number":444,"context_line":"  Total duration and iteration count are not updated on failed iterations"},{"line_number":445,"context_line":"  but new average was still calculated. When the failed iteration was the"},{"line_number":446,"context_line":"  first one, this resulted to zero division error."},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"  Use latest average instead of calculating a new one in case of"},{"line_number":449,"context_line":"  failed iteration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_07056778","line":446,"updated":"2015-09-24 08:43:48.000000000","message":"this LED to zero division error?","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":446,"context_line":"  first one, this resulted to zero division error."},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"  Use latest average instead of calculating a new one in case of"},{"line_number":449,"context_line":"  failed iteration."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Optimized Rally imports to reduce start time"},{"line_number":452,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_67eb03dd","line":449,"updated":"2015-09-24 08:43:48.000000000","message":"I don\u0027t Understand this * . What the title of it, about what is it?","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Optimized Rally imports to reduce start time"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"* Nova: make nova server scenarios easier with existing users"},{"line_number":454,"context_line":"  nova.utils._boot_server() requires configuration for the \"users\""},{"line_number":455,"context_line":"  context, but if running with existing users that will not"},{"line_number":456,"context_line":"  (necessarily) exist. This makes it handle existing users as well."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_a77a7b22","line":453,"updated":"2015-09-24 08:43:48.000000000","message":"\"make scenario easier\" - its looks like metaphrased from russian)","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2aff132d05313b629ecee63352f5715409828f01","unresolved":false,"context_lines":[{"line_number":473,"context_line":"    - You don\u0027t need hacks to make mapping strategies configurable"},{"line_number":474,"context_line":"      e.g. pick users randomly or 1 by 1 and so on"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    - Rally framework depends less on OpenStack stuff"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"Documentation"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_a7703b73","line":476,"updated":"2015-09-24 08:43:48.000000000","message":"Also there was great patch from Pavel https://review.openstack.org/#/c/188521/","commit_id":"1d4e896aaeb08188ccb2f74ccc2e733f11d8aaac"}]}
