)]}'
{"octavia/amphorae/backends/agent/api_server/amphora_info.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    def get_interface(self, ip_addr):"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        try:"},{"line_number":180,"context_line":"            ip_version \u003d ipaddress.ip_address(str(ip_addr)).version"},{"line_number":181,"context_line":"        except Exception:"},{"line_number":182,"context_line":"            return webob.Response("},{"line_number":183,"context_line":"                json\u003ddict(message\u003d\"Invalid IP address\"), status\u003d400)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_a65336e2","line":180,"updated":"2020-03-17 01:10:50.000000000","message":"I\u0027ll change this as well.","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/amphorae/backends/agent/api_server/loadbalancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6437ad37632539ef205a4917e4a0f785e23d2934","unresolved":false,"context_lines":[{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        with open(cert_path, \u0027r\u0027) as crt_file:"},{"line_number":410,"context_line":"            cert \u003d crt_file.read()"},{"line_number":411,"context_line":"            md5 \u003d hashlib.md5(octavia_utils.b(cert)).hexdigest()  # nosec"},{"line_number":412,"context_line":"            resp \u003d webob.Response(json\u003ddict(md5sum\u003dmd5))"},{"line_number":413,"context_line":"            resp.headers[\u0027ETag\u0027] \u003d md5"},{"line_number":414,"context_line":"            return resp"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_30f0b8c9","line":411,"updated":"2020-03-18 19:03:53.000000000","message":"Yeah, I think this is \"safer\" to define this helper as a UTF-8 encoding.\nGiven this is an etag hash, probably not critical here, but for consistency aligning to UTF-8 is a good thing. The certs *may* have a double byte header (not the content, but the header info sometimes present).","commit_id":"f48fc12e64a726d32db154a984277054866931cc"}],"octavia/amphorae/backends/agent/api_server/osutils.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    ip_addr \u003d fixed_ip[\u0027ip_address\u0027]"},{"line_number":163,"context_line":"                    cidr \u003d fixed_ip[\u0027subnet_cidr\u0027]"},{"line_number":164,"context_line":"                    ip \u003d ipaddress.ip_address(ip_addr if isinstance("},{"line_number":165,"context_line":"                        ip_addr, str) else str(ip_addr))"},{"line_number":166,"context_line":"                    network \u003d ipaddress.ip_network("},{"line_number":167,"context_line":"                        cidr if isinstance("},{"line_number":168,"context_line":"                            cidr, str) else str(cidr))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_a3024d6e","line":165,"updated":"2020-03-16 18:04:00.000000000","message":"So, this is nuanced. The only reason we did this kind of if/else all over this file is because these could come in as str or bytes... Is that still the case? Or was THAT a python2 issue and is this cruft now? I kinda want to check.","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                    ip_addr \u003d fixed_ip[\u0027ip_address\u0027]"},{"line_number":163,"context_line":"                    cidr \u003d fixed_ip[\u0027subnet_cidr\u0027]"},{"line_number":164,"context_line":"                    ip \u003d ipaddress.ip_address(ip_addr if isinstance("},{"line_number":165,"context_line":"                        ip_addr, str) else str(ip_addr))"},{"line_number":166,"context_line":"                    network \u003d ipaddress.ip_network("},{"line_number":167,"context_line":"                        cidr if isinstance("},{"line_number":168,"context_line":"                            cidr, str) else str(cidr))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_06d7aa51","line":165,"in_reply_to":"1fa4df85_a3024d6e","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/amphorae/backends/agent/api_server/plug.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        try:"},{"line_number":47,"context_line":"            render_host_routes \u003d []"},{"line_number":48,"context_line":"            ip \u003d ipaddress.ip_address("},{"line_number":49,"context_line":"                vip if isinstance(vip, str) else str(vip))"},{"line_number":50,"context_line":"            network \u003d ipaddress.ip_network("},{"line_number":51,"context_line":"                subnet_cidr if isinstance(subnet_cidr, str)"},{"line_number":52,"context_line":"                else str(subnet_cidr))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_06456a15","line":49,"updated":"2020-03-17 01:10:50.000000000","message":"I\u0027ll change these as well.","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/amphorae/backends/utils/haproxy_query.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6437ad37632539ef205a4917e4a0f785e23d2934","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            raise Exception(_(\"HAProxy \u0027{0}\u0027 query failed.\").format(query))"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            sock.send(utils.b(query + \u0027\\n\u0027))"},{"line_number":55,"context_line":"            data \u003d u\u0027\u0027"},{"line_number":56,"context_line":"            while True:"},{"line_number":57,"context_line":"                x \u003d sock.recv(1024)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_f01300b7","line":54,"range":{"start_line":54,"start_character":22,"end_line":54,"end_character":27},"updated":"2020-03-18 19:03:53.000000000","message":"nit: It would be nice to keep this naming consistent across the files, so octavia_utils like it is in octavia/amphorae/backends/agent/api_server/loadbalancer.py","commit_id":"f48fc12e64a726d32db154a984277054866931cc"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"976fe2e96cc69ee4de8cd00972c8ffc225515066","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            raise Exception(_(\"HAProxy \u0027{0}\u0027 query failed.\").format(query))"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            sock.send(utils.b(query + \u0027\\n\u0027))"},{"line_number":55,"context_line":"            data \u003d u\u0027\u0027"},{"line_number":56,"context_line":"            while True:"},{"line_number":57,"context_line":"                x \u003d sock.recv(1024)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_6aa2bc9c","line":54,"range":{"start_line":54,"start_character":22,"end_line":54,"end_character":27},"in_reply_to":"1fa4df85_f01300b7","updated":"2020-03-18 21:17:17.000000000","message":"I\u0027ll update the places where I added this new import to be consistent, but there are plenty of other places that i\u0027ll leave alone.","commit_id":"f48fc12e64a726d32db154a984277054866931cc"}],"octavia/amphorae/backends/utils/keepalivedlvs_query.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    #   \u0027InActConn\u0027: 0"},{"line_number":70,"context_line":"    # }}"},{"line_number":71,"context_line":"    listener_ip, listener_port \u003d listener_ip_port.rsplit(\u0027:\u0027, 1)"},{"line_number":72,"context_line":"    ip_obj \u003d ipaddress.ip_address(str(listener_ip.strip(\u0027[]\u0027)))"},{"line_number":73,"context_line":"    output \u003d read_kernel_file(ns_name, KERNEL_LVS_PATH).split(\u0027\\n\u0027)"},{"line_number":74,"context_line":"    if ip_obj.version \u003d\u003d 4:"},{"line_number":75,"context_line":"        ip_to_hex_format \u003d \"0%X\" % ip_obj._ip"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_433ef929","line":72,"updated":"2020-03-16 18:04:00.000000000","message":"Can this ever be something besides a string now? I feel like this might be cruft.\nSame below.","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    #   \u0027InActConn\u0027: 0"},{"line_number":70,"context_line":"    # }}"},{"line_number":71,"context_line":"    listener_ip, listener_port \u003d listener_ip_port.rsplit(\u0027:\u0027, 1)"},{"line_number":72,"context_line":"    ip_obj \u003d ipaddress.ip_address(str(listener_ip.strip(\u0027[]\u0027)))"},{"line_number":73,"context_line":"    output \u003d read_kernel_file(ns_name, KERNEL_LVS_PATH).split(\u0027\\n\u0027)"},{"line_number":74,"context_line":"    if ip_obj.version \u003d\u003d 4:"},{"line_number":75,"context_line":"        ip_to_hex_format \u003d \"0%X\" % ip_obj._ip"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_e63a8ecb","line":72,"in_reply_to":"1fa4df85_433ef929","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/amphorae/driver_exceptions/exceptions.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    super(AmphoraDriverError, self).__init__(self.message)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __unicode__(self):"},{"line_number":36,"context_line":"        return str(self.msg)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @staticmethod"},{"line_number":39,"context_line":"    def use_fatal_exceptions():"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_830dd191","line":36,"updated":"2020-03-16 18:04:00.000000000","message":"I don\u0027t know if this is necessary anymore either -- we handle msg ourselves via self.message and formatting, the typing should already be correct?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    super(AmphoraDriverError, self).__init__(self.message)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __unicode__(self):"},{"line_number":36,"context_line":"        return str(self.msg)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @staticmethod"},{"line_number":39,"context_line":"    def use_fatal_exceptions():"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_0636cae8","line":36,"in_reply_to":"1fa4df85_830dd191","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/amphorae/drivers/haproxy/rest_api_driver.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6437ad37632539ef205a4917e4a0f785e23d2934","unresolved":false,"context_lines":[{"line_number":704,"context_line":"                    # For taskflow persistence cause attribute should"},{"line_number":705,"context_line":"                    # be serializable to JSON. Pass None, as cause exception"},{"line_number":706,"context_line":"                    # is described in the expection message."},{"line_number":707,"context_line":"                    raise driver_except.AmpConnectionRetry(exception\u003dstr(e))"},{"line_number":708,"context_line":"        LOG.error(\"Connection retries (currently set to %(max_retries)s) \""},{"line_number":709,"context_line":"                  \"exhausted.  The amphora is unavailable. Reason: \""},{"line_number":710,"context_line":"                  \"%(exception)s\","}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_f09460ea","line":707,"updated":"2020-03-18 19:03:53.000000000","message":"This is not an equivalent conversion.\nIf the \"from\" \"None\" is not required by taskflow as the comment mentions, we should remove the comment as well.\nOtherwise, if it is needed, this should be changed to \"raise driver_except.AmpConnectionRetry(exception\u003dstr(e)) from None\"\n\nGiven this raise_from was recently added by Ann for the jobboard work, we should check with her before removing it.","commit_id":"f48fc12e64a726d32db154a984277054866931cc"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"976fe2e96cc69ee4de8cd00972c8ffc225515066","unresolved":false,"context_lines":[{"line_number":704,"context_line":"                    # For taskflow persistence cause attribute should"},{"line_number":705,"context_line":"                    # be serializable to JSON. Pass None, as cause exception"},{"line_number":706,"context_line":"                    # is described in the expection message."},{"line_number":707,"context_line":"                    raise driver_except.AmpConnectionRetry(exception\u003dstr(e))"},{"line_number":708,"context_line":"        LOG.error(\"Connection retries (currently set to %(max_retries)s) \""},{"line_number":709,"context_line":"                  \"exhausted.  The amphora is unavailable. Reason: \""},{"line_number":710,"context_line":"                  \"%(exception)s\","}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_ead22c34","line":707,"in_reply_to":"1fa4df85_f09460ea","updated":"2020-03-18 21:17:17.000000000","message":"I didn\u0027t intend to remove it, maybe read the six conversion page wrong, i\u0027ll put it back","commit_id":"f48fc12e64a726d32db154a984277054866931cc"}],"octavia/amphorae/drivers/keepalived/jinja/jinja_cfg.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # Validate the VIP address and see if it is IPv6"},{"line_number":73,"context_line":"        vip \u003d loadbalancer.vip.ip_address"},{"line_number":74,"context_line":"        vip_addr \u003d ipaddress.ip_address("},{"line_number":75,"context_line":"            vip if isinstance(vip, str) else str(vip))"},{"line_number":76,"context_line":"        vip_ipv6 \u003d vip_addr.version \u003d\u003d 6"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Normalize and validate the VIP subnet CIDR"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_231c1dc0","line":75,"updated":"2020-03-16 18:04:00.000000000","message":"I don\u0027t know that this can be anything besides a string anymore. Same below.","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # Validate the VIP address and see if it is IPv6"},{"line_number":73,"context_line":"        vip \u003d loadbalancer.vip.ip_address"},{"line_number":74,"context_line":"        vip_addr \u003d ipaddress.ip_address("},{"line_number":75,"context_line":"            vip if isinstance(vip, str) else str(vip))"},{"line_number":76,"context_line":"        vip_ipv6 \u003d vip_addr.version \u003d\u003d 6"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Normalize and validate the VIP subnet CIDR"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_c62f5286","line":75,"in_reply_to":"1fa4df85_231c1dc0","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/certificates/generator/local.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def _generate_csr(cls, cn, private_key, passphrase\u003dNone):"},{"line_number":188,"context_line":"        cn \u003d str(cn)"},{"line_number":189,"context_line":"        pk \u003d serialization.load_pem_private_key("},{"line_number":190,"context_line":"            data\u003dprivate_key, password\u003dpassphrase,"},{"line_number":191,"context_line":"            backend\u003dbackends.default_backend())"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_a35ecd73","line":188,"updated":"2020-03-16 18:04:00.000000000","message":"I wonder if cn can be something besides string? If it came in as bytes, this would be wrong anyway -- so I assume it was either unicode or string before, and now this is cruft?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def _generate_csr(cls, cn, private_key, passphrase\u003dNone):"},{"line_number":188,"context_line":"        cn \u003d str(cn)"},{"line_number":189,"context_line":"        pk \u003d serialization.load_pem_private_key("},{"line_number":190,"context_line":"            data\u003dprivate_key, password\u003dpassphrase,"},{"line_number":191,"context_line":"            backend\u003dbackends.default_backend())"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_060d6a34","line":188,"in_reply_to":"1fa4df85_a35ecd73","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/common/exceptions.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    super(OctaviaException, self).__init__(self.message)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __unicode__(self):"},{"line_number":53,"context_line":"        return str(self.msg)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @staticmethod"},{"line_number":56,"context_line":"    def use_fatal_exceptions():"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_c3c66917","line":53,"updated":"2020-03-16 18:04:00.000000000","message":"Similarly, is this cruft?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    super(OctaviaException, self).__init__(self.message)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __unicode__(self):"},{"line_number":53,"context_line":"        return str(self.msg)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @staticmethod"},{"line_number":56,"context_line":"    def use_fatal_exceptions():"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_a649f660","line":53,"in_reply_to":"1fa4df85_c3c66917","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/common/utils.py":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"775fac5c2e7f32bea135fc28864d67049fb2d799","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def b(s):"},{"line_number":120,"context_line":"    return s.encode(\"latin-1\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class exception_logger(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_0c27e0b8","line":120,"range":{"start_line":120,"start_character":21,"end_line":120,"end_character":28},"updated":"2020-03-15 09:13:28.000000000","message":"Seems right\nhttps://six.readthedocs.io/#six.b","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def b(s):"},{"line_number":120,"context_line":"    return s.encode(\"latin-1\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class exception_logger(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_c3b749d8","line":120,"range":{"start_line":120,"start_character":21,"end_line":120,"end_character":28},"in_reply_to":"1fa4df85_0c27e0b8","updated":"2020-03-16 18:04:00.000000000","message":"I guess I need to read more because I\u0027m not sure why we\u0027d ever need to call this now?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def b(s):"},{"line_number":120,"context_line":"    return s.encode(\"latin-1\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class exception_logger(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_266f46c6","line":120,"range":{"start_line":120,"start_character":21,"end_line":120,"end_character":28},"in_reply_to":"1fa4df85_c3b749d8","updated":"2020-03-17 01:10:50.000000000","message":"This was one of those weird ones, and I erred on the side of caution.","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e09095baa25a76dfe03625049c37d66fd6469f1e","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def b(s):"},{"line_number":120,"context_line":"    return s.encode(\"latin-1\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class exception_logger(object):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_b1a5ae49","line":120,"updated":"2020-03-17 04:52:27.000000000","message":"Hmm, I need to look at why we need this. Everything in Octavia should already be UTF-8.","commit_id":"844c526367aed3e1a5a177a52b0f93bd3f880d75"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b1306fe73729530645f69a513049ab347ec75874","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def b(s):"},{"line_number":120,"context_line":"    return s.encode(\"latin-1\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class exception_logger(object):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_1eaefd97","line":120,"in_reply_to":"1fa4df85_4b5cbeec","updated":"2020-03-17 21:00:09.000000000","message":"So was the consensus on irc to make this utf-8 ?","commit_id":"844c526367aed3e1a5a177a52b0f93bd3f880d75"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4be5d354e73ab677b34fb926b322ea0ad429a351","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def b(s):"},{"line_number":120,"context_line":"    return s.encode(\"latin-1\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class exception_logger(object):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_4b5cbeec","line":120,"in_reply_to":"1fa4df85_b1a5ae49","updated":"2020-03-17 15:51:43.000000000","message":"I thought the same thing, but I figured it out -- this is specifically for dealing with cert stuff where the lower-level crypto libs all take/return binary data.","commit_id":"844c526367aed3e1a5a177a52b0f93bd3f880d75"}],"octavia/common/validate.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"def ip_not_reserved(ip_address):"},{"line_number":420,"context_line":"    ip_address \u003d ("},{"line_number":421,"context_line":"        ipaddress.ip_address(str(ip_address)).exploded.upper())"},{"line_number":422,"context_line":"    if ip_address in CONF.networking.reserved_ips:"},{"line_number":423,"context_line":"        raise exceptions.InvalidOption(value\u003dip_address,"},{"line_number":424,"context_line":"                                       option\u003d\u0027member address\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_a3ec8d8f","line":421,"updated":"2020-03-16 18:04:00.000000000","message":"I don\u0027t think ip_address can be anything but string now? Again, if it was possible for it to be bytes coming in, this would be wrong anyway as it\u0027d need to be a decode. I think this was just for unicode/string matching?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"def ip_not_reserved(ip_address):"},{"line_number":420,"context_line":"    ip_address \u003d ("},{"line_number":421,"context_line":"        ipaddress.ip_address(str(ip_address)).exploded.upper())"},{"line_number":422,"context_line":"    if ip_address in CONF.networking.reserved_ips:"},{"line_number":423,"context_line":"        raise exceptions.InvalidOption(value\u003dip_address,"},{"line_number":424,"context_line":"                                       option\u003d\u0027member address\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_c65d1216","line":421,"in_reply_to":"1fa4df85_a3ec8d8f","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"octavia/network/drivers/neutron/allowed_address_pairs.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _get_ethertype_for_ip(self, ip):"},{"line_number":145,"context_line":"        address \u003d ipaddress.ip_address("},{"line_number":146,"context_line":"            ip if isinstance(ip, str) else str(ip))"},{"line_number":147,"context_line":"        return \u0027IPv6\u0027 if address.version \u003d\u003d 6 else \u0027IPv4\u0027"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _update_security_group_rules(self, load_balancer, sec_grp_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_c39429eb","line":146,"updated":"2020-03-16 18:04:00.000000000","message":"Same as elsewhere, probably cruft?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def _get_ethertype_for_ip(self, ip):"},{"line_number":145,"context_line":"        address \u003d ipaddress.ip_address("},{"line_number":146,"context_line":"            ip if isinstance(ip, str) else str(ip))"},{"line_number":147,"context_line":"        return \u0027IPv6\u0027 if address.version \u003d\u003d 6 else \u0027IPv4\u0027"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _update_security_group_rules(self, load_balancer, sec_grp_id):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_869ddabc","line":146,"in_reply_to":"1fa4df85_c39429eb","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}],"tools/pkcs7_to_pem.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                           enumerate(map(lambda x: x[1], markers))))"},{"line_number":44,"context_line":"    idx \u003d -1"},{"line_number":45,"context_line":"    state \u003d stSpam"},{"line_number":46,"context_line":"    data \u003d str(data, encoding\u003d\"UTF-8\")"},{"line_number":47,"context_line":"    for certLine in data.replace(\u0027\\r\u0027, \u0027\u0027).split(\u0027\\n\u0027):"},{"line_number":48,"context_line":"        if not certLine:"},{"line_number":49,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_8345d172","line":46,"updated":"2020-03-16 18:04:00.000000000","message":"Is this not just ... `data.decode(\u0027utf-8\u0027)`?","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"955d6ed41382e66de022bb0a5c329f3a2006d2a8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                           enumerate(map(lambda x: x[1], markers))))"},{"line_number":44,"context_line":"    idx \u003d -1"},{"line_number":45,"context_line":"    state \u003d stSpam"},{"line_number":46,"context_line":"    data \u003d str(data, encoding\u003d\"UTF-8\")"},{"line_number":47,"context_line":"    for certLine in data.replace(\u0027\\r\u0027, \u0027\u0027).split(\u0027\\n\u0027):"},{"line_number":48,"context_line":"        if not certLine:"},{"line_number":49,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_06924aa0","line":46,"in_reply_to":"1fa4df85_8345d172","updated":"2020-03-17 01:10:50.000000000","message":"Done","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1394289335e36e59eca316e496265ee2be47c0d9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            else:"},{"line_number":61,"context_line":"                certLines.append(certLine)"},{"line_number":62,"context_line":"        if state \u003d\u003d stDump:"},{"line_number":63,"context_line":"            yield \u0027\u0027.encode().join(["},{"line_number":64,"context_line":"                base64.b64decode(x) for x in certLines])"},{"line_number":65,"context_line":"            state \u003d stSpam"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_435fd940","line":63,"updated":"2020-03-16 18:04:00.000000000","message":"I feel like utf-8 should be specified here but this isn\u0027t your bug so maybe don\u0027t need to touch it and risk changing anything. :D","commit_id":"c7d514c3e0e05c643267e8cc254d4d3618da5b12"}]}
