)]}'
{"glanceclient/common/http.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import httplib"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import OpenSSL"},{"line_number":21,"context_line":"import socket"},{"line_number":22,"context_line":"import StringIO"},{"line_number":23,"context_line":"import struct"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FSiI%3D","line":20,"updated":"2012-09-25 16:50:20.000000000","message":"Third party libs don\u0027t belong in this block - put this down around line 35","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f5a13ad1680567ba8365a08ba13c587f66a49f3a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import httplib"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import OpenSSL"},{"line_number":21,"context_line":"import socket"},{"line_number":22,"context_line":"import StringIO"},{"line_number":23,"context_line":"import struct"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRrg%3D","line":20,"in_reply_to":"AAAALH%2F%2FSiI%3D","updated":"2012-09-26 16:11:17.000000000","message":"Can do.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            _kwargs[\u0027cert_file\u0027] \u003d kwargs.get(\u0027cert_file\u0027, None)"},{"line_number":63,"context_line":"            _kwargs[\u0027key_file\u0027] \u003d kwargs.get(\u0027key_file\u0027, None)"},{"line_number":64,"context_line":"            _kwargs[\u0027insecure\u0027] \u003d kwargs.get(\u0027insecure\u0027, False)"},{"line_number":65,"context_line":"            _kwargs[\u0027no_ssl_compression\u0027] \u003d \\"},{"line_number":66,"context_line":"                kwargs.get(\u0027no_ssl_compression\u0027, False)"},{"line_number":67,"context_line":"        elif parts.scheme \u003d\u003d \u0027http\u0027:"},{"line_number":68,"context_line":"            _class \u003d httplib.HTTPConnection"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FShU%3D","line":65,"updated":"2012-09-25 16:50:20.000000000","message":"Using a positive option vs negative would be clearer. It\u0027s clearer to turn ssl_compression off than turn no_ssl_compression on. \n\n\nDoes it make sense to simply call this \u0027compression\u0027 and apply it to other parts of the code? Or do we need to be able to control generic gzip compression and ssl compression separately?","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f5a13ad1680567ba8365a08ba13c587f66a49f3a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            _kwargs[\u0027cert_file\u0027] \u003d kwargs.get(\u0027cert_file\u0027, None)"},{"line_number":63,"context_line":"            _kwargs[\u0027key_file\u0027] \u003d kwargs.get(\u0027key_file\u0027, None)"},{"line_number":64,"context_line":"            _kwargs[\u0027insecure\u0027] \u003d kwargs.get(\u0027insecure\u0027, False)"},{"line_number":65,"context_line":"            _kwargs[\u0027no_ssl_compression\u0027] \u003d \\"},{"line_number":66,"context_line":"                kwargs.get(\u0027no_ssl_compression\u0027, False)"},{"line_number":67,"context_line":"        elif parts.scheme \u003d\u003d \u0027http\u0027:"},{"line_number":68,"context_line":"            _class \u003d httplib.HTTPConnection"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRr0%3D","line":65,"in_reply_to":"AAAALH%2F%2FShU%3D","updated":"2012-09-26 16:11:17.000000000","message":"Agreed re negative/positive. \n\n\u003e Does it make sense to simply call this \u0027compression\u0027 and apply it to other parts of the code? \n\nHmm, might lead to possible confusion between transport/application layers. This is at the transport layer....we could certainly do something interesting at the application layer (LZO anyone?), but I think it may be best to keep this separate for now.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        return self._http_request(url, method, **kwargs)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"class Connection(object):"},{"line_number":194,"context_line":"    \"\"\""},{"line_number":195,"context_line":"    An OpenSSL.SSL.Connection delegator."},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FSh8%3D","line":193,"updated":"2012-09-25 16:50:20.000000000","message":"Need a more descriptive class name","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f5a13ad1680567ba8365a08ba13c587f66a49f3a","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        return self._http_request(url, method, **kwargs)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"class Connection(object):"},{"line_number":194,"context_line":"    \"\"\""},{"line_number":195,"context_line":"    An OpenSSL.SSL.Connection delegator."},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRrM%3D","line":193,"in_reply_to":"AAAALH%2F%2FSh8%3D","updated":"2012-09-26 16:11:17.000000000","message":"Sure.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        \"\"\""},{"line_number":238,"context_line":"        Set up the OpenSSL context."},{"line_number":239,"context_line":"        \"\"\""},{"line_number":240,"context_line":"        self.context \u003d OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if self.no_ssl_compression is True:"},{"line_number":243,"context_line":"            self.context.set_options(0x20000)  # SSL_OP_NO_COMPRESSION"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FShg%3D","line":240,"updated":"2012-09-25 16:50:20.000000000","message":"Does SSLv23 imply we are using a specific version of SSL? What issues will this cause for clients that don\u0027t like this version?","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f5a13ad1680567ba8365a08ba13c587f66a49f3a","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        \"\"\""},{"line_number":238,"context_line":"        Set up the OpenSSL context."},{"line_number":239,"context_line":"        \"\"\""},{"line_number":240,"context_line":"        self.context \u003d OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if self.no_ssl_compression is True:"},{"line_number":243,"context_line":"            self.context.set_options(0x20000)  # SSL_OP_NO_COMPRESSION"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRqc%3D","line":240,"in_reply_to":"AAAALH%2F%2FShg%3D","updated":"2012-09-26 16:11:17.000000000","message":"This is fairly standard I think (though I\u0027m no expert).\n\nSSLv23_METHOD means use version 3 but optionally fall back to version 2 if the peer doesn\u0027t support v3. v1 was never really implemented.\n\nhttp://en.wikipedia.org/wiki/Transport_Layer_Security","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        self.context \u003d OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if self.no_ssl_compression is True:"},{"line_number":243,"context_line":"            self.context.set_options(0x20000)  # SSL_OP_NO_COMPRESSION"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if self.insecure is not True:"},{"line_number":246,"context_line":"            self.context.set_verify(OpenSSL.SSL.VERIFY_PEER,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FShs%3D","line":243,"updated":"2012-09-25 16:50:20.000000000","message":"Is there a constant we can use here in place of the hard-coded hex value and comment?","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f5a13ad1680567ba8365a08ba13c587f66a49f3a","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        self.context \u003d OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if self.no_ssl_compression is True:"},{"line_number":243,"context_line":"            self.context.set_options(0x20000)  # SSL_OP_NO_COMPRESSION"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if self.insecure is not True:"},{"line_number":246,"context_line":"            self.context.set_verify(OpenSSL.SSL.VERIFY_PEER,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRqQ%3D","line":243,"in_reply_to":"AAAALH%2F%2FShs%3D","updated":"2012-09-26 16:11:17.000000000","message":"pyopenssl 0.12 doesn\u0027t have a constant. pyopenssl 0.13 has one, but that version isn\u0027t in any of the standard distros yet. I used the constant figuring we could change at some point in the future.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        Connect to an SSL port using the OpenSSL library and apply"},{"line_number":286,"context_line":"        per-connection parameters."},{"line_number":287,"context_line":"        \"\"\""},{"line_number":288,"context_line":"        self.setcontext()"},{"line_number":289,"context_line":"        sock \u003d socket.socket(socket.AF_INET, socket.SOCK_STREAM)"},{"line_number":290,"context_line":"        if self.timeout is not None:"},{"line_number":291,"context_line":"            # \u00270\u0027 microseconds"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FShc%3D","line":288,"updated":"2012-09-25 16:50:20.000000000","message":"Why call setcontext() here rather than in the init method?","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f5a13ad1680567ba8365a08ba13c587f66a49f3a","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        Connect to an SSL port using the OpenSSL library and apply"},{"line_number":286,"context_line":"        per-connection parameters."},{"line_number":287,"context_line":"        \"\"\""},{"line_number":288,"context_line":"        self.setcontext()"},{"line_number":289,"context_line":"        sock \u003d socket.socket(socket.AF_INET, socket.SOCK_STREAM)"},{"line_number":290,"context_line":"        if self.timeout is not None:"},{"line_number":291,"context_line":"            # \u00270\u0027 microseconds"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRpw%3D","line":288,"in_reply_to":"AAAALH%2F%2FShc%3D","updated":"2012-09-26 16:11:17.000000000","message":"I think it was just analogous with the previous code (where the key setting etc gets done at this stage). I can move to the init, might be a little cleaner.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"}],"glanceclient/exc.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ece575bfc332c27135c21ddb9f91b312b0d886d0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    pass"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"class SSLFileError(BaseException):"},{"line_number":145,"context_line":"    pass"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FShY%3D","line":144,"updated":"2012-09-25 16:50:20.000000000","message":"Put this exception at the bottom of the file. How would you feel about calling it SSLConfigurationError? Keeping it generic will prevent us from creating more exceptions down the road.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"b57cd6a595c5ed8505505df6699ebe67012d4d58","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    pass"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"class SSLFileError(BaseException):"},{"line_number":145,"context_line":"    pass"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FRnM%3D","line":144,"in_reply_to":"AAAALH%2F%2FShY%3D","updated":"2012-09-26 17:08:35.000000000","message":"I missed this comment. Makes sense -- will make the change.","commit_id":"7f1e7f64e1eb67b75babbb991f74ba526b45de90"}]}
