)]}'
{"rally/osclients.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4fca404f6af68cda0e65931ea50f14207b32c617","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    def cinder(self, version\u003d\"1\"):"},{"line_number":224,"context_line":"        \"\"\"Return cinder client.\"\"\""},{"line_number":225,"context_line":"        from cinderclient import client as cinder"},{"line_number":226,"context_line":"        if \"cinder\" in self.versions:"},{"line_number":227,"context_line":"                version \u003d self.versions[\"cinder\"][\"version\"]"},{"line_number":228,"context_line":"        client \u003d cinder.Client(version,"},{"line_number":229,"context_line":"                               http_log_debug\u003dlogging.is_debug(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_a0011d07","line":226,"updated":"2015-10-08 14:07:50.000000000","message":"imo, it is bad idea to write such if statements in each client method.\n\nIt would be nice to implement __getattr__ method with such check","commit_id":"b90f369b3c761392bddfec99ce72757feb21c6a0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            service_type\u003d\"compute\","},{"line_number":155,"context_line":"            endpoint_type\u003dself.endpoint.endpoint_type,"},{"line_number":156,"context_line":"            region_name\u003dself.endpoint.region_name)"},{"line_number":157,"context_line":"        client \u003d nova.Client(self.versions.get(\"nova\", version),"},{"line_number":158,"context_line":"                             auth_token\u003dkc.auth_token,"},{"line_number":159,"context_line":"                             http_log_debug\u003dlogging.is_debug(),"},{"line_number":160,"context_line":"                             timeout\u003dCONF.openstack_client_http_timeout,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_e3761805","line":157,"updated":"2015-10-09 08:18:41.000000000","message":"Seems like we need to refactor this a bit more:\n\n   - Remove default value from signature and left just:\n     version\u003dNone\n\n   - Change this line to: \n     version or self.versions.get(\"nova\", \"2\")\n\n\nOtherwise we won\u0027t be able to override context version which may produce problems","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"458eaf2d3dd022c7f1bb7d455791cbb2ede33023","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            api_versions.get_api_version(version)"},{"line_number":229,"context_line":"        except nova_exc.UnsupportedVersion:"},{"line_number":230,"context_line":"            raise exceptions.RallyException("},{"line_number":231,"context_line":"                \"Version string \u0027%(vers)s\u0027 is unsupported.\")"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def create_client(self, version\u003dNone, service_type\u003dNone):"},{"line_number":234,"context_line":"        \"\"\"Return nova client.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a29b11f_f916b64a","line":231,"updated":"2015-10-22 15:57:10.000000000","message":"Missed `% {\"vers\": version}\u0027","commit_id":"95dd6b2865e8a48a4a41e77a6264f5f297536589"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6ea06ef57f241c2c25dd95df4bc275d17ca6d152","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            api_versions.get_api_version(version)"},{"line_number":229,"context_line":"        except nova_exc.UnsupportedVersion:"},{"line_number":230,"context_line":"            raise exceptions.RallyException("},{"line_number":231,"context_line":"                \"Version string \u0027%(vers)s\u0027 is unsupported.\")"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def create_client(self, version\u003dNone, service_type\u003dNone):"},{"line_number":234,"context_line":"        \"\"\"Return nova client.\"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a29b11f_1a2ef6fa","line":231,"in_reply_to":"3a29b11f_f916b64a","updated":"2015-10-22 22:46:23.000000000","message":"thanks. fixed","commit_id":"95dd6b2865e8a48a4a41e77a6264f5f297536589"}],"rally/plugins/openstack/context/keystone/api_versions.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"458eaf2d3dd022c7f1bb7d455791cbb2ede33023","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014: Mirantis Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a29b11f_f9231654","line":1,"updated":"2015-10-22 15:57:10.000000000","message":"2015","commit_id":"95dd6b2865e8a48a4a41e77a6264f5f297536589"}],"rally/plugins/openstack/context/keystone/services.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"bc9e048635180ef6be7e0a42e942c38f61cb34d2","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"@context.configure(name\u003d\"services\", order\u003d100)"},{"line_number":27,"context_line":"class OpenStackServices(context.Context):"},{"line_number":28,"context_line":"    \"\"\"Context class for generating temporary users/tenants for benchmarks.\"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    CONFIG_SCHEMA \u003d {"},{"line_number":31,"context_line":"        \"type\": \"array\","}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_a04fdd69","line":28,"updated":"2015-10-08 14:08:45.000000000","message":"copy-paste detected :)","commit_id":"b90f369b3c761392bddfec99ce72757feb21c6a0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"@context.configure(name\u003d\"services\", order\u003d100)"},{"line_number":26,"context_line":"class OpenStackServices(context.Context):"},{"line_number":27,"context_line":"    \"\"\"Context class for specifying OpenStack clients versions.\"\"\""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_237bb0c2","line":25,"updated":"2015-10-09 08:18:41.000000000","message":"This is absolutely unclear name it should be something like: \n\n   service_api_versions","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                \"name\": {"},{"line_number":36,"context_line":"                    \"type\": \"string\","},{"line_number":37,"context_line":"                },"},{"line_number":38,"context_line":"                \"client\": {"},{"line_number":39,"context_line":"                    \"type\": \"string\","},{"line_number":40,"context_line":"                },"},{"line_number":41,"context_line":"                \"version\": {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_35c8c7a5","line":38,"updated":"2015-10-09 08:18:41.000000000","message":"service","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        \"additionalProperties\": False"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    DEFAULT_CONFIG \u003d {"},{"line_number":50,"context_line":"    }"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, context):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_2329709e","line":49,"updated":"2015-10-09 08:18:41.000000000","message":"This seems wrong remove it.","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    }"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, context):"},{"line_number":53,"context_line":"        super(OpenStackServices, self).__init__(context)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Enter context: `services`\"))"},{"line_number":56,"context_line":"    def setup(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_f58faf72","line":53,"updated":"2015-10-09 08:18:41.000000000","message":"I would actually prefer to use next: \n\n   service[\"service_api_versions\"]  \u003d self.config","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Enter context: `services`\"))"},{"line_number":56,"context_line":"    def setup(self):"},{"line_number":57,"context_line":"        pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @rutils.log_task_wrapper(LOG.info, _(\"Exit context: `services`\"))"},{"line_number":60,"context_line":"    def cleanup(self):"},{"line_number":61,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_d5d6334e","line":58,"updated":"2015-10-09 08:18:41.000000000","message":"we should override the validate method to check not only schema but as well that these services exists","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"}],"rally/plugins/openstack/scenario.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4fca404f6af68cda0e65931ea50f14207b32c617","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                        versions[service[\"client\"]] \u003d service[\"version\"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"                self._clients \u003d osclients.Clients(context[\"user\"][\"endpoint\"],"},{"line_number":40,"context_line":"                                                  versions)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if admin_clients:"},{"line_number":43,"context_line":"            if hasattr(self, \"_admin_clients\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_25b3df99","line":40,"updated":"2015-10-08 14:07:50.000000000","message":"instead of L34-37, why not just do here:\n\n    self._clients \u003d osclients.Clients(context[\"user\"][\"endpoint\"], context.get(\"services\", None)\n\n?","commit_id":"b90f369b3c761392bddfec99ce72757feb21c6a0"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"1e655cea684ef2bca0b0784dc2deb08b2d6bb8f6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                        versions[service[\"client\"]] \u003d service[\"version\"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"                self._clients \u003d osclients.Clients(context[\"user\"][\"endpoint\"],"},{"line_number":40,"context_line":"                                                  versions)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if admin_clients:"},{"line_number":43,"context_line":"            if hasattr(self, \"_admin_clients\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_bee4dddf","line":40,"in_reply_to":"7a2fa921_25b3df99","updated":"2015-10-08 15:24:29.000000000","message":"versions !\u003d context[\"services\"]","commit_id":"b90f369b3c761392bddfec99ce72757feb21c6a0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d43123191f17e0d17b57e917e922ca4c042744ee","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                    context[\"admin\"][\"endpoint\"])"},{"line_number":33,"context_line":"            if \"user\" in context:"},{"line_number":34,"context_line":"                versions \u003d {}"},{"line_number":35,"context_line":"                if \"config\" in context and \"services\" in context[\"config\"]:"},{"line_number":36,"context_line":"                    for service in context[\"config\"][\"services\"]:"},{"line_number":37,"context_line":"                        versions[service[\"client\"]] \u003d service[\"version\"]"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a2fa921_7525df59","line":35,"updated":"2015-10-09 08:18:41.000000000","message":"Just remove all this stuff and do the next: \n\n      self._clients \u003d osclients.Clients(context[\"user\"][\"endpoint\"],\n                                        context.get(\"service_api_versions\", {}))","commit_id":"69f357d3c80a532df2900a7c524f056914c355f9"}]}
