)]}'
{"tempest/api/compute/base.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7110caaedb4080f450efca48a913fd553ede1875","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        cls.migrations_client.api_microversion \u003d cls.request_microversion"},{"line_number":140,"context_line":"        cls.security_group_default_rules_client.api_microversion \u003d ("},{"line_number":141,"context_line":"            cls.request_microversion)"},{"line_number":142,"context_line":"        cls.versions_client.api_microversion \u003d cls.request_microversion"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @classmethod"},{"line_number":145,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_2e9d270a","line":142,"updated":"2015-11-26 11:15:35.000000000","message":"Nit: this feels very error prone... would be good if there was some kind of iterator, or something, for all the clients, or some shared state between them, that could be updated?","commit_id":"27c09415f7dd0fc31a09696ab1bf8a66ae2452b8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"054bb8c791b7e8837d46b8ef5a530c72ce7d0cf2","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        cls.migrations_client.api_microversion \u003d cls.request_microversion"},{"line_number":140,"context_line":"        cls.security_group_default_rules_client.api_microversion \u003d ("},{"line_number":141,"context_line":"            cls.request_microversion)"},{"line_number":142,"context_line":"        cls.versions_client.api_microversion \u003d cls.request_microversion"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    @classmethod"},{"line_number":145,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a8ffd7b_50d25c5d","line":142,"in_reply_to":"9a8ffd7b_2e9d270a","updated":"2015-11-27 09:02:04.000000000","message":"Yea that is not best way. But currently i did not find a better way to do that.\n\nThere is BP to improve client initialization where it will load only those clients which are needed for particular tests. There we might have better way to set version also.\n\nIf it is fine to improve that later?","commit_id":"27c09415f7dd0fc31a09696ab1bf8a66ae2452b8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"57aaab27616c7a908bfc445ded447f23ff102d51","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        cls.setup_clients_microversion()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def setup_clients_microversion(cls):"},{"line_number":102,"context_line":"        cls.request_microversion \u003d ("},{"line_number":103,"context_line":"            api_version_utils.select_request_microversion("},{"line_number":104,"context_line":"                cls.min_microversion,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_e903e70b","line":101,"updated":"2015-12-10 06:31:24.000000000","message":"This method seems a little redundant, and it would be great to merge into the above setup_clients().\nbut I cannot find a nice way now, so LGTM.","commit_id":"f201600bb6d272df40ab4e89774222e0290facc1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c1a85313681e758468c91e33f110e3efbc35e90c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            api_version_utils.select_request_microversion("},{"line_number":60,"context_line":"                cls.min_microversion,"},{"line_number":61,"context_line":"                CONF.compute_feature_enabled.min_microversion))"},{"line_number":62,"context_line":"        if cls.request_microversion:"},{"line_number":63,"context_line":"            cls.services_microversion \u003d {"},{"line_number":64,"context_line":"                CONF.compute.catalog_type: cls.request_microversion}"},{"line_number":65,"context_line":"        super(BaseV2ComputeTest, cls).setup_credentials()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_1daa0371","line":62,"updated":"2016-01-04 13:15:53.000000000","message":"I don\u0027t like that `services_microversion` can be undefined/unset if `request_microversion` is None.\n\nCould you initialize services_microversion with an empty dict ?","commit_id":"4e2be34bc3559cc41541dfae468570deb38dc3ed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"11b9108674fec8e091bc6cb1c13d65e436be7ce7","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            api_version_utils.select_request_microversion("},{"line_number":60,"context_line":"                cls.min_microversion,"},{"line_number":61,"context_line":"                CONF.compute_feature_enabled.min_microversion))"},{"line_number":62,"context_line":"        if cls.request_microversion:"},{"line_number":63,"context_line":"            cls.services_microversion \u003d {"},{"line_number":64,"context_line":"                CONF.compute.catalog_type: cls.request_microversion}"},{"line_number":65,"context_line":"        super(BaseV2ComputeTest, cls).setup_credentials()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_550d8be6","line":62,"in_reply_to":"fa69d971_1daa0371","updated":"2016-01-05 04:53:28.000000000","message":"It is not left unset. It is there in base class. This is to avoid setting None as microversions.","commit_id":"4e2be34bc3559cc41541dfae468570deb38dc3ed"}],"tempest/clients.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ff80fa218a9193bd76626f4c4f29751fdba003c4","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        for client in service_clients:"},{"line_number":565,"context_line":"            client \u003d getattr(self, client)"},{"line_number":566,"context_line":"            if not hasattr(client, \u0027set_api_microversion\u0027):"},{"line_number":567,"context_line":"                continue"},{"line_number":568,"context_line":"            microversion \u003d self.api_microversions.get(client.service)"},{"line_number":569,"context_line":"            if microversion:"},{"line_number":570,"context_line":"                client.set_api_microversion(microversion)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_6dffd567","line":567,"range":{"start_line":567,"start_character":16,"end_line":567,"end_character":24},"updated":"2015-12-25 04:24:35.000000000","message":"In long-term, all compute clients should pass microversion to Nova API. So it is nice to add debugging log here for knowing what clients should be updated for doing that.\n\nHowever, current logic scan all service clients here and it is difficult to pick up compute clients only here based on current implementation.\n\nSo how about following code instead ?\n\n for client in service_clients:\n     client \u003d getattr(self, client)\n     microversion \u003d self.api_microversions.get(client.service)\n     if not microversion:\n         continue\n     if not hasattr(client, \u0027set_api_microversion\u0027):\n         LOG.debug(\"Need to implement set_api_microversion on %s\" % client)\n                                                                    ^^^ fix here\n         continue\n     client.set_api_microversion(microversion)","commit_id":"2ea86e44ade63651b206ad6278f8e622d81e70db"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fd521334a0531b3256eae32595796f3276452cbb","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        for client in service_clients:"},{"line_number":565,"context_line":"            client \u003d getattr(self, client)"},{"line_number":566,"context_line":"            if not hasattr(client, \u0027set_api_microversion\u0027):"},{"line_number":567,"context_line":"                continue"},{"line_number":568,"context_line":"            microversion \u003d self.api_microversions.get(client.service)"},{"line_number":569,"context_line":"            if microversion:"},{"line_number":570,"context_line":"                client.set_api_microversion(microversion)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a7b0d38_b0751299","line":567,"range":{"start_line":567,"start_character":16,"end_line":567,"end_character":24},"in_reply_to":"1a7b0d38_6dffd567","updated":"2015-12-25 05:21:32.000000000","message":"Nice idea, that will be good debugging log","commit_id":"2ea86e44ade63651b206ad6278f8e622d81e70db"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c1a85313681e758468c91e33f110e3efbc35e90c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                      volume service clients."},{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        super(Manager, self).__init__(credentials\u003dcredentials)"},{"line_number":215,"context_line":"        self.api_microversions \u003d api_microversions or {}"},{"line_number":216,"context_line":"        self._set_compute_clients()"},{"line_number":217,"context_line":"        self._set_database_clients()"},{"line_number":218,"context_line":"        self._set_identity_clients()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_084ddf6b","line":215,"updated":"2016-01-04 13:15:53.000000000","message":"You don\u0027t really need this new attribute. You could call self._set_api_microversions(api_microversions) L353","commit_id":"4e2be34bc3559cc41541dfae468570deb38dc3ed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"11b9108674fec8e091bc6cb1c13d65e436be7ce7","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                      volume service clients."},{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        super(Manager, self).__init__(credentials\u003dcredentials)"},{"line_number":215,"context_line":"        self.api_microversions \u003d api_microversions or {}"},{"line_number":216,"context_line":"        self._set_compute_clients()"},{"line_number":217,"context_line":"        self._set_database_clients()"},{"line_number":218,"context_line":"        self._set_identity_clients()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_b533a7aa","line":215,"in_reply_to":"fa69d971_084ddf6b","updated":"2016-01-05 04:53:28.000000000","message":"Yea, we can do that way also but I added intentionaly as we might need this as instance var while refactoring Manager further","commit_id":"4e2be34bc3559cc41541dfae468570deb38dc3ed"}],"tempest/common/api_version_utils.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c1a85313681e758468c91e33f110e3efbc35e90c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"def select_request_microversion(test_min_version, cfg_min_version):"},{"line_number":68,"context_line":"    test_version \u003d api_version_request.APIVersionRequest(test_min_version)"},{"line_number":69,"context_line":"    cfg_version \u003d api_version_request.APIVersionRequest(cfg_min_version)"},{"line_number":70,"context_line":"    max_version \u003d cfg_version if cfg_version \u003e\u003d test_version else test_version"},{"line_number":71,"context_line":"    return max_version.get_string()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_c806e7cd","line":70,"updated":"2016-01-04 13:15:53.000000000","message":"Why didn\u0027t you use the builtin max() here ?\n\nThis function starts to look like java code :)","commit_id":"4e2be34bc3559cc41541dfae468570deb38dc3ed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"11b9108674fec8e091bc6cb1c13d65e436be7ce7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"def select_request_microversion(test_min_version, cfg_min_version):"},{"line_number":68,"context_line":"    test_version \u003d api_version_request.APIVersionRequest(test_min_version)"},{"line_number":69,"context_line":"    cfg_version \u003d api_version_request.APIVersionRequest(cfg_min_version)"},{"line_number":70,"context_line":"    max_version \u003d cfg_version if cfg_version \u003e\u003d test_version else test_version"},{"line_number":71,"context_line":"    return max_version.get_string()"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa69d971_35e7b712","line":70,"in_reply_to":"fa69d971_c806e7cd","updated":"2016-01-05 04:53:28.000000000","message":"Actually those are instance of APIVersionRequest which cannot be compared with max etc.","commit_id":"4e2be34bc3559cc41541dfae468570deb38dc3ed"}]}
