)]}'
{"tempest/lib/common/http.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b2ba3342f5eae5ef4f9eface8d21db2fae66dcd6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        original_headers \u003d kwargs.get(\u0027headers\u0027, {})"},{"line_number":45,"context_line":"        new_headers \u003d dict(original_headers, connection\u003d\u0027close\u0027)"},{"line_number":46,"context_line":"        new_kwargs \u003d dict(kwargs, headers\u003dnew_headers)"},{"line_number":47,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, **new_kwargs)"},{"line_number":48,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_3d00b765","line":47,"updated":"2016-03-24 15:42:01.000000000","message":"I did something very similar to this when I switched gabbi to use urllib3 and the one issue I ran into was with dealing with how errors and redirects were handled.\n\nIn httplib2 if there\u0027s a connection error it is raised and that\u0027s it. In urllib3, by default there are a few retries and then MaxRetryError is called, containing the actual error. You can adjust this behavior by passing a Retry class.\n\nSee the discussion and code in this gabbi pull request: https://github.com/cdent/gabbi/pull/121","commit_id":"b1bed0594e943a470dfc50245c7529d2e075c84f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"f6bef57d945ef9a16e1201babc4d907070a34b6e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        original_headers \u003d kwargs.get(\u0027headers\u0027, {})"},{"line_number":45,"context_line":"        new_headers \u003d dict(original_headers, connection\u003d\u0027close\u0027)"},{"line_number":46,"context_line":"        new_kwargs \u003d dict(kwargs, headers\u003dnew_headers)"},{"line_number":47,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, **new_kwargs)"},{"line_number":48,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":2,"id":"da0c15f0_f2d440be","line":47,"in_reply_to":"fa0719c6_3d00b765","updated":"2016-03-27 14:10:07.000000000","message":"Thanks for your input. At first I though, \"I don\"t need to change anything\" because unit tests and functional tests are green. But then, because this changes a file in tempest.lib, we might have \"outside\" consumers of this so I\u0027ll change my patch to follow redirection, as httplib2 does.","commit_id":"b1bed0594e943a470dfc50245c7529d2e075c84f"},{"author":{"_account_id":18108,"name":"Cory Benfield","email":"lukasaoz@gmail.com","username":"lukasa"},"change_message_id":"edff3c658d7150432223eda977930477aabca179","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def __init__(self, disable_ssl_certificate_validation\u003dFalse,"},{"line_number":21,"context_line":"                 ca_certs\u003dNone):"},{"line_number":22,"context_line":"        if disable_ssl_certificate_validation:"},{"line_number":23,"context_line":"            urllib3.disable_warnings()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        kwargs \u003d {}"},{"line_number":26,"context_line":"        if ca_certs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_b037e54b","line":23,"updated":"2016-03-31 20:07:37.000000000","message":"This looks wrong to me.\n\n`disable_warnings` will silence the annoying warnings, but it won\u0027t actually turn off the validation: that\u0027s controlled by the `cert_reqs` kwarg you\u0027re setting lower down. Do you need to re-check this value there?","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d73782c84f623ae680ce36e56e34b219c3c2ce10","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def __init__(self, disable_ssl_certificate_validation\u003dFalse,"},{"line_number":21,"context_line":"                 ca_certs\u003dNone):"},{"line_number":22,"context_line":"        if disable_ssl_certificate_validation:"},{"line_number":23,"context_line":"            urllib3.disable_warnings()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        kwargs \u003d {}"},{"line_number":26,"context_line":"        if ca_certs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a061dce_d495a8e4","line":23,"in_reply_to":"9a061dce_ab30e19f","updated":"2016-04-05 14:05:17.000000000","message":"In fact, the default for cert_reqs is None, so that wouldn\u0027t be necessary.","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"c74bedc2f0f322ad55e536ede50d82c34fae12b7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def __init__(self, disable_ssl_certificate_validation\u003dFalse,"},{"line_number":21,"context_line":"                 ca_certs\u003dNone):"},{"line_number":22,"context_line":"        if disable_ssl_certificate_validation:"},{"line_number":23,"context_line":"            urllib3.disable_warnings()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        kwargs \u003d {}"},{"line_number":26,"context_line":"        if ca_certs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a061dce_809aa161","line":23,"in_reply_to":"9a061dce_d495a8e4","updated":"2016-04-06 08:47:00.000000000","message":"I know it is the default, that\u0027s what I said in the previous comment...","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"8cd04950a9a00f2e8e4efeeae42acfc2560d64c1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def __init__(self, disable_ssl_certificate_validation\u003dFalse,"},{"line_number":21,"context_line":"                 ca_certs\u003dNone):"},{"line_number":22,"context_line":"        if disable_ssl_certificate_validation:"},{"line_number":23,"context_line":"            urllib3.disable_warnings()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        kwargs \u003d {}"},{"line_number":26,"context_line":"        if ca_certs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a061dce_ab30e19f","line":23,"in_reply_to":"ba0121b8_68c25a54","updated":"2016-04-04 09:16:47.000000000","message":"I believe cert_reqs defaults to CERT_NONE but, ok, I\u0027ll make that explicit.","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d24f7d220c68b1662179f3b339a58a06514b2e38","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def __init__(self, disable_ssl_certificate_validation\u003dFalse,"},{"line_number":21,"context_line":"                 ca_certs\u003dNone):"},{"line_number":22,"context_line":"        if disable_ssl_certificate_validation:"},{"line_number":23,"context_line":"            urllib3.disable_warnings()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        kwargs \u003d {}"},{"line_number":26,"context_line":"        if ca_certs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_d5f072cb","line":23,"in_reply_to":"ba0121b8_b037e54b","updated":"2016-04-01 09:14:34.000000000","message":"What\u0027s the actual difference between turning off validation and disabling warnings ?\n\nI think I am missing something. Do you have a code suggestion ?","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":18108,"name":"Cory Benfield","email":"lukasaoz@gmail.com","username":"lukasa"},"change_message_id":"00918e92fd188b543fbb0bd54f1e0e712bd2b7c4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def __init__(self, disable_ssl_certificate_validation\u003dFalse,"},{"line_number":21,"context_line":"                 ca_certs\u003dNone):"},{"line_number":22,"context_line":"        if disable_ssl_certificate_validation:"},{"line_number":23,"context_line":"            urllib3.disable_warnings()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        kwargs \u003d {}"},{"line_number":26,"context_line":"        if ca_certs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_68c25a54","line":23,"in_reply_to":"ba0121b8_d5f072cb","updated":"2016-04-01 16:11:32.000000000","message":"When a TLS certificate fails validation in urllib3 it doesn\u0027t warn, it throws exceptions.\n\nurllib3.disable_warnings() silences warnings urllib3 fires when it finds itself running on systems that do not give it enough access to OpenSSL to configure it securely.\n\nTo *actually disable* certificate validation, you need to set `cert_reqs` to \"CERT_NONE\".","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":18108,"name":"Cory Benfield","email":"lukasaoz@gmail.com","username":"lukasa"},"change_message_id":"edff3c658d7150432223eda977930477aabca179","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        super(ClosingHttp, self).__init__(**kwargs)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        class Response(dict):"},{"line_number":35,"context_line":"            def __init__(self, info):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_6bb9e22d","line":32,"updated":"2016-03-31 20:07:37.000000000","message":"Request used to take *args, and now doesn\u0027t. Is that API change safe?","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d24f7d220c68b1662179f3b339a58a06514b2e38","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        super(ClosingHttp, self).__init__(**kwargs)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        class Response(dict):"},{"line_number":35,"context_line":"            def __init__(self, info):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_355a8ef2","line":32,"in_reply_to":"ba0121b8_6bb9e22d","updated":"2016-04-01 09:14:34.000000000","message":"You are right. I don\u0027t like having *args and *kwargs in my methods when it\u0027s not needed. But it was there before and this is tempest.lib so you are right.","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"d73782c84f623ae680ce36e56e34b219c3c2ce10","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Follow up to 5 redirections. Don\u0027t raise an exception if"},{"line_number":49,"context_line":"        # it\u0027s exceeded but return the HTTP 3XX response instead."},{"line_number":50,"context_line":"        retry \u003d urllib3.util.Retry(raise_on_redirect\u003dFalse, redirect\u003d5)"},{"line_number":51,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, retries\u003dretry,"},{"line_number":52,"context_line":"                                             **new_kwargs)"},{"line_number":53,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a061dce_9459705d","line":50,"range":{"start_line":50,"start_character":60,"end_line":50,"end_character":70},"updated":"2016-04-05 14:05:17.000000000","message":"Is this number arbitrary or it comes as a default from something?","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":14885,"name":"Daniel Mellado","email":"dmellado@redhat.com","username":"daniel-mellado"},"change_message_id":"cf2044fbc1bfbf4c6ec9a6ca63371611ca8a2bda","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Follow up to 5 redirections. Don\u0027t raise an exception if"},{"line_number":49,"context_line":"        # it\u0027s exceeded but return the HTTP 3XX response instead."},{"line_number":50,"context_line":"        retry \u003d urllib3.util.Retry(raise_on_redirect\u003dFalse, redirect\u003d5)"},{"line_number":51,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, retries\u003dretry,"},{"line_number":52,"context_line":"                                             **new_kwargs)"},{"line_number":53,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a061dce_d782ca51","line":50,"range":{"start_line":50,"start_character":60,"end_line":50,"end_character":70},"in_reply_to":"9a061dce_9459705d","updated":"2016-04-05 14:06:59.000000000","message":"Answering myself, and from another comment, 5 is the redirect default in httplib2.","commit_id":"c68effde1d7dfb1e5193b5b06587f1127f28455a"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"99b228d19160bd33cc30432f3d58f7d96e6fd128","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":2,"context_line":"# Copyright 2013 Citrix Systems, Inc."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_160c8d93","side":"PARENT","line":2,"updated":"2016-04-04 11:06:28.000000000","message":"Is it really ok to remove this?","commit_id":"534a8dc60dfef116156b8f9ee60071a9bf4e4f90"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"8a41efd76d973ba57c603b0f71a373dd54c78729","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":2,"context_line":"# Copyright 2013 Citrix Systems, Inc."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_bd090c2f","side":"PARENT","line":2,"in_reply_to":"9a061dce_160c8d93","updated":"2016-04-05 08:15:10.000000000","message":"The new file as nothing to do with the original version. It so happens that the have the same name.","commit_id":"534a8dc60dfef116156b8f9ee60071a9bf4e4f90"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"99b228d19160bd33cc30432f3d58f7d96e6fd128","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Follow up to 5 redirections. Don\u0027t raise an exception if"},{"line_number":51,"context_line":"        # it\u0027s exceeded but return the HTTP 3XX response instead."},{"line_number":52,"context_line":"        retry \u003d urllib3.util.Retry(raise_on_redirect\u003dFalse, redirect\u003d5)"},{"line_number":53,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, retries\u003dretry,"},{"line_number":54,"context_line":"                                             *args, **new_kwargs)"},{"line_number":55,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_9649bdd3","line":52,"updated":"2016-04-04 11:06:28.000000000","message":"The value 5 seems arbitrary - how does it compare to previous behaviour?\nI don\u0027t see 5 ever being too small when doing API requests, but you never know. Should the be a config item?","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"46fab295a5855e9b8a08fe3aa18e6e8acc846325","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Follow up to 5 redirections. Don\u0027t raise an exception if"},{"line_number":51,"context_line":"        # it\u0027s exceeded but return the HTTP 3XX response instead."},{"line_number":52,"context_line":"        retry \u003d urllib3.util.Retry(raise_on_redirect\u003dFalse, redirect\u003d5)"},{"line_number":53,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, retries\u003dretry,"},{"line_number":54,"context_line":"                                             *args, **new_kwargs)"},{"line_number":55,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_c94b9358","line":52,"in_reply_to":"9a061dce_36d8b1ef","updated":"2016-04-04 12:55:42.000000000","message":"ok, fine with me then, thanks for the reply","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e455db975a9e458ca2f86a21554fe9e2f6dc35fc","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Follow up to 5 redirections. Don\u0027t raise an exception if"},{"line_number":51,"context_line":"        # it\u0027s exceeded but return the HTTP 3XX response instead."},{"line_number":52,"context_line":"        retry \u003d urllib3.util.Retry(raise_on_redirect\u003dFalse, redirect\u003d5)"},{"line_number":53,"context_line":"        r \u003d super(ClosingHttp, self).request(method, url, retries\u003dretry,"},{"line_number":54,"context_line":"                                             *args, **new_kwargs)"},{"line_number":55,"context_line":"        return Response(r), r.data"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_36d8b1ef","line":52,"in_reply_to":"9a061dce_9649bdd3","updated":"2016-04-04 11:08:45.000000000","message":"5 is the redirect default in httplib2 so this maintains that default.","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"}],"tempest/tests/common/test_preprov_creds.py":[{"author":{"_account_id":18108,"name":"Cory Benfield","email":"lukasaoz@gmail.com","username":"lukasa"},"change_message_id":"edff3c658d7150432223eda977930477aabca179","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        super(TestPreProvisionedCredentials, self).setUp()"},{"line_number":49,"context_line":"        self.useFixture(fake_config.ConfigFixture())"},{"line_number":50,"context_line":"        self.stubs.Set(config, \u0027TempestConfigPrivate\u0027, fake_config.FakePrivate)"},{"line_number":51,"context_line":"        self.fake_http \u003d fake_http.fake_httplib2(return_type\u003d200)"},{"line_number":52,"context_line":"        self.stubs.Set(token_client.TokenClient, \u0027raw_request\u0027,"},{"line_number":53,"context_line":"                       fake_identity._fake_v2_response)"},{"line_number":54,"context_line":"        self.useFixture(lockutils_fixtures.ExternalLockFixture())"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_cb5aaef1","side":"PARENT","line":51,"updated":"2016-03-31 20:07:37.000000000","message":"Was this fake not needed anymore?","commit_id":"9b79e918e078ee75c7bb9d007380391d049bdcb5"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d24f7d220c68b1662179f3b339a58a06514b2e38","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        super(TestPreProvisionedCredentials, self).setUp()"},{"line_number":49,"context_line":"        self.useFixture(fake_config.ConfigFixture())"},{"line_number":50,"context_line":"        self.stubs.Set(config, \u0027TempestConfigPrivate\u0027, fake_config.FakePrivate)"},{"line_number":51,"context_line":"        self.fake_http \u003d fake_http.fake_httplib2(return_type\u003d200)"},{"line_number":52,"context_line":"        self.stubs.Set(token_client.TokenClient, \u0027raw_request\u0027,"},{"line_number":53,"context_line":"                       fake_identity._fake_v2_response)"},{"line_number":54,"context_line":"        self.useFixture(lockutils_fixtures.ExternalLockFixture())"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_95d1da25","side":"PARENT","line":51,"in_reply_to":"ba0121b8_cb5aaef1","updated":"2016-04-01 09:14:34.000000000","message":"It was not used.","commit_id":"9b79e918e078ee75c7bb9d007380391d049bdcb5"}],"tempest/tests/lib/services/identity/v2/test_token_client.py":[{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"87703b4e2a7d0271c3ce0b45a4a9424f579c1269","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_75fb4d47","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"updated":"2016-04-08 05:22:18.000000000","message":"As in other modules, can json be replaced by \"from oslo_serialization import jsonutils as json\"","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5d50105a9fd4122ec11e1b883039b2a970f973e2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a1b2928_a793e5f9","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":11},"in_reply_to":"9a061dce_75fb4d47","updated":"2016-04-11 08:51:46.000000000","message":"Good idea. But it\u0027s not related to my patch. We try to have \"one patch \u003d\u003d one thing done\". The purpose of this patch is to replace httlib2 by urllib3. I suggest you submit a different patch to implement what you suggest.","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"}],"tempest/tests/test_negative_rest_client.py":[{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"87703b4e2a7d0271c3ce0b45a4a9424f579c1269","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"from oslotest import mockpatch"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tempest.common import negative_rest_client"},{"line_number":22,"context_line":"from tempest import config"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_f03f6b84","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":30},"updated":"2016-04-08 05:22:18.000000000","message":"Can you remove mockpatch like in other modules?","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1a7ed0af7ccd2e067b5df78358e6717d3dfae804","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"from oslotest import mockpatch"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tempest.common import negative_rest_client"},{"line_number":22,"context_line":"from tempest import config"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a061dce_ffca616d","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":30},"in_reply_to":"9a061dce_f03f6b84","updated":"2016-04-09 07:42:25.000000000","message":"That should be out of scope for keeping concrete purpose.","commit_id":"2438896f01105124a0f590487994f1e70a1506fa"}]}
