)]}'
{"octavia/amphorae/drivers/haproxy/ssh_driver.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c854adb2324db605e7683b3aab47d77e16c862e9","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        if certs[\u0027tls_cert\u0027] is not None:"},{"line_number":244,"context_line":"            data.append(cert_parser.build_pem(certs[\u0027tls_cert\u0027]))"},{"line_number":245,"context_line":"        if certs[\u0027sni_certs\u0027]:"},{"line_number":246,"context_line":"                data.append(cert_parser.build_pem(certs[\u0027sni_certs\u0027]))"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        if data:"},{"line_number":249,"context_line":"            cert_dir \u003d os.path.join(self.amp_config.base_cert_dir, listener.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_3de6d0b4","line":246,"updated":"2015-08-04 23:03:19.000000000","message":"I think this won\u0027t work because build_pem() expects a single Cert but sni_certs is a list?","commit_id":"002000e7f9418faa9e42888231f69111acaed671"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"554bbcdb52386f3b8627b49e61d53f74876c590e","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        if certs[\u0027tls_cert\u0027] is not None:"},{"line_number":244,"context_line":"            data.append(cert_parser.build_pem(certs[\u0027tls_cert\u0027]))"},{"line_number":245,"context_line":"        if certs[\u0027sni_certs\u0027]:"},{"line_number":246,"context_line":"                data.append(cert_parser.build_pem(certs[\u0027sni_certs\u0027]))"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        if data:"},{"line_number":249,"context_line":"            cert_dir \u003d os.path.join(self.amp_config.base_cert_dir, listener.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_9d727fac","line":246,"in_reply_to":"1a4dcd0f_3de6d0b4","updated":"2015-08-05 01:41:33.000000000","message":"Done","commit_id":"002000e7f9418faa9e42888231f69111acaed671"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"cd53a54673510bc75f00f78f644f8e0e2a9eadee","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        certs \u003d self._process_tls_certificates(listener)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # Generate HaProxy configuration from listener object"},{"line_number":80,"context_line":"        config \u003d self.jinja.build_config(listener, certs[\u0027tls_cert\u0027])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # Build a list of commands to send to the exec method"},{"line_number":83,"context_line":"        commands \u003d [\u0027chmod 600 {0}/haproxy.cfg\u0027.format(conf_path),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_96e07098","line":80,"updated":"2015-08-13 23:17:45.000000000","message":"Only question -- \"certs\" contains tls_cert and sni_certs, but you only generate the config using tls_cert. Is it enough that the sni_certs are uploaded to the amphora and are present in the directory with the main cert? Do they not need to be passed through to the config?","commit_id":"afc77bdf67cbfd3dc7d1c08a99e4c2dc2c2874c3"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"d17c78ce39b06b6ca7cc9dccfbd7596bc1a9f6ca","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        certs \u003d self._process_tls_certificates(listener)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # Generate HaProxy configuration from listener object"},{"line_number":80,"context_line":"        config \u003d self.jinja.build_config(listener, certs[\u0027tls_cert\u0027])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # Build a list of commands to send to the exec method"},{"line_number":83,"context_line":"        commands \u003d [\u0027chmod 600 {0}/haproxy.cfg\u0027.format(conf_path),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_99c65c67","line":80,"in_reply_to":"1a4dcd0f_96e07098","updated":"2015-08-17 19:20:57.000000000","message":"Haproxy will attempt to match the cert based on sni header passed with most browsers when this it is available. As long as the certs are in the right place that is configured for the certs location Haproxy will do what it needs. Just to further clarify behavior: if Haproxy cannot find a match it will use the configured default certificate, or, in this case the \u0027tls_cert\u0027.\n\nAlso, something that will need to be added with the \u0027content switching\u0027 or L7 features will need to be the ability to add rules for certs. This is something that still needs to be worked on if we want it.","commit_id":"afc77bdf67cbfd3dc7d1c08a99e4c2dc2c2874c3"}],"octavia/common/tls_utils/cert_parser.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c854adb2324db605e7683b3aab47d77e16c862e9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                check_only\u003dTrue))"},{"line_number":173,"context_line":"        if listener.sni_containers:"},{"line_number":174,"context_line":"            for sni_cont in listener.sni_containers:"},{"line_number":175,"context_line":"                bbq_container \u003d _map_cert_tls_container("},{"line_number":176,"context_line":"                    client.get_cert(sni_cont.tls_container.id,"},{"line_number":177,"context_line":"                                    check_only\u003dTrue))"},{"line_number":178,"context_line":"                sni_certs.append(bbq_container)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_1dc0b4df","line":175,"updated":"2015-08-04 23:03:19.000000000","message":"bbq_container (which I assume is a reference to Barbican) is leaking implementation details. I don\u0027t think it even is specifically a Barbican Container specifically, since you should be using the CertManager interface the whole way through.","commit_id":"002000e7f9418faa9e42888231f69111acaed671"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"554bbcdb52386f3b8627b49e61d53f74876c590e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                check_only\u003dTrue))"},{"line_number":173,"context_line":"        if listener.sni_containers:"},{"line_number":174,"context_line":"            for sni_cont in listener.sni_containers:"},{"line_number":175,"context_line":"                bbq_container \u003d _map_cert_tls_container("},{"line_number":176,"context_line":"                    client.get_cert(sni_cont.tls_container.id,"},{"line_number":177,"context_line":"                                    check_only\u003dTrue))"},{"line_number":178,"context_line":"                sni_certs.append(bbq_container)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_7d6f73c5","line":175,"in_reply_to":"1a4dcd0f_1dc0b4df","updated":"2015-08-05 01:41:33.000000000","message":"Done","commit_id":"002000e7f9418faa9e42888231f69111acaed671"}],"octavia/tests/unit/common/tls_utils/test_cert_parser.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c854adb2324db605e7683b3aab47d77e16c862e9","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                cert_parser.load_certificates_data(client, listener)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"                # Ensure upload_cert is called three times"},{"line_number":276,"context_line":"                calls_bbq \u003d ["},{"line_number":277,"context_line":"                    mock.call.get_cert(\u0027cont_id_1\u0027, check_only\u003dTrue),"},{"line_number":278,"context_line":"                    mock.call.get_cert(\u0027cont_id_2\u0027, check_only\u003dTrue),"},{"line_number":279,"context_line":"                    mock.call.get_cert(\u0027cont_id_3\u0027, check_only\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_bd442074","line":276,"updated":"2015-08-04 23:03:19.000000000","message":"Again this shouldn\u0027t be specific to Barbican, so the naming is incorrectly suggestive.","commit_id":"002000e7f9418faa9e42888231f69111acaed671"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"554bbcdb52386f3b8627b49e61d53f74876c590e","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                cert_parser.load_certificates_data(client, listener)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"                # Ensure upload_cert is called three times"},{"line_number":276,"context_line":"                calls_bbq \u003d ["},{"line_number":277,"context_line":"                    mock.call.get_cert(\u0027cont_id_1\u0027, check_only\u003dTrue),"},{"line_number":278,"context_line":"                    mock.call.get_cert(\u0027cont_id_2\u0027, check_only\u003dTrue),"},{"line_number":279,"context_line":"                    mock.call.get_cert(\u0027cont_id_3\u0027, check_only\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_bd75fb98","line":276,"in_reply_to":"1a4dcd0f_bd442074","updated":"2015-08-05 01:41:33.000000000","message":"Done","commit_id":"002000e7f9418faa9e42888231f69111acaed671"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c854adb2324db605e7683b3aab47d77e16c862e9","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                                       private_key\u003d\u0027imaPrivateKey\u0027,"},{"line_number":287,"context_line":"                                       intermediates\u003d[\u0027imainter1\u0027,"},{"line_number":288,"context_line":"                                                      \u0027imainter2\u0027])"},{"line_number":289,"context_line":"        cert \u003d mock.MagicMock()"},{"line_number":290,"context_line":"        cert.get_private_key.return_value \u003d tls.private_key"},{"line_number":291,"context_line":"        cert.get_certificate.return_value \u003d tls.certificate"},{"line_number":292,"context_line":"        cert.get_intermediates.return_value \u003d tls.intermediates"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_5d7ddcaf","line":289,"updated":"2015-08-04 23:03:19.000000000","message":"Doesn\u0027t matter a *whole lot*, but you could easily spec this on the cert container interface?","commit_id":"002000e7f9418faa9e42888231f69111acaed671"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"554bbcdb52386f3b8627b49e61d53f74876c590e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                                       private_key\u003d\u0027imaPrivateKey\u0027,"},{"line_number":287,"context_line":"                                       intermediates\u003d[\u0027imainter1\u0027,"},{"line_number":288,"context_line":"                                                      \u0027imainter2\u0027])"},{"line_number":289,"context_line":"        cert \u003d mock.MagicMock()"},{"line_number":290,"context_line":"        cert.get_private_key.return_value \u003d tls.private_key"},{"line_number":291,"context_line":"        cert.get_certificate.return_value \u003d tls.certificate"},{"line_number":292,"context_line":"        cert.get_intermediates.return_value \u003d tls.intermediates"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_dd780792","line":289,"in_reply_to":"1a4dcd0f_5d7ddcaf","updated":"2015-08-05 01:41:33.000000000","message":"Done","commit_id":"002000e7f9418faa9e42888231f69111acaed671"}]}
