)]}'
{"neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py":[{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"f29b7ef7de7bb11a580e8597165e93ad59d4beb8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \u0027jinja_config_template\u0027,"},{"line_number":67,"context_line":"        default\u003dos.path.join("},{"line_number":68,"context_line":"            TEMPLATES_DIR,"},{"line_number":69,"context_line":"            \u0027haproxy.template\u0027),"},{"line_number":70,"context_line":"        help\u003d_(\u0027Jinja template file for haproxy configuration\u0027))"},{"line_number":71,"context_line":"]"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_5a48ebb2","line":69,"updated":"2015-03-13 17:30:19.000000000","message":"I use for jinja2 templates the ending haproxy.cfg.j2 -- instead of templat","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"eb97e44bce168dc0c6fab701b41769dee752eea9","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        \u0027jinja_config_template\u0027,"},{"line_number":67,"context_line":"        default\u003dos.path.join("},{"line_number":68,"context_line":"            TEMPLATES_DIR,"},{"line_number":69,"context_line":"            \u0027haproxy.template\u0027),"},{"line_number":70,"context_line":"        help\u003d_(\u0027Jinja template file for haproxy configuration\u0027))"},{"line_number":71,"context_line":"]"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_a279bd83","line":69,"in_reply_to":"9a80dd14_5a48ebb2","updated":"2015-03-13 18:48:45.000000000","message":"Fair enough, ill make this change.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"90376d5332e0f533b6b2c6a7e8e14bc8a4c8b421","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    if state_path and listener.id:"},{"line_number":108,"context_line":"        conf_dir \u003d _retrieve_data_dir(state_path, listener)"},{"line_number":109,"context_line":"        if not os.path.isdir(conf_dir):"},{"line_number":110,"context_line":"            os.makedirs(conf_dir, 0o755)"},{"line_number":111,"context_line":"        return os.path.join("},{"line_number":112,"context_line":"            conf_dir, \u0027{0}.pem\u0027.format(primary_cn))"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_cb797c30","line":110,"updated":"2015-03-13 16:58:32.000000000","message":"Curiosity: what does the little \"o\" do here?  I used the python interpreter to test both 0o755 and 0755 and couldn\u0027t really see a difference.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"a0781907addc17738d03ec20e6aec202cb9528d4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    if state_path and listener.id:"},{"line_number":108,"context_line":"        conf_dir \u003d _retrieve_data_dir(state_path, listener)"},{"line_number":109,"context_line":"        if not os.path.isdir(conf_dir):"},{"line_number":110,"context_line":"            os.makedirs(conf_dir, 0o755)"},{"line_number":111,"context_line":"        return os.path.join("},{"line_number":112,"context_line":"            conf_dir, \u0027{0}.pem\u0027.format(primary_cn))"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_916969fb","line":110,"in_reply_to":"9a80dd14_3aeed7ed","updated":"2015-03-13 18:07:54.000000000","message":"I\u0027m not sure what\u0027s supposed to happen then, because the permissions on the directory are the same between 0755 versus 0o755.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"f29b7ef7de7bb11a580e8597165e93ad59d4beb8","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    if state_path and listener.id:"},{"line_number":108,"context_line":"        conf_dir \u003d _retrieve_data_dir(state_path, listener)"},{"line_number":109,"context_line":"        if not os.path.isdir(conf_dir):"},{"line_number":110,"context_line":"            os.makedirs(conf_dir, 0o755)"},{"line_number":111,"context_line":"        return os.path.join("},{"line_number":112,"context_line":"            conf_dir, \u0027{0}.pem\u0027.format(primary_cn))"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_3aeed7ed","line":110,"in_reply_to":"9a80dd14_7fbda167","updated":"2015-03-13 17:30:19.000000000","message":"my hunch was correct 0o\u003dOctal (see http://stackoverflow.com/questions/11620151/what-do-numbers-starting-with-0-mean-in-python)","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"eb555487e6105f098abfab7a0624e140bb16aaba","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    if state_path and listener.id:"},{"line_number":108,"context_line":"        conf_dir \u003d _retrieve_data_dir(state_path, listener)"},{"line_number":109,"context_line":"        if not os.path.isdir(conf_dir):"},{"line_number":110,"context_line":"            os.makedirs(conf_dir, 0o755)"},{"line_number":111,"context_line":"        return os.path.join("},{"line_number":112,"context_line":"            conf_dir, \u0027{0}.pem\u0027.format(primary_cn))"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_7fbda167","line":110,"in_reply_to":"9a80dd14_cb797c30","updated":"2015-03-13 17:10:32.000000000","message":"Not quite sure honestly, im following what was done previously.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"f29b7ef7de7bb11a580e8597165e93ad59d4beb8","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    if tls_cert.intermediates:"},{"line_number":179,"context_line":"        for c in tls_cert.intermediates:"},{"line_number":180,"context_line":"            pem \u003d pem + (c,)"},{"line_number":181,"context_line":"    return \"\\n\".join(pem)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_1aa11394","line":181,"updated":"2015-03-13 17:30:19.000000000","message":"why do we here join and above + -- I am also not sure why we need to start with a blank line","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"efcdec630dbb1f6e6ad86829fb8d48b5e43d25df","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    if tls_cert.intermediates:"},{"line_number":179,"context_line":"        for c in tls_cert.intermediates:"},{"line_number":180,"context_line":"            pem \u003d pem + (c,)"},{"line_number":181,"context_line":"    return \"\\n\".join(pem)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_645fd5e5","line":181,"in_reply_to":"9a80dd14_1aa11394","updated":"2015-03-13 18:13:22.000000000","message":"The \u0027blank\u0027 one is because if the \u0027if\u0027s are false there would be nothing to join and that would fail/raise exception etc. If ALL of these values are None it wont make it here regardless. Im sure this could be written differently and would take any suggestions. I wrote this one quickly/sorta hacky as i was hoping this was something that could have moved/made it to the tlsUtils as IMO it should be a function of that class and not something built here.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"90376d5332e0f533b6b2c6a7e8e14bc8a4c8b421","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_d90b0d22","line":185,"updated":"2015-03-13 16:58:32.000000000","message":"Should these elements be made \"optional\" as you\u0027ve done here?  If they are, should there be some kind of defaults or something?","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"52c68cdc0a37ae0dd0bcc46ea1d36305578498ac","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_e8d46aea","line":185,"in_reply_to":"9a80dd14_82a119fa","updated":"2015-03-14 01:06:03.000000000","message":"+1 making them required","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"eb97e44bce168dc0c6fab701b41769dee752eea9","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_82a119fa","line":185,"in_reply_to":"9a80dd14_91d6c94d","updated":"2015-03-13 18:48:45.000000000","message":"My point was that i woulnt want this class accessing the config, the options should be passed from the driver. And if the driver cant build a state path theres going to be other errors above this. Maybe i should just make this required..","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"efcdec630dbb1f6e6ad86829fb8d48b5e43d25df","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_e43ae5cb","line":185,"in_reply_to":"9a80dd14_ba7f2716","updated":"2015-03-13 18:13:22.000000000","message":"Defaults from the config? Sure, but they would still be passed in from the driver. And these particular values are generated by the system for the \u0027real\u0027 ones. So, if they system is functioning then the real values will be passed, if not itll never make it here anyway.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":11302,"name":"Phillip Toohill","email":"phillip.toohill@rackspace.com","username":"ptoohill1"},"change_message_id":"eb555487e6105f098abfab7a0624e140bb16aaba","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_df3dadde","line":185,"in_reply_to":"9a80dd14_d90b0d22","updated":"2015-03-13 17:10:32.000000000","message":"I suppose we could make defaults, or i may just make them required. Not sure i want to specify a default where things will be written when I(the templater) has no idea of where thing need to go.","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"a0781907addc17738d03ec20e6aec202cb9528d4","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_91d6c94d","line":185,"in_reply_to":"9a80dd14_df3dadde","updated":"2015-03-13 18:07:54.000000000","message":"German for 3 of those arguments sure, but is socket_path going to be a config option?","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"f29b7ef7de7bb11a580e8597165e93ad59d4beb8","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def render_loadbalancer_obj(loadbalancer, user_group\u003dNone, socket_path\u003dNone,"},{"line_number":185,"context_line":"                            state_path\u003dNone, data_dir\u003dNone):"},{"line_number":186,"context_line":"    loadbalancer \u003d _transform_loadbalancer(loadbalancer,"},{"line_number":187,"context_line":"                                           state_path\u003dstate_path)"},{"line_number":188,"context_line":"    return _get_template().render({\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_ba7f2716","line":185,"in_reply_to":"9a80dd14_df3dadde","updated":"2015-03-13 17:30:19.000000000","message":"I would assume you can pull that out of the CONFIG?","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"90376d5332e0f533b6b2c6a7e8e14bc8a4c8b421","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                  constants\u003dconstants)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"def _transform_loadbalancer(loadbalancer, state_path\u003dNone):"},{"line_number":195,"context_line":"    listeners \u003d [_transform_listener("},{"line_number":196,"context_line":"        x,"},{"line_number":197,"context_line":"        state_path\u003dstate_path) for x in loadbalancer.listeners]"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_7975c196","line":194,"updated":"2015-03-13 16:58:32.000000000","message":"Same as above","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"90376d5332e0f533b6b2c6a7e8e14bc8a4c8b421","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    }"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"def _transform_listener(listener, state_path\u003dNone):"},{"line_number":206,"context_line":"    data_dir \u003d os.path.join(state_path, listener.id)"},{"line_number":207,"context_line":"    ret_value \u003d {"},{"line_number":208,"context_line":"        \u0027id\u0027: listener.id,"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_395fc910","line":205,"updated":"2015-03-13 16:58:32.000000000","message":"Same as above","commit_id":"d9ad9fc9a54e3920e894d6c8ee77b90f4767a8eb"}]}
