)]}'
{"octavia/amphorae/drivers/haproxy/jinja/jinja_cfg.py":[{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"33876adb35691c44e8d75c4265ec9f3aae8c1702","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            ret_value[\u0027connection_limit\u0027] \u003d listener.connection_limit"},{"line_number":165,"context_line":"        if listener.tls_certificate_id:"},{"line_number":166,"context_line":"            ret_value[\u0027default_tls_path\u0027] \u003d \u0027%s/%s/%s.pem\u0027 % ("},{"line_number":167,"context_line":"                self.cert_store_path, listener.id, tls_cert.primary_cn)"},{"line_number":168,"context_line":"        if listener.sni_containers:"},{"line_number":169,"context_line":"            ret_value[\u0027crt_dir\u0027] \u003d \u0027%s/%s\u0027 % ("},{"line_number":170,"context_line":"                self.cert_store_path, listener.id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_bc6f53fb","side":"PARENT","line":167,"updated":"2015-06-22 16:13:27.000000000","message":"os.path.join()","commit_id":"1694086cd10c159f9ed40d1ec568236ba10cf419"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"33876adb35691c44e8d75c4265ec9f3aae8c1702","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    constants.DEGRADED,)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"BASE_PATH \u003d \u0027/var/lib/octavia\u0027"},{"line_number":39,"context_line":"BASE_CRT_DIR \u003d \u0027/var/lib/octavia/certs\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"HAPROXY_TEMPLATE \u003d os.path.abspath("},{"line_number":42,"context_line":"    os.path.join(os.path.dirname(__file__),"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_9c6ccf09","line":39,"updated":"2015-06-22 16:13:27.000000000","message":"nit: BASE_PATH + \u0027/certs\u0027","commit_id":"b4b376c8d23e1fcb2bf81e2671620695a9802252"}],"octavia/amphorae/drivers/haproxy/ssh_driver.py":[{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"33876adb35691c44e8d75c4265ec9f3aae8c1702","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        tls_cert \u003d None"},{"line_number":223,"context_line":"        sni_certs \u003d []"},{"line_number":224,"context_line":"        cert_dir \u003d \u0027{0}/{1}/certificates\u0027.format(self.amp_config.base_path,"},{"line_number":225,"context_line":"                                                 listener.id)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        data \u003d []"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_1caaff19","side":"PARENT","line":225,"updated":"2015-06-22 16:13:27.000000000","message":"os.path.join()","commit_id":"1694086cd10c159f9ed40d1ec568236ba10cf419"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"33876adb35691c44e8d75c4265ec9f3aae8c1702","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                data.append(cert_parser.build_pem(bbq_container))"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        if data:"},{"line_number":241,"context_line":"            cert_dir \u003d \u0027{0}/{1}\u0027.format("},{"line_number":242,"context_line":"                self.amp_config.base_cert_dir, listener.id)"},{"line_number":243,"context_line":"            listener_cert \u003d \u0027{0}/{1}.pem\u0027.format(cert_dir, tls_cert.primary_cn)"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_3ca58346","line":241,"updated":"2015-06-22 16:13:27.000000000","message":"os.path.join()","commit_id":"b4b376c8d23e1fcb2bf81e2671620695a9802252"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"0bdf0e0e8ae9180ced252b9fb77de16f8927db56","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                return"},{"line_number":216,"context_line":"        raise exc.UnavailableException()"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def _process_tls_certificates(self, listener):"},{"line_number":219,"context_line":"        \"\"\"Processes TLS data from the listener."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        Converts and uploads PEM data to the Amphora API"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_d9319e5a","line":218,"updated":"2015-07-08 23:40:02.000000000","message":"now as the REST driver is in - can we refactor that into some common area since I will need that as well","commit_id":"98aa94f5d5f3b98deaa7fe850e93dd7214062fcd"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"92f78dc9fafec632f5e10251abe81147865e5465","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                return"},{"line_number":216,"context_line":"        raise exc.UnavailableException()"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def _process_tls_certificates(self, listener):"},{"line_number":219,"context_line":"        \"\"\"Processes TLS data from the listener."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        Converts and uploads PEM data to the Amphora API"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_cc8777b3","line":218,"in_reply_to":"ba3cc151_d9319e5a","updated":"2015-07-16 03:48:13.000000000","message":"Can we make this part of another patch? I was hoping to just get things hooked up so it can actually be used without checking out many patches.","commit_id":"98aa94f5d5f3b98deaa7fe850e93dd7214062fcd"}],"octavia/certificates/manager/cert_mgr.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"8215728cc1a0df27c012bd238bc850f3552bdf1f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        pass"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @abc.abstractmethod"},{"line_number":54,"context_line":"    def delete_cert(self, cert_ref, resource_ref):"},{"line_number":55,"context_line":"        \"\"\"Deletes the specified cert."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        If the specified cert does not exist, a CertificateStorageException"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_1c4c3f6f","line":54,"updated":"2015-06-16 04:59:15.000000000","message":"If you\u0027re changing this to NOT have kwargs, which is probably right (I don\u0027t remember why any of them have kwargs, as the *interface* signature should be static no matter the implementation), then the barbican.py implementation doesn\u0027t need kwargs anymore either. Could you remove that?\n\nhttps://github.com/openstack/octavia/blob/master/octavia/certificates/manager/barbican.py#L153","commit_id":"85c749a37ba71648a28fa34519da0653ccdeb3e4"}],"octavia/common/tls_utils/cert_parser.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"0bdf0e0e8ae9180ced252b9fb77de16f8927db56","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        pem \u003d []"},{"line_number":143,"context_line":"        if tls_container.intermediates:"},{"line_number":144,"context_line":"            pem \u003d tls_container.intermediates[:]"},{"line_number":145,"context_line":"        pem.extend([tls_container.certificate, tls_container.private_key])"},{"line_number":146,"context_line":"        return \"\\n\".join(pem)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba3cc151_996eb62d","line":145,"updated":"2015-07-08 23:40:02.000000000","message":"that passes the py34 gate?","commit_id":"98aa94f5d5f3b98deaa7fe850e93dd7214062fcd"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"92f78dc9fafec632f5e10251abe81147865e5465","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        pem \u003d []"},{"line_number":143,"context_line":"        if tls_container.intermediates:"},{"line_number":144,"context_line":"            pem \u003d tls_container.intermediates[:]"},{"line_number":145,"context_line":"        pem.extend([tls_container.certificate, tls_container.private_key])"},{"line_number":146,"context_line":"        return \"\\n\".join(pem)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_6ca98b23","line":145,"in_reply_to":"ba3cc151_996eb62d","updated":"2015-07-16 03:48:13.000000000","message":"I thought that was the suggested way to do this. I originally had it different until this was suggested.","commit_id":"98aa94f5d5f3b98deaa7fe850e93dd7214062fcd"}],"octavia/db/migration/alembic_migrations/versions/2351ea316465_adding_terminate_https_tls_ref_support.py":[{"author":{"_account_id":12403,"name":"Al Miller","email":"al.miller@ajmiller.net","username":"ajmiller"},"change_message_id":"2e0c44907bd8e532abf8069b783de222026937a3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                    existing_type\u003dsa.String(255), nullable\u003dTrue)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def downgrade():"},{"line_number":52,"context_line":"    query \u003d \u0027DELETE FROM protocol WHERE \"{name}\" IN (name)\u0027.format("},{"line_number":53,"context_line":"        name\u003dnew_protocol)"},{"line_number":54,"context_line":"    op.execute(query)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_c5098985","line":51,"updated":"2015-07-29 15:41:13.000000000","message":"Delete the downgrade.","commit_id":"e88114f8f7f13099725215e40f520548660dfd6c"},{"author":{"_account_id":7398,"name":"Carlos Garza","email":"carlos.garza@rackspace.com","username":"crc32"},"change_message_id":"8ace731614412cffd2fc143e2479a53d5ade4cbd","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        ]"},{"line_number":46,"context_line":"    )"},{"line_number":47,"context_line":"    op.alter_column(u\u0027listener\u0027, u\u0027tls_certificate_id\u0027,"},{"line_number":48,"context_line":"                    existing_type\u003dsa.String(255), nullable\u003dTrue)    "}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_c16e4fc7","line":48,"updated":"2015-07-29 19:26:41.000000000","message":"PEP8 fix","commit_id":"2f3f4313a4b93531d518718571e3bdd493f56af0"}],"octavia/tests/unit/amphorae/backends/agent/api_server/test_listener.py":[{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"33876adb35691c44e8d75c4265ec9f3aae8c1702","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(ListenerTestCase, self).setUp()"},{"line_number":27,"context_line":"        self.jinja_cfg \u003d jinja_cfg.JinjaTemplater("},{"line_number":28,"context_line":"            base_amp_path\u003d\u0027/var/lib/octavia\u0027,"},{"line_number":29,"context_line":"            base_crt_dir\u003d\u0027/var/lib/octavia/certs\u0027)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_parse_haproxy_config(self):"},{"line_number":32,"context_line":"        # template_tls"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_dc625716","line":29,"updated":"2015-06-22 16:13:27.000000000","message":"you know what\u0027s coming...","commit_id":"b4b376c8d23e1fcb2bf81e2671620695a9802252"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"33876adb35691c44e8d75c4265ec9f3aae8c1702","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            self.assertEqual(\u0027/var/lib/octavia/sample_listener_id_1.sock\u0027,"},{"line_number":47,"context_line":"                             res[\u0027stats_socket\u0027])"},{"line_number":48,"context_line":"            self.assertEqual("},{"line_number":49,"context_line":"                \u0027/var/lib/octavia/certs/sample_listener_id_1/FakeCN.pem\u0027,"},{"line_number":50,"context_line":"                res[\u0027ssl_crt\u0027])"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        # render_template_tls_no_sni"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_fc65db1c","line":49,"updated":"2015-06-22 16:13:27.000000000","message":"and again..","commit_id":"b4b376c8d23e1fcb2bf81e2671620695a9802252"},{"author":{"_account_id":10477,"name":"min wang","email":"swiftwangster@gmail.com","username":"minwang"},"change_message_id":"ae487a4d983f53e893dc000b4315ee1bb1d9522d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        with mock.patch(\u0027__builtin__.open\u0027, m, create\u003dTrue):"},{"line_number":47,"context_line":"            res \u003d listener._parse_haproxy_file(\u0027123\u0027)"},{"line_number":48,"context_line":"            self.assertEqual(\u0027TERMINATED_HTTPS\u0027, res[\u0027mode\u0027])"},{"line_number":49,"context_line":"            self.assertEqual(\u0027/var/lib/octavia/sample_listener_id_1.sock\u0027,"},{"line_number":50,"context_line":"                             res[\u0027stats_socket\u0027])"},{"line_number":51,"context_line":"            self.assertEqual("},{"line_number":52,"context_line":"                \u0027/var/lib/octavia/certs/sample_listener_id_1/FakeCN.pem\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_5da8cc20","line":49,"updated":"2015-06-26 00:28:34.000000000","message":"the same comment as below","commit_id":"033510cf912671a05b50030f5b08b580d6d0b024"},{"author":{"_account_id":10477,"name":"min wang","email":"swiftwangster@gmail.com","username":"minwang"},"change_message_id":"ae487a4d983f53e893dc000b4315ee1bb1d9522d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            self.assertEqual(\u0027/var/lib/octavia/sample_listener_id_1.sock\u0027,"},{"line_number":50,"context_line":"                             res[\u0027stats_socket\u0027])"},{"line_number":51,"context_line":"            self.assertEqual("},{"line_number":52,"context_line":"                \u0027/var/lib/octavia/certs/sample_listener_id_1/FakeCN.pem\u0027,"},{"line_number":53,"context_line":"                res[\u0027ssl_crt\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # render_template_tls_no_sni"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_3dbf0862","line":52,"updated":"2015-06-26 00:28:34.000000000","message":"I noticed that on line 68, you use BASE_AMP_PATH + \ninstead of /var/lib/octavia/, is that possible to use the same style here ?","commit_id":"033510cf912671a05b50030f5b08b580d6d0b024"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"f7a174014b51324fa304e3df882746b9b1a9125b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            self.assertEqual(\u0027/var/lib/octavia/sample_listener_id_1.sock\u0027,"},{"line_number":50,"context_line":"                             res[\u0027stats_socket\u0027])"},{"line_number":51,"context_line":"            self.assertEqual("},{"line_number":52,"context_line":"                \u0027/var/lib/octavia/certs/sample_listener_id_1/FakeCN.pem\u0027,"},{"line_number":53,"context_line":"                res[\u0027ssl_crt\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # render_template_tls_no_sni"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_ed78cbfa","line":52,"updated":"2015-07-07 07:38:08.000000000","message":"Technically didn\u0027t address Doug\u0027s comment here, this could be fixed to use BASE_CRT_PATH (and os.path.join probably, though this is getting really pedantic -- unless we expect this to run on windows systems?).","commit_id":"31de2a32732cbed2e0380c4e9a6983a65eb973f4"}],"octavia/tests/unit/amphorae/drivers/haproxy/test_ssh_driver.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7fd0f610b75cf122f4a2da9db702f174d9c8aff6","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                    mock.call(mock.ANY),"},{"line_number":92,"context_line":"                    mock.call(mock.ANY),"},{"line_number":93,"context_line":"                    mock.call(mock.ANY),"},{"line_number":94,"context_line":"                    mock.call(mock.ANY)"},{"line_number":95,"context_line":"                ])"},{"line_number":96,"context_line":"                self.driver.client.close.assert_called_once_with()"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_470bf22b","line":94,"updated":"2015-07-30 23:14:47.000000000","message":"I feel like overuse of mock.ANY is a little bit lazy, BUT it is possible it is necessary in this case? There are definitely instances where it can be difficult to mock these things, but often that means that the underlying code could be rewritten in a cleaner fashion...\n\nAll that said, I\u0027d really like to see this merge so I\u0027ll not complain too loudly. :P","commit_id":"74937761c85d4c67d9f1a969149c392b4d8dc08b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7fd0f610b75cf122f4a2da9db702f174d9c8aff6","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        # Execute driver method"},{"line_number":105,"context_line":"        self.driver.start(listener, vip)"},{"line_number":106,"context_line":"        self.driver.client.connect.assert_called_once_with("},{"line_number":107,"context_line":"            hostname\u003dlistener.load_balancer.amphorae[0].lb_network_ip,"},{"line_number":108,"context_line":"            key_filename\u003dself.driver.amp_config.key_path,"},{"line_number":109,"context_line":"            username\u003dself.driver.amp_config.username)"},{"line_number":110,"context_line":"        self.driver.client.exec_command.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_d9028609","line":107,"updated":"2015-07-30 23:14:47.000000000","message":"Just looking at the first amphora? Is there only one in this test? Use of [0] is generally a red flag, but not sure of the circumstances here.","commit_id":"74937761c85d4c67d9f1a969149c392b4d8dc08b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7fd0f610b75cf122f4a2da9db702f174d9c8aff6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        # Execute driver method"},{"line_number":122,"context_line":"        self.driver.start(listener, vip)"},{"line_number":123,"context_line":"        self.driver.client.connect.assert_called_once_with("},{"line_number":124,"context_line":"            hostname\u003dlistener.load_balancer.amphorae[0].lb_network_ip,"},{"line_number":125,"context_line":"            key_filename\u003dself.driver.amp_config.key_path,"},{"line_number":126,"context_line":"            username\u003dself.driver.amp_config.username)"},{"line_number":127,"context_line":"        self.driver.client.exec_command.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_990cfe3c","line":124,"updated":"2015-07-30 23:14:47.000000000","message":"Same.","commit_id":"74937761c85d4c67d9f1a969149c392b4d8dc08b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7fd0f610b75cf122f4a2da9db702f174d9c8aff6","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        # Verify call"},{"line_number":143,"context_line":"        self.driver.client.connect.assert_called_once_with("},{"line_number":144,"context_line":"            hostname\u003dlistener.load_balancer.amphorae[0].lb_network_ip,"},{"line_number":145,"context_line":"            key_filename\u003dself.driver.amp_config.key_path,"},{"line_number":146,"context_line":"            username\u003dself.driver.amp_config.username)"},{"line_number":147,"context_line":"        exec_command_calls \u003d ["}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_f91bc271","line":144,"updated":"2015-07-30 23:14:47.000000000","message":"Same.","commit_id":"74937761c85d4c67d9f1a969149c392b4d8dc08b"}]}
