)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"ea95fb3d135022356b7238b2168ad51ac253a481","unresolved":false,"context_lines":[{"line_number":10,"context_line":"LDAP, AD or any other read only keystone backend where you are not able"},{"line_number":11,"context_line":"to create any users."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To do this you should use \"users\" section in ExistingEngine plugin"},{"line_number":14,"context_line":"input."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Rally will use these \"users\" to generate load instead of creating new."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da9b358b_11943889","line":13,"updated":"2015-03-30 13:28:52.000000000","message":"ExistingCloud?","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"LDAP, AD or any other read only keystone backend where you are not able"},{"line_number":11,"context_line":"to create any users."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To do this you should use \"users\" section in ExistingEngine plugin"},{"line_number":14,"context_line":"input."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Rally will use these \"users\" to generate load instead of creating new."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5aa745d1_1731ec0b","line":13,"in_reply_to":"da9b358b_11943889","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"8739cd3b325b3f00d57a749c4690b0d8d0ff557a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Finish support of benchmarking with existing users"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now you can use Rally for benchmarking OpenStack clouds that are using"},{"line_number":10,"context_line":"LDAP, AD or any other read only keystone backend where you are not able"},{"line_number":11,"context_line":"to create any users."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"dac4157f_aafdf63b","line":9,"updated":"2015-04-21 11:28:15.000000000","message":"It is better to write \"one\" instead of \"you\".","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0bcbb15e62f6df8cfeb12cc1a8dd3f02d544d6b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Finish support of benchmarking with existing users"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now you can use Rally for benchmarking OpenStack clouds that are using"},{"line_number":10,"context_line":"LDAP, AD or any other read only keystone backend where you are not able"},{"line_number":11,"context_line":"to create any users."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bab921fb_9b35f947","line":9,"in_reply_to":"dac4157f_aafdf63b","updated":"2015-04-23 18:42:11.000000000","message":"Done","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"8739cd3b325b3f00d57a749c4690b0d8d0ff557a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"LDAP, AD or any other read only keystone backend where you are not able"},{"line_number":11,"context_line":"to create any users."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To do this you should use \"users\" section in ExistingCloud plugin"},{"line_number":14,"context_line":"input."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Rally will use these \"users\" to generate load instead of creating new."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"dac4157f_4a99ba1e","line":13,"updated":"2015-04-21 11:28:15.000000000","message":"To do this one can specify \"users\" section in ExistingCloud plugin input file.","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0bcbb15e62f6df8cfeb12cc1a8dd3f02d544d6b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"LDAP, AD or any other read only keystone backend where you are not able"},{"line_number":11,"context_line":"to create any users."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"To do this you should use \"users\" section in ExistingCloud plugin"},{"line_number":14,"context_line":"input."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Rally will use these \"users\" to generate load instead of creating new."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bab921fb_9b83b9cc","line":13,"in_reply_to":"dac4157f_4a99ba1e","updated":"2015-04-23 18:42:11.000000000","message":"Done","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bdd4e0867d52d2ed7733fa9781d6e86c68921744","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Rally will use these \"users\" to generate load instead of creating new."},{"line_number":17,"context_line":"As well if you specify both \"users\" section in deployment input file"},{"line_number":18,"context_line":"and \"users\" context it will use temporary created by Rally users."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Restructurize samples/deployments directory:"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bab921fb_df2d7347","line":18,"updated":"2015-04-24 12:12:49.000000000","message":"This is not correct - if there is a \"users\" section in deployment config, then Rally will use \"existing_context\" for all cases.","commit_id":"193c28a990206c5001538f298f92250b05c5a6fd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bdd4e0867d52d2ed7733fa9781d6e86c68921744","unresolved":false,"context_lines":[{"line_number":24,"context_line":"  - Some fixes in readme.rst"},{"line_number":25,"context_line":"  - Add new sample for existing cloud with predefined users"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"TBD:"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"  * Add functional tests"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bab921fb_5fccc369","line":27,"updated":"2015-04-24 12:12:49.000000000","message":"`TBD\u0027 means that something is not complete exactly here, so just remove this from commit message. Maybe rewrite this as note, not TBD, for example: \"This patch does not include functional tests, because they will be added later.\"","commit_id":"193c28a990206c5001538f298f92250b05c5a6fd"}],"rally/benchmark/context/existing_users.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5d740d750fc0088d5c4874adb8f79cda109fb3a9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"@base.context(name\u003d\"existing_users\", order\u003d99, hidden\u003dTrue)"},{"line_number":28,"context_line":"class ExistingUsers(base.Context):"},{"line_number":29,"context_line":"    \"\"\"This context supports using existing users in Rally."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_e30d9838","line":27,"updated":"2015-03-29 17:50:43.000000000","message":"hidden? It would be nice to have ability to specify existing users per task.","commit_id":"19500b5f91d8ad666391e3ef9413ebde147ec13c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3ed4204e2493b432cbccc524162209c66467ed4b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"@base.context(name\u003d\"existing_users\", order\u003d99, hidden\u003dTrue)"},{"line_number":28,"context_line":"class ExistingUsers(base.Context):"},{"line_number":29,"context_line":"    \"\"\"This context supports using existing users in Rally."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_c9c4f393","line":27,"in_reply_to":"da9b358b_e30d9838","updated":"2015-03-30 00:42:09.000000000","message":"add large comment, why we are not allowing this now\u003d)","commit_id":"19500b5f91d8ad666391e3ef9413ebde147ec13c"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c52ea502f0b0595e71a0fa77656b37b78c92bf02","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# NOTE(boris-42): This context should be hidden for now and used only by"},{"line_number":28,"context_line":"#                 benchmark engine.  In future during various refactoring of"},{"line_number":29,"context_line":"#                 validation system and rally CI testing we will make it public"},{"line_number":30,"context_line":"@base.context(name\u003d\"existing_users\", order\u003d99, hidden\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_f5cd18b8","line":27,"updated":"2015-04-21 09:18:02.000000000","message":"I think you should also edit this old NOTE, it may be confusing for those who will read the code:\n\nhttps://github.com/openstack/rally/blob/master/rally/benchmark/context/users.py#L101-L105","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bdd4e0867d52d2ed7733fa9781d6e86c68921744","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Exit context: `existing_users`\"))"},{"line_number":69,"context_line":"    def cleanup(self):"},{"line_number":70,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_65749867","line":70,"updated":"2015-04-24 12:12:49.000000000","message":"I would recommend to add a docstring with explicit explanation why this method does nothing, because that is important part of logic.\n\nExample:\n\n @rutils.log_task_wrapper(LOG.info, _(\"Exit context: `existing_users`\"))\n def cleanup(self):\n     \"\"\"Do nothing - we may not delete existing users.\"\"\"","commit_id":"193c28a990206c5001538f298f92250b05c5a6fd"}],"rally/benchmark/engine.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5d740d750fc0088d5c4874adb8f79cda109fb3a9","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if not self.existing_users:"},{"line_number":159,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"},{"line_number":160,"context_line":"        else:"},{"line_number":161,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"},{"line_number":162,"context_line":"            user_context \u003d existing_users_ctx.ExistingUsers(context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_d825e3c2","line":159,"updated":"2015-03-29 17:50:43.000000000","message":"quote from commit message: \"As well if you specify both \"users\" section in deployment input file and \"users\" context it will use temporary created by Rally users.\"\n\nBut as far as I can see, if both users sections will be specified, existing users will be used, not temporary.","commit_id":"19500b5f91d8ad666391e3ef9413ebde147ec13c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3ed4204e2493b432cbccc524162209c66467ed4b","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if not self.existing_users:"},{"line_number":159,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"},{"line_number":160,"context_line":"        else:"},{"line_number":161,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"},{"line_number":162,"context_line":"            user_context \u003d existing_users_ctx.ExistingUsers(context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_09265b68","line":159,"in_reply_to":"da9b358b_d825e3c2","updated":"2015-03-30 00:42:09.000000000","message":"Well, in commit message we are talking about benchmarking, and this code is related to validation, that actually is bad in Rally. \n\nSo I will refactor this when we merge plugin base and so on.","commit_id":"19500b5f91d8ad666391e3ef9413ebde147ec13c"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"64dfa362ae80c1d2c661c0db15669f796a0ea610","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                  \"config\": kwargs, \"reason\": six.text_type(e)}"},{"line_number":155,"context_line":"            raise exceptions.InvalidBenchmarkConfig(**kw)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if not self.existing_users:"},{"line_number":159,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"},{"line_number":160,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_2c26c868","line":157,"updated":"2015-03-30 07:56:38.000000000","message":"There is a small issue, if wrong `users` is specified in deployment but using user context in task, the task will always not be able to run. A TODO should be added here at least If it will be fixed in future.","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                  \"config\": kwargs, \"reason\": six.text_type(e)}"},{"line_number":155,"context_line":"            raise exceptions.InvalidBenchmarkConfig(**kw)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if not self.existing_users:"},{"line_number":159,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"},{"line_number":160,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aa745d1_f209eede","line":157,"in_reply_to":"da9b358b_2c26c868","updated":"2015-04-15 22:57:39.000000000","message":"Yep I know. I will add TODO. At this moment of time it\u0027s better to have such well known issue. I will return to this task after refactoring validation mechanism.","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"ea95fb3d135022356b7238b2168ad51ac253a481","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            raise exceptions.InvalidBenchmarkConfig(**kw)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if not self.existing_users:"},{"line_number":159,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"},{"line_number":160,"context_line":"        else:"},{"line_number":161,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_71b024de","line":158,"updated":"2015-03-30 13:28:52.000000000","message":"Why not vice versa? I dislike reversed logic.\n\n    if self.existing_users:\n         ...\n    else:\n         ...","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            raise exceptions.InvalidBenchmarkConfig(**kw)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if not self.existing_users:"},{"line_number":159,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"},{"line_number":160,"context_line":"        else:"},{"line_number":161,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aa745d1_726f1e93","line":158,"in_reply_to":"da9b358b_71b024de","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c52ea502f0b0595e71a0fa77656b37b78c92bf02","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if self.existing_users:"},{"line_number":159,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"},{"line_number":160,"context_line":"            user_context \u003d existing_users_ctx.ExistingUsers(context)"},{"line_number":161,"context_line":"        else:"},{"line_number":162,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_07ff4268","line":159,"updated":"2015-04-21 09:18:02.000000000","message":"Why are you rewriting the contents of context[\"config\"] instead of just adding existing users there?\n\n    context[\"config\"][\"existing_users\"] \u003d self.existing_users","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0bcbb15e62f6df8cfeb12cc1a8dd3f02d544d6b","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if self.existing_users:"},{"line_number":159,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"},{"line_number":160,"context_line":"            user_context \u003d existing_users_ctx.ExistingUsers(context)"},{"line_number":161,"context_line":"        else:"},{"line_number":162,"context_line":"            user_context \u003d users_ctx.UserGenerator(context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_8da5c005","line":159,"in_reply_to":"dac4157f_07ff4268","updated":"2015-04-23 18:42:11.000000000","message":"Because, you didn\u0027t read enough the code..\n\nThere is no \"config\" section in context dict at all and your code won\u0027t work.","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"b4edf6dfccec04c9a84e924201307da4abc544a3","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                  \"config\": kwargs, \"reason\": six.text_type(e)}"},{"line_number":155,"context_line":"            raise exceptions.InvalidBenchmarkConfig(**kw)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if self.existing_users:"},{"line_number":159,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"},{"line_number":160,"context_line":"            user_context \u003d existing_users_ctx.ExistingUsers(context)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_373b99d3","line":157,"updated":"2015-04-23 21:28:07.000000000","message":"Maybe we need a validation for checking situation when both existing users and User context is specified?","commit_id":"193c28a990206c5001538f298f92250b05c5a6fd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5163bc2cf471705e501826c1b3ff2c408a43561d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                  \"config\": kwargs, \"reason\": six.text_type(e)}"},{"line_number":155,"context_line":"            raise exceptions.InvalidBenchmarkConfig(**kw)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _get_user_ctx_for_validation(self, context):"},{"line_number":158,"context_line":"        if self.existing_users:"},{"line_number":159,"context_line":"            context[\"config\"] \u003d {\"existing_users\": self.existing_users}"},{"line_number":160,"context_line":"            user_context \u003d existing_users_ctx.ExistingUsers(context)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_3214c742","line":157,"in_reply_to":"bab921fb_373b99d3","updated":"2015-04-23 21:53:33.000000000","message":"Not now please. I left TODO on 173 line for now.","commit_id":"193c28a990206c5001538f298f92250b05c5a6fd"}],"samples/deployments/README.rst":[{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"d04b72645004575edb5277ea045a799817df38b1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Rally Deployments"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Before benchmarking OpenStack with Rally, Rally should know where it is."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"To specify credentials of OpenStack deployment in Rally you should use"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_31916e9a","line":4,"updated":"2015-03-30 17:41:34.000000000","message":"This sentence is a little confusing. If understood correctly, is this what you meant?\n\n\"Before benchmarking an OpenStack Cloud deployment, Rally should be already configured to use such deployment.\"\n\nor\n\n\"Rally needs to be configured to use an OpenStack Cloud deployment before it can benchmark the deployment.\"\n\nNotes:\n* Dropped the first Rally, since it\u0027s implied that we will use Rally.\n* Rally doesn\u0027t know things, it\u0027s simply configured to do things (I know this is debatable)","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Rally Deployments"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Before benchmarking OpenStack with Rally, Rally should know where it is."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"To specify credentials of OpenStack deployment in Rally you should use"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_12a1faa9","line":4,"in_reply_to":"da9b358b_31916e9a","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"d04b72645004575edb5277ea045a799817df38b1","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Before benchmarking OpenStack with Rally, Rally should know where it is."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"To specify credentials of OpenStack deployment in Rally you should use"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"..code::"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_d13122a4","line":6,"updated":"2015-03-30 17:41:34.000000000","message":"Perhaps, this could be clearer, something like:\n\n\"To configure Rally to use an OpenStack Cloud deployment, you need create a deployment configuration by supplying the endpoint and credentials, as follows:\"","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Before benchmarking OpenStack with Rally, Rally should know where it is."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"To specify credentials of OpenStack deployment in Rally you should use"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"..code::"},{"line_number":9,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_d2aa7285","line":6,"in_reply_to":"da9b358b_d13122a4","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"ea95fb3d135022356b7238b2168ad51ac253a481","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"..code::"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    rally deployment create --file \u003cone_of_file_from_this_dir\u003e --name my_cloud"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"If you don\u0027t have OpenStack deployment, Rally can deploy it for you."}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_51bbe072","line":10,"updated":"2015-03-30 13:28:52.000000000","message":"typo: of_files","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"..code::"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    rally deployment create --file \u003cone_of_file_from_this_dir\u003e --name my_cloud"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"If you don\u0027t have OpenStack deployment, Rally can deploy it for you."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_1288da21","line":10,"in_reply_to":"da9b358b_51bbe072","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"ea95fb3d135022356b7238b2168ad51ac253a481","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"If you don\u0027t have OpenStack deployment, Rally can deploy it for you."},{"line_number":14,"context_line":"For samples of various deployment take a look at samples from"},{"line_number":15,"context_line":"**for_deploying_openstack_with_rally** directory."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_5172c0e6","line":14,"updated":"2015-03-30 13:28:52.000000000","message":"s/deployment/deployments","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"If you don\u0027t have OpenStack deployment, Rally can deploy it for you."},{"line_number":14,"context_line":"For samples of various deployment take a look at samples from"},{"line_number":15,"context_line":"**for_deploying_openstack_with_rally** directory."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_d28152fd","line":14,"in_reply_to":"da9b358b_5172c0e6","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"ea95fb3d135022356b7238b2168ad51ac253a481","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Register existing OpenStack cluster that uses Keystone v3."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"existing-with-predefinde-users-v3.json"},{"line_number":29,"context_line":"--------------------------------------"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If you are using read only back end in Keystone like LDAP, AD then"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_31405ca5","line":28,"updated":"2015-03-30 13:28:52.000000000","message":"typo: predefined","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Register existing OpenStack cluster that uses Keystone v3."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"existing-with-predefinde-users-v3.json"},{"line_number":29,"context_line":"--------------------------------------"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If you are using read only back end in Keystone like LDAP, AD then"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_927cea21","line":28,"in_reply_to":"da9b358b_31405ca5","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"d04b72645004575edb5277ea045a799817df38b1","unresolved":false,"context_lines":[{"line_number":28,"context_line":"existing-with-predefinde-users-v3.json"},{"line_number":29,"context_line":"--------------------------------------"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If you are using read only back end in Keystone like LDAP, AD then"},{"line_number":32,"context_line":"you need this sample. Rally will use already existing users that you provide"},{"line_number":33,"context_line":"instead of creating it\u0027s own for generating load."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_b1b45ef2","line":31,"updated":"2015-03-30 17:41:34.000000000","message":"* s/read only/read-only\n\n* s/back end/backend","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"existing-with-predefinde-users-v3.json"},{"line_number":29,"context_line":"--------------------------------------"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If you are using read only back end in Keystone like LDAP, AD then"},{"line_number":32,"context_line":"you need this sample. Rally will use already existing users that you provide"},{"line_number":33,"context_line":"instead of creating it\u0027s own for generating load."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_3273d64f","line":31,"in_reply_to":"da9b358b_b1b45ef2","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"64dfa362ae80c1d2c661c0db15669f796a0ea610","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If you are using read only back end in Keystone like LDAP, AD then"},{"line_number":32,"context_line":"you need this sample. Rally will use already existing users that you provide"},{"line_number":33,"context_line":"instead of creating it\u0027s own for generating load."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"existing-with-given-endpoint.json"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da9b358b_ac03f8b7","line":33,"updated":"2015-03-30 07:56:38.000000000","message":"it\u0027s better to add note here that user context will be used when both existing users and user context are specified.","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3150eb5a307e735af1c515b2787515cbb6fa5ecd","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"If you are using read only back end in Keystone like LDAP, AD then"},{"line_number":32,"context_line":"you need this sample. Rally will use already existing users that you provide"},{"line_number":33,"context_line":"instead of creating it\u0027s own for generating load."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"existing-with-given-endpoint.json"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_32aab671","line":33,"in_reply_to":"da9b358b_ac03f8b7","updated":"2015-04-15 22:57:39.000000000","message":"Done","commit_id":"d0f83409569570ede31678ed5dc28c5af70c27d5"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c52ea502f0b0595e71a0fa77656b37b78c92bf02","unresolved":false,"context_lines":[{"line_number":7,"context_line":"To configure Rally to use an OpenStack Cloud deployment, you need create a"},{"line_number":8,"context_line":"deployment configuration by supplying the endpoint and credentials, as follows:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"..code::"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    rally deployment create --file \u003cone_of_files_from_this_dir\u003e --name my_cloud"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dac4157f_3551500f","line":10,"updated":"2015-04-21 09:18:02.000000000","message":"Did you mean this?\n\n    .. code-block:: none","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0bcbb15e62f6df8cfeb12cc1a8dd3f02d544d6b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"To configure Rally to use an OpenStack Cloud deployment, you need create a"},{"line_number":8,"context_line":"deployment configuration by supplying the endpoint and credentials, as follows:"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"..code::"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    rally deployment create --file \u003cone_of_files_from_this_dir\u003e --name my_cloud"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bab921fb_8dddc044","line":10,"in_reply_to":"dac4157f_3551500f","updated":"2015-04-23 18:42:11.000000000","message":"yep, but it should be \n\n  .. code-block::\n\nthere is no none language.","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c52ea502f0b0595e71a0fa77656b37b78c92bf02","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If you don\u0027t have OpenStack deployments, Rally can deploy it for you."},{"line_number":16,"context_line":"For samples of various deployment take a look at samples from"},{"line_number":17,"context_line":"**for_deploying_openstack_with_rally** directory."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dac4157f_5575e495","line":16,"updated":"2015-04-21 09:18:02.000000000","message":"Please correct s/deployment/deployments also here:\n\n     For samples of various deployments ...","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0bcbb15e62f6df8cfeb12cc1a8dd3f02d544d6b","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If you don\u0027t have OpenStack deployments, Rally can deploy it for you."},{"line_number":16,"context_line":"For samples of various deployment take a look at samples from"},{"line_number":17,"context_line":"**for_deploying_openstack_with_rally** directory."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bab921fb_2dcc7488","line":16,"in_reply_to":"dac4157f_5575e495","updated":"2015-04-23 18:42:11.000000000","message":"Done","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"bdd4e0867d52d2ed7733fa9781d6e86c68921744","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Register existing OpenStack cluster that uses Keystone v3."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"existing-with-predefined-users-v3.json"},{"line_number":31,"context_line":"--------------------------------------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"If you are using read-only backend in Keystone like LDAP, AD then"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bab921fb_9e7820c6","line":30,"updated":"2015-04-24 12:12:49.000000000","message":"s/-v3//","commit_id":"193c28a990206c5001538f298f92250b05c5a6fd"}],"tests/unit/benchmark/test_engine.py":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c52ea502f0b0595e71a0fa77656b37b78c92bf02","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        result \u003d eng._get_user_ctx_for_validation(context)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        self.assertEqual(context[\"config\"][\"existing_users\"], users)"},{"line_number":193,"context_line":"        mock_users_ctx.assert_called_once_with(context)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        self.assertEqual(mock_users_ctx.return_value, result)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_8aab571d","line":192,"updated":"2015-04-21 09:18:02.000000000","message":"So seems like we should add a test about the case I mentioned in engine.py (what happens if context[\"config\"] already contains configs for contexts other that existing_users)","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0bcbb15e62f6df8cfeb12cc1a8dd3f02d544d6b","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        result \u003d eng._get_user_ctx_for_validation(context)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        self.assertEqual(context[\"config\"][\"existing_users\"], users)"},{"line_number":193,"context_line":"        mock_users_ctx.assert_called_once_with(context)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        self.assertEqual(mock_users_ctx.return_value, result)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_4d40c8a5","line":192,"in_reply_to":"dac4157f_8aab571d","updated":"2015-04-23 18:42:11.000000000","message":"Take a look at my comment. What you said is wrong. So no need to add test","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c52ea502f0b0595e71a0fa77656b37b78c92bf02","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        existing_users \u003d [mock.MagicMock()]"},{"line_number":355,"context_line":"        eng \u003d engine.BenchmarkEngine(config, task, users\u003dexisting_users)"},{"line_number":356,"context_line":"        result \u003d eng._prepare_context(context, name, endpoint)"},{"line_number":357,"context_line":"        expected_context \u003d {\"existing_users\": existing_users}"},{"line_number":358,"context_line":"        expected_context.update(context)"},{"line_number":359,"context_line":"        expected_result \u003d {"},{"line_number":360,"context_line":"            \"task\": task,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_ca5f0f40","line":357,"updated":"2015-04-21 09:18:02.000000000","message":"same here","commit_id":"861d5d81267308b8af5cae505f579449818c32bd"}]}
