)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d1055bed23fe29c055c9eb20502d078144d58a5c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Wataru Takase \u003cwataru.takase@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-29 16:06:24 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add list servers scenario for EC2 API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"add list servers scenario"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da9b358b_a9d88ff0","line":7,"updated":"2015-03-30 01:13:43.000000000","message":"This commit message doesn\u0027t describe fully what it does. \n\n\nWe have here actually 2 different chnanges: \n\n  - Adding context that creates servers using ec2 api\n  - Adding scenario that list all servers \n\nMaybe it makes sense to split this to 2 separated patches so it will be easier to me to write release notes?","commit_id":"6507b14cafe955a348432dd0f57dd9c614010525"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"436b261aa43b367e887bb0f1fbe8c4116059c95e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add context that creates servers using EC2 api"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"add context that creates servers using EC2 api"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: If16dfaa52f41e3028ea0b56e2bca100f91966022"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a016987_989f0903","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":46},"updated":"2015-05-28 00:32:11.000000000","message":"redundant line","commit_id":"c8c75610903a70d852dc73487ab04ce00f63ef41"}],"rally/benchmark/context/ec2/servers.py":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"7490dc378e6146f802436ec70ce8d47797f58598","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.context(name\u003d\"ec2_servers\", order\u003d440)"},{"line_number":30,"context_line":"class EC2ServerGenerator(base.Context):"},{"line_number":31,"context_line":"    \"\"\"Context class for adding temporary servers for benchmarks."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_ea2f2d86","line":29,"updated":"2015-04-09 12:38:54.000000000","message":"order\u003d440 is already taken by sahara:\nhttps://github.com/stackforge/rally/blob/master/rally/benchmark/context/sahara/sahara_image.py#L29\n\n450 seemingly would be OK","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"325de5a56bff2a8940aca518caf9c05ef0e2f717","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.context(name\u003d\"ec2_servers\", order\u003d440)"},{"line_number":30,"context_line":"class EC2ServerGenerator(base.Context):"},{"line_number":31,"context_line":"    \"\"\"Context class for adding temporary servers for benchmarks."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_7699346e","line":29,"in_reply_to":"9aa53dc9_ea2f2d86","updated":"2015-04-13 10:07:51.000000000","message":"Done","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"7490dc378e6146f802436ec70ce8d47797f58598","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __init__(self, context):"},{"line_number":66,"context_line":"        super(EC2ServerGenerator, self).__init__(context)"},{"line_number":67,"context_line":"        self.config.setdefault(\"servers_per_tenant\", 5)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Enter context: `EC2 Servers`\"))"},{"line_number":70,"context_line":"    def setup(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_2a6875b8","line":67,"updated":"2015-04-09 12:38:54.000000000","message":"Could you please use instead the approach with the DEFAULT_CONFIG variable? Like here:\n\nhttps://github.com/stackforge/rally/blob/master/rally/benchmark/context/servers.py#L65-L67","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"325de5a56bff2a8940aca518caf9c05ef0e2f717","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __init__(self, context):"},{"line_number":66,"context_line":"        super(EC2ServerGenerator, self).__init__(context)"},{"line_number":67,"context_line":"        self.config.setdefault(\"servers_per_tenant\", 5)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Enter context: `EC2 Servers`\"))"},{"line_number":70,"context_line":"    def setup(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_16a1d094","line":67,"in_reply_to":"9aa53dc9_2a6875b8","updated":"2015-04-13 10:07:51.000000000","message":"Done","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"7490dc378e6146f802436ec70ce8d47797f58598","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for user, tenant_id in rutils.iterate_per_tenants("},{"line_number":79,"context_line":"                self.context[\"users\"]):"},{"line_number":80,"context_line":"            LOG.debug(\"Booting servers for user tenant %s \""},{"line_number":81,"context_line":"                      % (user[\"tenant_id\"]))"},{"line_number":82,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":83,"context_line":"            ec2_scenario \u003d ec2_utils.EC2Scenario(clients\u003dclients)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_8aa30100","line":80,"updated":"2015-04-09 12:38:54.000000000","message":"did you mean just \u0027for tenant\u0027?","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"325de5a56bff2a8940aca518caf9c05ef0e2f717","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        for user, tenant_id in rutils.iterate_per_tenants("},{"line_number":79,"context_line":"                self.context[\"users\"]):"},{"line_number":80,"context_line":"            LOG.debug(\"Booting servers for user tenant %s \""},{"line_number":81,"context_line":"                      % (user[\"tenant_id\"]))"},{"line_number":82,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":83,"context_line":"            ec2_scenario \u003d ec2_utils.EC2Scenario(clients\u003dclients)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_d6aa4870","line":80,"in_reply_to":"9aa53dc9_8aa30100","updated":"2015-04-13 10:07:51.000000000","message":"Done","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"}],"rally/benchmark/scenarios/ec2/utils.py":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"7490dc378e6146f802436ec70ce8d47797f58598","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        :param image_id: ID of the image to be used for server creation"},{"line_number":93,"context_line":"        :param flavor_name: Name of the flavor to be used for server creation"},{"line_number":94,"context_line":"        :param requests: Number of booting requests to perform"},{"line_number":95,"context_line":"        :param instances_amount: Number of instances to boot per each request"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :returns: List of created server objects"},{"line_number":98,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_2a963593","line":95,"updated":"2015-04-09 12:38:54.000000000","message":"Please, add a description for **kwargs","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"325de5a56bff2a8940aca518caf9c05ef0e2f717","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        :param image_id: ID of the image to be used for server creation"},{"line_number":93,"context_line":"        :param flavor_name: Name of the flavor to be used for server creation"},{"line_number":94,"context_line":"        :param requests: Number of booting requests to perform"},{"line_number":95,"context_line":"        :param instances_amount: Number of instances to boot per each request"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :returns: List of created server objects"},{"line_number":98,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aaa499b_56b518cb","line":95,"in_reply_to":"9aa53dc9_2a963593","updated":"2015-04-13 10:07:51.000000000","message":"Done","commit_id":"4dbd563f8860c4ec8def40aa53f755b9ab8fc1ed"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"534dd4f7d143c2e31a769b9ce94cea44515ce845","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        :param image_id: ID of the image to be used for server creation"},{"line_number":93,"context_line":"        :param flavor_name: Name of the flavor to be used for server creation"},{"line_number":94,"context_line":"        :param requests: Number of booting requests to perform"},{"line_number":95,"context_line":"        :param instances_amount: Number of instances to boot per each request"},{"line_number":96,"context_line":"        :param kwargs: Other optional parameters to boot servers"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a0c5dc1_9ed94986","line":94,"updated":"2015-05-13 11:46:45.000000000","message":"For me its not clear naming of this variables. I\u0027d better call them requests-\u003eservers_per_tenant/server_count, also instances_amount I\u0027d better rename.","commit_id":"14e4d56b2d97ba69aedbe82fdb64474803c67687"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"4718dd609df7008725de605e76abe4ea48459a57","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        :param image_id: ID of the image to be used for server creation"},{"line_number":93,"context_line":"        :param flavor_name: Name of the flavor to be used for server creation"},{"line_number":94,"context_line":"        :param requests: Number of booting requests to perform"},{"line_number":95,"context_line":"        :param instances_amount: Number of instances to boot per each request"},{"line_number":96,"context_line":"        :param kwargs: Other optional parameters to boot servers"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a0c5dc1_0cec0e8e","line":94,"in_reply_to":"9a0c5dc1_9ed94986","updated":"2015-05-13 14:26:57.000000000","message":"I removed \u0027requests\u0027 variable and renamed \u0027instances_amount\u0027 to \u0027instance_num\u0027. \nSo instead of repeating request, now this function boots instances only one request.","commit_id":"14e4d56b2d97ba69aedbe82fdb64474803c67687"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"534dd4f7d143c2e31a769b9ce94cea44515ce845","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                min_count\u003dinstances_amount,"},{"line_number":106,"context_line":"                max_count\u003dinstances_amount,"},{"line_number":107,"context_line":"                **kwargs)"},{"line_number":108,"context_line":"            servers.extend([instance for instance in reservation.instances])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        time.sleep(CONF.benchmark.ec2_server_boot_prepoll_delay)"},{"line_number":111,"context_line":"        servers \u003d [bench_utils.wait_for("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a0c5dc1_7e77b53a","line":108,"updated":"2015-05-13 11:46:45.000000000","message":"The size of servers list will be instances_amount * requests. And its mean that we boot instances_amount * requests servers in one tenant. But form context you passed \"servers_per_tenant\" to request. So the size of servers list must be request. if I\u0027m wrong sorry. Also from my speech you could see that \"request\" is a bad name)","commit_id":"14e4d56b2d97ba69aedbe82fdb64474803c67687"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"4718dd609df7008725de605e76abe4ea48459a57","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                min_count\u003dinstances_amount,"},{"line_number":106,"context_line":"                max_count\u003dinstances_amount,"},{"line_number":107,"context_line":"                **kwargs)"},{"line_number":108,"context_line":"            servers.extend([instance for instance in reservation.instances])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        time.sleep(CONF.benchmark.ec2_server_boot_prepoll_delay)"},{"line_number":111,"context_line":"        servers \u003d [bench_utils.wait_for("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a0c5dc1_2cb7d287","line":108,"in_reply_to":"9a0c5dc1_7e77b53a","updated":"2015-05-13 14:26:57.000000000","message":"Now it\u0027s more clear.","commit_id":"14e4d56b2d97ba69aedbe82fdb64474803c67687"}],"rally/plugins/openstack/context/ec2/servers.py":[{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"436b261aa43b367e887bb0f1fbe8c4116059c95e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                self.context[\"users\"]):"},{"line_number":83,"context_line":"            LOG.debug(\"Booting servers for tenant %s \""},{"line_number":84,"context_line":"                      % (user[\"tenant_id\"]))"},{"line_number":85,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":86,"context_line":"            ec2_scenario \u003d ec2_utils.EC2Scenario(clients\u003dclients)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":16,"id":"7a016987_3b3dafbb","line":85,"range":{"start_line":85,"start_character":12,"end_line":85,"end_character":19},"updated":"2015-05-28 00:32:11.000000000","message":"redefinition of \u0027clients\u0027\nplease rename it","commit_id":"c8c75610903a70d852dc73487ab04ce00f63ef41"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"13d2c73a476ca974ae9065c6ddb989e693858e37","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.context(name\u003d\"ec2_servers\", order\u003d450)"},{"line_number":30,"context_line":"class EC2ServerGenerator(base.Context):"},{"line_number":31,"context_line":"    \"\"\"Context class for adding temporary servers for benchmarks."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3afb71cf_73c0072b","line":29,"updated":"2015-06-08 03:16:45.000000000","message":"Again, this order is already in use, please be careful about that:\n\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/context/ceilometer.py#L27","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"223e52eb267bad3d9076bf9ef21590637c2ccd07","unresolved":false,"context_lines":[{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@base.context(name\u003d\"ec2_servers\", order\u003d450)"},{"line_number":30,"context_line":"class EC2ServerGenerator(base.Context):"},{"line_number":31,"context_line":"    \"\"\"Context class for adding temporary servers for benchmarks."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa32b979_d46047a7","line":29,"in_reply_to":"3afb71cf_73c0072b","updated":"2015-06-19 05:47:35.000000000","message":"Done","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"13d2c73a476ca974ae9065c6ddb989e693858e37","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            \"servers_per_tenant\": {"},{"line_number":57,"context_line":"                \"type\": \"integer\","},{"line_number":58,"context_line":"                \"minimum\": 1"},{"line_number":59,"context_line":"            },"},{"line_number":60,"context_line":"        },"},{"line_number":61,"context_line":"        \"required\": [\"image\", \"flavor\"],"},{"line_number":62,"context_line":"        \"additionalProperties\": False"}],"source_content_type":"text/x-python","patch_set":17,"id":"3afb71cf_73d7e7ed","line":59,"updated":"2015-06-08 03:16:45.000000000","message":"Style nit: \u0027,\u0027 should be better removed here","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"223e52eb267bad3d9076bf9ef21590637c2ccd07","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            \"servers_per_tenant\": {"},{"line_number":57,"context_line":"                \"type\": \"integer\","},{"line_number":58,"context_line":"                \"minimum\": 1"},{"line_number":59,"context_line":"            },"},{"line_number":60,"context_line":"        },"},{"line_number":61,"context_line":"        \"required\": [\"image\", \"flavor\"],"},{"line_number":62,"context_line":"        \"additionalProperties\": False"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa32b979_f43c6b94","line":59,"in_reply_to":"3afb71cf_73d7e7ed","updated":"2015-06-19 05:47:35.000000000","message":"Done","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"13d2c73a476ca974ae9065c6ddb989e693858e37","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \"servers_per_tenant\": 5"},{"line_number":67,"context_line":"    }"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, context):"},{"line_number":70,"context_line":"        super(EC2ServerGenerator, self).__init__(context)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Enter context: `EC2 Servers`\"))"}],"source_content_type":"text/x-python","patch_set":17,"id":"3afb71cf_33084f91","line":69,"updated":"2015-06-08 03:16:45.000000000","message":"As this constructor now does nothing but call the super() constructor, you should just remove it","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"223e52eb267bad3d9076bf9ef21590637c2ccd07","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \"servers_per_tenant\": 5"},{"line_number":67,"context_line":"    }"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, context):"},{"line_number":70,"context_line":"        super(EC2ServerGenerator, self).__init__(context)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Enter context: `EC2 Servers`\"))"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa32b979_943f1f86","line":69,"in_reply_to":"3afb71cf_33084f91","updated":"2015-06-19 05:47:35.000000000","message":"Done","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a9fcc7342e44363e8cf9b75eef454310b3fcd593","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"            current_servers \u003d [server.id for server in servers]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            LOG.debug(\"Adding booted servers to context: %s\""},{"line_number":98,"context_line":"                      % \", \".join(current_servers))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"            self.context[\"tenants\"][tenant_id][\"ec2_servers\"] \u003d current_servers"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_5f19a478","line":97,"updated":"2015-06-19 13:13:05.000000000","message":"This message is not required, it tell something obvious","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"ba4fb2aa2c7d18001aadd240cbe483dc254577e1","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"            current_servers \u003d [server.id for server in servers]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            LOG.debug(\"Adding booted servers to context: %s\""},{"line_number":98,"context_line":"                      % \", \".join(current_servers))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"            self.context[\"tenants\"][tenant_id][\"ec2_servers\"] \u003d current_servers"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_8315674a","line":97,"in_reply_to":"fa32b979_5f19a478","updated":"2015-07-31 08:14:31.000000000","message":"Done","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"ad23c35bc031ff45d8745041eea12f3f1a55d2f0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                \"minimum\": 1"},{"line_number":59,"context_line":"            }"},{"line_number":60,"context_line":"        },"},{"line_number":61,"context_line":"        \"required\": [\"image\", \"flavor\"],"},{"line_number":62,"context_line":"        \"additionalProperties\": False"},{"line_number":63,"context_line":"    }"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"1a4dcd0f_f3e9ef7f","line":61,"updated":"2015-08-07 10:37:59.000000000","message":"servers_per_tenant seems to be required too (line 90)","commit_id":"60408247bccf6b14e432d972e28a552f6758fbec"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"fafdf53a8de440d8b43ac0b1c125c8c3bb30c337","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                \"minimum\": 1"},{"line_number":59,"context_line":"            }"},{"line_number":60,"context_line":"        },"},{"line_number":61,"context_line":"        \"required\": [\"image\", \"flavor\"],"},{"line_number":62,"context_line":"        \"additionalProperties\": False"},{"line_number":63,"context_line":"    }"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"1a4dcd0f_a4fea336","line":61,"in_reply_to":"1a4dcd0f_f3e9ef7f","updated":"2015-08-07 20:46:01.000000000","message":"Done","commit_id":"60408247bccf6b14e432d972e28a552f6758fbec"}],"rally/plugins/openstack/scenarios/ec2/utils.py":[{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"13d2c73a476ca974ae9065c6ddb989e693858e37","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return server"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.atomic_action_timer(\"ec2.boot_servers\")"},{"line_number":85,"context_line":"    def _boot_servers(self, image_id, flavor_name,"},{"line_number":86,"context_line":"                      instance_num\u003d1, **kwargs):"},{"line_number":87,"context_line":"        \"\"\"Boot multiple servers."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3afb71cf_537aabf2","line":85,"updated":"2015-06-08 03:16:45.000000000","message":"This is not obligatory, but just a suggestion - could you maybe make the api of this method similar to that in Nova[*]? I mean the same argument names etc., this would make it simpler for others to use this\n\n[*]https://github.com/openstack/rally/blob/master/rally/plugins/openstack/scenarios/nova/utils.py#L484-L522","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"223e52eb267bad3d9076bf9ef21590637c2ccd07","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return server"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @base.atomic_action_timer(\"ec2.boot_servers\")"},{"line_number":85,"context_line":"    def _boot_servers(self, image_id, flavor_name,"},{"line_number":86,"context_line":"                      instance_num\u003d1, **kwargs):"},{"line_number":87,"context_line":"        \"\"\"Boot multiple servers."},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa32b979_f4178ba0","line":85,"in_reply_to":"3afb71cf_537aabf2","updated":"2015-06-19 05:47:35.000000000","message":"Thank you for your comment. I have adapted following suggestion:\n\nhttps://review.openstack.org/#/c/156228/10/rally/benchmark/scenarios/ec2/utils.py","commit_id":"9cd5dfc6b77b40ff5d7b48839f4eb336b8a90a6b"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"eb761a98d5dcb5f7c4824c1c6ac3e448394a21e3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return server"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @base.atomic_action_timer(\"ec2.boot_servers\")"},{"line_number":77,"context_line":"    def _boot_servers(self, image_id, flavor_name,"},{"line_number":78,"context_line":"                      instance_num\u003d1, **kwargs):"},{"line_number":79,"context_line":"        \"\"\"Boot multiple servers."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_87e50039","line":77,"updated":"2015-08-06 10:47:12.000000000","message":"Method _boot_server is not needed anymore, so it may be removed and _boot_servers(instance_num\u003d1) used instead.","commit_id":"49681b57e69ae33e2822f1be29b6d5ef19b02bf0"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"986a9576fe07f7637614c73e77e35a25eba1b2ee","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return server"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @base.atomic_action_timer(\"ec2.boot_servers\")"},{"line_number":77,"context_line":"    def _boot_servers(self, image_id, flavor_name,"},{"line_number":78,"context_line":"                      instance_num\u003d1, **kwargs):"},{"line_number":79,"context_line":"        \"\"\"Boot multiple servers."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_0176976f","line":77,"in_reply_to":"1a4dcd0f_87e50039","updated":"2015-08-07 01:15:03.000000000","message":"Done","commit_id":"49681b57e69ae33e2822f1be29b6d5ef19b02bf0"}],"tests/unit/benchmark/context/ec2/test_servers.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"19e9ddeb69074092a492e3299f033dfcc2f959be","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                        \"concurrent\": 10},"},{"line_number":42,"context_line":"                    \"ec2_servers\": {"},{"line_number":43,"context_line":"                        \"servers_per_tenant\": 5,"},{"line_number":44,"context_line":"                        \"image\": {\"name\": \"cirros-0.3.2-x86_64-uec\"},"},{"line_number":45,"context_line":"                        \"flavor\": {\"name\": \"m1.tiny\"}}},"},{"line_number":46,"context_line":"                \"admin\": {\"endpoint\": mock.MagicMock()},"},{"line_number":47,"context_line":"                \"task\": mock.MagicMock(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_b14f576a","line":44,"updated":"2015-05-19 13:45:57.000000000","message":"I think make case error on gate. For example after removing this image could broke them. Also its a bit looks like part-functional test. Better to mock this.","commit_id":"7e683963c4e8b44f4d73d119c27da23f38b5ea8f"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"19e9ddeb69074092a492e3299f033dfcc2f959be","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    \"ec2_servers\": {"},{"line_number":43,"context_line":"                        \"servers_per_tenant\": 5,"},{"line_number":44,"context_line":"                        \"image\": {\"name\": \"cirros-0.3.2-x86_64-uec\"},"},{"line_number":45,"context_line":"                        \"flavor\": {\"name\": \"m1.tiny\"}}},"},{"line_number":46,"context_line":"                \"admin\": {\"endpoint\": mock.MagicMock()},"},{"line_number":47,"context_line":"                \"task\": mock.MagicMock(),"},{"line_number":48,"context_line":"                \"users\": users,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_b17637a2","line":45,"updated":"2015-05-19 13:45:57.000000000","message":"It applies to flavor too.","commit_id":"7e683963c4e8b44f4d73d119c27da23f38b5ea8f"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"19e9ddeb69074092a492e3299f033dfcc2f959be","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                \"users\": users,"},{"line_number":49,"context_line":"                \"tenants\": tenants}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_init(self):"},{"line_number":52,"context_line":"        tenants_count \u003d 2"},{"line_number":53,"context_line":"        servers_per_tenant \u003d 5"},{"line_number":54,"context_line":"        context \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_713f9f87","line":51,"updated":"2015-05-19 13:45:57.000000000","message":"You don\u0027t need to test  init.py if its empty. If you want to create user? tenants use ctx \u003d _get_context() and run it before servers.EC2ServerGenerator(ctx)","commit_id":"7e683963c4e8b44f4d73d119c27da23f38b5ea8f"}],"tests/unit/plugins/openstack/context/ec2/test_servers.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a9fcc7342e44363e8cf9b75eef454310b3fcd593","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    \"concurrent\": 10},"},{"line_number":43,"context_line":"                \"ec2_servers\": {"},{"line_number":44,"context_line":"                    \"servers_per_tenant\": 5,"},{"line_number":45,"context_line":"                    \"image\": {\"name\": mock.MagicMock()},"},{"line_number":46,"context_line":"                    \"flavor\": {\"name\": mock.MagicMock()}"},{"line_number":47,"context_line":"                }"},{"line_number":48,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_bd8558ae","line":45,"updated":"2015-06-19 13:13:05.000000000","message":"Do we really need Mock (even MagicMock) instead of some str here?\n\n ...\n \"image\": \"foo_image\",\n \"flavor\": \"foo_flavor\",\n ...","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"ba4fb2aa2c7d18001aadd240cbe483dc254577e1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    \"concurrent\": 10},"},{"line_number":43,"context_line":"                \"ec2_servers\": {"},{"line_number":44,"context_line":"                    \"servers_per_tenant\": 5,"},{"line_number":45,"context_line":"                    \"image\": {\"name\": mock.MagicMock()},"},{"line_number":46,"context_line":"                    \"flavor\": {\"name\": mock.MagicMock()}"},{"line_number":47,"context_line":"                }"},{"line_number":48,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_5e073418","line":45,"in_reply_to":"fa32b979_bd8558ae","updated":"2015-07-31 08:14:31.000000000","message":"Done","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a9fcc7342e44363e8cf9b75eef454310b3fcd593","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @mock.patch(\"%s.ec2.utils.EC2Scenario._boot_servers\" % SCN,"},{"line_number":56,"context_line":"                return_value\u003d["},{"line_number":57,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"},{"line_number":58,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"},{"line_number":59,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"},{"line_number":60,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_58e69a45","line":57,"updated":"2015-06-19 13:13:05.000000000","message":"This looks wrong to set equal ids for objects in tests - how we can then differ these objects? Also in real life these ids also must be different.\n\n  fakes.FakeServer(id\u003d\"id_1\"),\n  fakes.FakeServer(id\u003d\"id_2\"),\n  ...","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"ba4fb2aa2c7d18001aadd240cbe483dc254577e1","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @mock.patch(\"%s.ec2.utils.EC2Scenario._boot_servers\" % SCN,"},{"line_number":56,"context_line":"                return_value\u003d["},{"line_number":57,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"},{"line_number":58,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"},{"line_number":59,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"},{"line_number":60,"context_line":"                    fakes.FakeServer(id\u003d\"uuid\"),"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_23b56ccf","line":57,"in_reply_to":"fa32b979_58e69a45","updated":"2015-07-31 08:14:31.000000000","message":"Done","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a9fcc7342e44363e8cf9b75eef454310b3fcd593","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        servers_per_tenant \u003d 5"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        tenants \u003d self._gen_tenants(tenants_count)"},{"line_number":74,"context_line":"        users \u003d []"},{"line_number":75,"context_line":"        for tenant_id in tenants.keys():"},{"line_number":76,"context_line":"            for i in range(users_per_tenant):"},{"line_number":77,"context_line":"                users.append({\"id\": i, \"tenant_id\": tenant_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa32b979_182572ad","line":74,"updated":"2015-06-19 13:13:05.000000000","message":"L74-78 repeats at L101-105\n\nJust move this into `_gen_tenants\u0027:\n\n tenants, users \u003d self._gen_tenants_and_users(tenants_count, users_per_tenant)","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"},{"author":{"_account_id":14138,"name":"Wataru Takase","email":"wataru.takase@kek.jp","username":"wtakase"},"change_message_id":"ba4fb2aa2c7d18001aadd240cbe483dc254577e1","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        servers_per_tenant \u003d 5"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        tenants \u003d self._gen_tenants(tenants_count)"},{"line_number":74,"context_line":"        users \u003d []"},{"line_number":75,"context_line":"        for tenant_id in tenants.keys():"},{"line_number":76,"context_line":"            for i in range(users_per_tenant):"},{"line_number":77,"context_line":"                users.append({\"id\": i, \"tenant_id\": tenant_id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_feec00f5","line":74,"in_reply_to":"fa32b979_182572ad","updated":"2015-07-31 08:14:31.000000000","message":"Done","commit_id":"26052ae97437dd344dec8e18180332cf8a37e02c"}]}
