)]}'
{"elements/amphora-agent/install.d/75-run_setup_install":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# we assume certs, etc will come in through the config drive"},{"line_number":16,"context_line":"mkdir /etc/octavia/certs"},{"line_number":17,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":18,"context_line":"    mkdir /var/lib/octavia"},{"line_number":19,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_357d2ce7","line":18,"range":{"start_line":18,"start_character":4,"end_line":18,"end_character":26},"updated":"2017-04-03 16:19:25.000000000","message":"nit: You could add \"-p\" here just to make sure it is successful","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# we assume certs, etc will come in through the config drive"},{"line_number":16,"context_line":"mkdir /etc/octavia/certs"},{"line_number":17,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":18,"context_line":"    mkdir /var/lib/octavia"},{"line_number":19,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_8864cee5","line":18,"range":{"start_line":18,"start_character":4,"end_line":18,"end_character":26},"in_reply_to":"dfeb2761_357d2ce7","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":14,"context_line":"mkdir /etc/octavia"},{"line_number":15,"context_line":"# we assume certs, etc will come in through the config drive"},{"line_number":16,"context_line":"mkdir /etc/octavia/certs"},{"line_number":17,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":18,"context_line":"    mkdir -p /var/lib/octavia"},{"line_number":19,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"5ff73747_66d6c452","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":35},"updated":"2017-04-22 00:54:17.000000000","message":"nit: this isn\u0027t necessary as mkdir -p will return successful if the directory exists.\nNot worth another patch unless one is needed for something else.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":14,"context_line":"mkdir /etc/octavia"},{"line_number":15,"context_line":"# we assume certs, etc will come in through the config drive"},{"line_number":16,"context_line":"mkdir /etc/octavia/certs"},{"line_number":17,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":18,"context_line":"    mkdir -p /var/lib/octavia"},{"line_number":19,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"5ff73747_1f5f3e42","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":35},"in_reply_to":"5ff73747_66d6c452","updated":"2017-04-23 14:46:38.000000000","message":"Done","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"}],"elements/haproxy-octavia-ubuntu/post-install.d/20-haproxy-user-group-config":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"db9db5b40afd7e30626ee2548d4b50915fc60859","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"dfeb2761_93e78ce5","updated":"2017-04-02 19:54:11.000000000","message":"IMO we should just rely entirely on this being baked in.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"dfeb2761_9593d8fa","in_reply_to":"dfeb2761_93e78ce5","updated":"2017-04-03 16:19:25.000000000","message":"I think this is the right way to do it.  We want to consolidate the haproxy element into one anyway.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":16,"context_line":"    mkdir /var/lib/octavia"},{"line_number":17,"context_line":"fi"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_15eb4879","line":16,"range":{"start_line":16,"start_character":4,"end_line":16,"end_character":26},"updated":"2017-04-03 16:19:25.000000000","message":"This is duplicated with the \"install\" step.  I don\u0027t think we need both.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":16,"context_line":"    mkdir /var/lib/octavia"},{"line_number":17,"context_line":"fi"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_289f02b5","line":16,"range":{"start_line":16,"start_character":4,"end_line":16,"end_character":26},"in_reply_to":"dfeb2761_15eb4879","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    fedora | centos* | rhel* )"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":16,"context_line":"global"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"5ff73747_26d0bc50","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":4},"updated":"2017-04-22 00:54:17.000000000","message":"same default comment applies here","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    fedora | centos* | rhel* )"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":16,"context_line":"global"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"5ff73747_ff093231","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":4},"in_reply_to":"5ff73747_26d0bc50","updated":"2017-04-23 14:46:38.000000000","message":"Done, added a default value \u0027nogroup\u0027","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"}],"elements/haproxy-octavia/post-install.d/20-haproxy-user-group-config":[{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"7897ca80b7305d0df7fb4436977b14bbc3ef873f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    mkdir /var/lib/octavia"},{"line_number":18,"context_line":"fi"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":21,"context_line":"global"},{"line_number":22,"context_line":"    group $HAPROXY_USER_GROUP"},{"line_number":23,"context_line":"EOF"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"da36d5c6_eb2d9cfe","line":20,"updated":"2017-02-26 22:51:34.000000000","message":"@Michael\nI\u0027m not sure why, but it seems like this file is not part of the amp image, any idea?","commit_id":"5e731860828b13ca434c264873ff974520890080"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    \u0027ubuntu\u0027|\u0027debian\u0027)"},{"line_number":8,"context_line":"        HAPROXY_USER_GROUP\u003dnogroup"},{"line_number":9,"context_line":"    ;;"},{"line_number":10,"context_line":"    \u0027fedora\u0027|\u0027centos7\u0027|\u0027centos\u0027|\u0027rhel7\u0027|\u0027rhel\u0027)"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_1547c87a","line":10,"range":{"start_line":10,"start_character":33,"end_line":10,"end_character":45},"updated":"2017-04-03 16:19:25.000000000","message":"Maybe we should create a new line for rhel and use the ~ to regex it.  I.e. rhel*\nI don\u0027t want to have a problem when rhel10 comes out, etc.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    \u0027ubuntu\u0027|\u0027debian\u0027)"},{"line_number":8,"context_line":"        HAPROXY_USER_GROUP\u003dnogroup"},{"line_number":9,"context_line":"    ;;"},{"line_number":10,"context_line":"    \u0027fedora\u0027|\u0027centos7\u0027|\u0027centos\u0027|\u0027rhel7\u0027|\u0027rhel\u0027)"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_689aaa6e","line":10,"range":{"start_line":10,"start_character":33,"end_line":10,"end_character":45},"in_reply_to":"dfeb2761_1547c87a","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":16,"context_line":"    mkdir /var/lib/octavia"},{"line_number":17,"context_line":"fi"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":20,"context_line":"global"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_75a73451","line":17,"range":{"start_line":15,"start_character":0,"end_line":17,"end_character":2},"updated":"2017-04-03 16:19:25.000000000","message":"Same, probably don\u0027t need to do this again if it is a earlier step in the same element.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"if [ ! -d /var/lib/octavia ] ; then"},{"line_number":16,"context_line":"    mkdir /var/lib/octavia"},{"line_number":17,"context_line":"fi"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":20,"context_line":"global"}],"source_content_type":"application/x-shellscript","patch_set":24,"id":"dfeb2761_88928e9d","line":17,"range":{"start_line":15,"start_character":0,"end_line":17,"end_character":2},"in_reply_to":"dfeb2761_75a73451","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"93b6bfc603b801f77f82f37f670b00662a8a93cb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    ;;"},{"line_number":10,"context_line":"    fedora | centos* | rhel* )"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"7ffa3b31_cf1bbb7e","line":12,"updated":"2017-04-20 22:03:11.000000000","message":"Just curious if you think we should have a default case here. I don\u0027t know if it makes sense, as it really is distro dependent, but doesn\u0027t having NOTHING set make it worse than at least an educated guess?\n\nAlso, I guess we are just keeping the ubuntu element and the non-ubuntu element the same? Did we deprecate one of those? I\u0027m trying to remember why we have both, or what the point of having both is if we are able to check distro stuff inside anyway.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    ;;"},{"line_number":10,"context_line":"    fedora | centos* | rhel* )"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"5ff73747_df067621","line":12,"in_reply_to":"5ff73747_86e8b016","updated":"2017-04-23 14:46:38.000000000","message":"Done, added a default value \u0027nogroup\u0027","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"22e1cec13215978513918461f50c8f0390e7a017","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    ;;"},{"line_number":10,"context_line":"    fedora | centos* | rhel* )"},{"line_number":11,"context_line":"        HAPROXY_USER_GROUP\u003dhaproxy"},{"line_number":12,"context_line":"    ;;"},{"line_number":13,"context_line":"esac"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"}],"source_content_type":"application/x-shellscript","patch_set":42,"id":"5ff73747_86e8b016","line":12,"in_reply_to":"7ffa3b31_cf1bbb7e","updated":"2017-04-22 00:38:54.000000000","message":"We had both for legacy reasons.  We WILL merge these, it\u0027s just a matter of when.\nSince it\u0027s a controlled image I\u0027m not to concerned about this, but if we want a default I would put in nogroup as I think it applies to more distros.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"}],"elements/haproxy-octavia/post-install.d/20-haproxy-user-group-config.sh":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6d104a76a14a53eda300678af8e6b68c52353252","unresolved":false,"context_lines":[{"line_number":3,"context_line":"set -eu"},{"line_number":4,"context_line":"set -o pipefail"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":7,"context_line":"global"},{"line_number":8,"context_line":"    group haproxy"},{"line_number":9,"context_line":"EOF"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a430d35_193a6199","line":6,"updated":"2017-02-08 16:54:46.000000000","message":"Can we use \"DISTRO_NAME\" to decide what to put in the file?\nWe really want to consolidate these elements into one (no more ubuntu version).\nExample: https://github.com/openstack/diskimage-builder/blob/master/elements/rax-nova-agent/install.d/10-nova-agent#L35","commit_id":"4e6d65ec5e8de36ff852e1297a78912b9230ed7e"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"eceef7e4ac9d44d5b6baea497afb003c0033761e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"set -eu"},{"line_number":4,"context_line":"set -o pipefail"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"cat \u003e\u003e /var/lib/octavia/haproxy-default-user-group.conf \u003c\u003cEOF"},{"line_number":7,"context_line":"global"},{"line_number":8,"context_line":"    group haproxy"},{"line_number":9,"context_line":"EOF"}],"source_content_type":"text/x-sh","patch_set":4,"id":"1a430d35_3770dd71","line":6,"in_reply_to":"1a430d35_193a6199","updated":"2017-02-09 14:07:22.000000000","message":"Done","commit_id":"4e6d65ec5e8de36ff852e1297a78912b9230ed7e"}],"etc/octavia.conf":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"db9db5b40afd7e30626ee2548d4b50915fc60859","unresolved":false,"context_lines":[{"line_number":124,"context_line":"# Ubuntu: nogroup"},{"line_number":125,"context_line":"# Centos/fedora/rhel: haproxy"},{"line_number":126,"context_line":"#"},{"line_number":127,"context_line":"# user_group \u003d"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"# Maximum number of entries that can fit in the stick table."},{"line_number":130,"context_line":"# The size supports \"k\", \"m\", \"g\" suffixes."}],"source_content_type":"text/plain","patch_set":24,"id":"dfeb2761_f3725849","line":127,"updated":"2017-04-02 19:54:11.000000000","message":"I don\u0027t see the point of even offering this configuration option. The image has a specific configuration that will work -- overriding it will *only* allow for breaking things. There\u0027s no use-case I see to allowing this to be configurable if there is \"one correct choice\" and we bake that into the image.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":124,"context_line":"# Ubuntu: nogroup"},{"line_number":125,"context_line":"# Centos/fedora/rhel: haproxy"},{"line_number":126,"context_line":"#"},{"line_number":127,"context_line":"# user_group \u003d"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"# Maximum number of entries that can fit in the stick table."},{"line_number":130,"context_line":"# The size supports \"k\", \"m\", \"g\" suffixes."}],"source_content_type":"text/plain","patch_set":24,"id":"dfeb2761_288ee22d","line":127,"in_reply_to":"dfeb2761_351e4c70","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":124,"context_line":"# Ubuntu: nogroup"},{"line_number":125,"context_line":"# Centos/fedora/rhel: haproxy"},{"line_number":126,"context_line":"#"},{"line_number":127,"context_line":"# user_group \u003d"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"# Maximum number of entries that can fit in the stick table."},{"line_number":130,"context_line":"# The size supports \"k\", \"m\", \"g\" suffixes."}],"source_content_type":"text/plain","patch_set":24,"id":"dfeb2761_351e4c70","line":127,"in_reply_to":"dfeb2761_f3725849","updated":"2017-04-03 16:19:25.000000000","message":"Agree, I think we should just comment that this is deprecated and not used.\nThere is also a way in the config.py to mark it deprecated.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":124,"context_line":"# Ubuntu: nogroup"},{"line_number":125,"context_line":"# Centos/fedora/rhel: haproxy"},{"line_number":126,"context_line":"#"},{"line_number":127,"context_line":"# user_group \u003d"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"# Maximum number of entries that can fit in the stick table."},{"line_number":130,"context_line":"# The size supports \"k\", \"m\", \"g\" suffixes."}],"source_content_type":"text/plain","patch_set":24,"id":"dfeb2761_08855e08","line":127,"in_reply_to":"dfeb2761_f3725849","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"}],"octavia/amphorae/backends/agent/agent_jinja_cfg.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"db9db5b40afd7e30626ee2548d4b50915fc60859","unresolved":false,"context_lines":[{"line_number":49,"context_line":"             \u0027base_path\u0027: CONF.haproxy_amphora.base_path,"},{"line_number":50,"context_line":"             \u0027bind_host\u0027: CONF.haproxy_amphora.bind_host,"},{"line_number":51,"context_line":"             \u0027bind_port\u0027: CONF.haproxy_amphora.bind_port,"},{"line_number":52,"context_line":"             \u0027user_group\u0027: CONF.haproxy_amphora.user_group or None,"},{"line_number":53,"context_line":"             \u0027controller_list\u0027: CONF.health_manager.controller_ip_port_list,"},{"line_number":54,"context_line":"             \u0027debug\u0027: CONF.debug,"},{"line_number":55,"context_line":"             \u0027haproxy_cmd\u0027: CONF.haproxy_amphora.haproxy_cmd,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_b392904a","line":52,"updated":"2017-04-02 19:54:11.000000000","message":"Yeah, I think we should just leave this out of the config rendering here, and allow it to be baked into the image.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":49,"context_line":"             \u0027base_path\u0027: CONF.haproxy_amphora.base_path,"},{"line_number":50,"context_line":"             \u0027bind_host\u0027: CONF.haproxy_amphora.bind_host,"},{"line_number":51,"context_line":"             \u0027bind_port\u0027: CONF.haproxy_amphora.bind_port,"},{"line_number":52,"context_line":"             \u0027user_group\u0027: CONF.haproxy_amphora.user_group or None,"},{"line_number":53,"context_line":"             \u0027controller_list\u0027: CONF.health_manager.controller_ip_port_list,"},{"line_number":54,"context_line":"             \u0027debug\u0027: CONF.debug,"},{"line_number":55,"context_line":"             \u0027haproxy_cmd\u0027: CONF.haproxy_amphora.haproxy_cmd,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_b5093c32","line":52,"in_reply_to":"dfeb2761_b392904a","updated":"2017-04-03 16:19:25.000000000","message":"+1","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":49,"context_line":"             \u0027base_path\u0027: CONF.haproxy_amphora.base_path,"},{"line_number":50,"context_line":"             \u0027bind_host\u0027: CONF.haproxy_amphora.bind_host,"},{"line_number":51,"context_line":"             \u0027bind_port\u0027: CONF.haproxy_amphora.bind_port,"},{"line_number":52,"context_line":"             \u0027user_group\u0027: CONF.haproxy_amphora.user_group or None,"},{"line_number":53,"context_line":"             \u0027controller_list\u0027: CONF.health_manager.controller_ip_port_list,"},{"line_number":54,"context_line":"             \u0027debug\u0027: CONF.debug,"},{"line_number":55,"context_line":"             \u0027haproxy_cmd\u0027: CONF.haproxy_amphora.haproxy_cmd,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_88784e2a","line":52,"in_reply_to":"dfeb2761_b392904a","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":49,"context_line":"             \u0027base_path\u0027: CONF.haproxy_amphora.base_path,"},{"line_number":50,"context_line":"             \u0027bind_host\u0027: CONF.haproxy_amphora.bind_host,"},{"line_number":51,"context_line":"             \u0027bind_port\u0027: CONF.haproxy_amphora.bind_port,"},{"line_number":52,"context_line":"             \u0027user_group\u0027: CONF.haproxy_amphora.user_group or None,"},{"line_number":53,"context_line":"             \u0027controller_list\u0027: CONF.health_manager.controller_ip_port_list,"},{"line_number":54,"context_line":"             \u0027debug\u0027: CONF.debug,"},{"line_number":55,"context_line":"             \u0027haproxy_cmd\u0027: CONF.haproxy_amphora.haproxy_cmd,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_6873ca4e","line":52,"in_reply_to":"dfeb2761_b5093c32","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"93b6bfc603b801f77f82f37f670b00662a8a93cb","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            constants.AGENT_CONF_TEMPLATE)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def build_agent_config(self, amphora_id):"},{"line_number":38,"context_line":"        # TODO(nmagnezi): Remove user_group after a deprecation cycle"},{"line_number":39,"context_line":"        return self.agent_template.render("},{"line_number":40,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":41,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"}],"source_content_type":"text/x-python","patch_set":42,"id":"7ffa3b31_0f052314","line":38,"updated":"2017-04-20 22:03:11.000000000","message":"Could you put this comment *directly* above user_group, and actually put the cycle name so we can tell easily? :P \nI believe it\u0027d be ... The R release? Michael can you confirm?","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            constants.AGENT_CONF_TEMPLATE)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def build_agent_config(self, amphora_id):"},{"line_number":38,"context_line":"        # TODO(nmagnezi): Remove user_group after a deprecation cycle"},{"line_number":39,"context_line":"        return self.agent_template.render("},{"line_number":40,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":41,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_fa1b8070","line":38,"in_reply_to":"5ff73747_46406808","updated":"2017-04-23 14:46:38.000000000","message":"Done","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            constants.AGENT_CONF_TEMPLATE)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def build_agent_config(self, amphora_id):"},{"line_number":38,"context_line":"        # TODO(nmagnezi): Remove user_group after a deprecation cycle"},{"line_number":39,"context_line":"        return self.agent_template.render("},{"line_number":40,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":41,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_1a0f4c2f","line":38,"in_reply_to":"7ffa3b31_0f052314","updated":"2017-04-23 14:46:38.000000000","message":"Done","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            constants.AGENT_CONF_TEMPLATE)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def build_agent_config(self, amphora_id):"},{"line_number":38,"context_line":"        # TODO(nmagnezi): Remove user_group after a deprecation cycle"},{"line_number":39,"context_line":"        return self.agent_template.render("},{"line_number":40,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":41,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_46406808","line":38,"in_reply_to":"7ffa3b31_0f052314","updated":"2017-04-22 00:54:17.000000000","message":"Yes, R release","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a32143588f0ac6d7072981e1961f63fd35b431b2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            constants.AGENT_CONF_TEMPLATE)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def build_agent_config(self, amphora_id):"},{"line_number":38,"context_line":"        # TODO(nmagnezi): Deprecated in Pike, Should be Removed in R cycle."},{"line_number":39,"context_line":"        return self.agent_template.render("},{"line_number":40,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":41,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"}],"source_content_type":"text/x-python","patch_set":43,"id":"5ff73747_9a3b5c9b","line":38,"updated":"2017-04-23 14:46:51.000000000","message":"Now this sounds like the whole render is deprecated? lol\nI think you meant to remove this comment, as it moved down?","commit_id":"b3f5cd6556e3a03f6fa73114c8e15e748e64981d"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"6e1a17550f08fab74ff947fe7b37f1bd57b473e9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            constants.AGENT_CONF_TEMPLATE)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def build_agent_config(self, amphora_id):"},{"line_number":38,"context_line":"        # TODO(nmagnezi): Deprecated in Pike, Should be Removed in R cycle."},{"line_number":39,"context_line":"        return self.agent_template.render("},{"line_number":40,"context_line":"            {\u0027agent_server_ca\u0027: CONF.amphora_agent.agent_server_ca,"},{"line_number":41,"context_line":"             \u0027agent_server_cert\u0027: CONF.amphora_agent.agent_server_cert,"}],"source_content_type":"text/x-python","patch_set":43,"id":"5ff73747_1a706c72","line":38,"in_reply_to":"5ff73747_9a3b5c9b","updated":"2017-04-23 15:24:47.000000000","message":"Already done :)","commit_id":"b3f5cd6556e3a03f6fa73114c8e15e748e64981d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a32143588f0ac6d7072981e1961f63fd35b431b2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"             \u0027base_path\u0027: CONF.haproxy_amphora.base_path,"},{"line_number":51,"context_line":"             \u0027bind_host\u0027: CONF.haproxy_amphora.bind_host,"},{"line_number":52,"context_line":"             \u0027bind_port\u0027: CONF.haproxy_amphora.bind_port,"},{"line_number":53,"context_line":"             # TODO(nmagnezi): Deprecated in Pike, Should be Removed in R cycle"},{"line_number":54,"context_line":"             \u0027user_group\u0027: CONF.haproxy_amphora.user_group,"},{"line_number":55,"context_line":"             \u0027controller_list\u0027: CONF.health_manager.controller_ip_port_list,"},{"line_number":56,"context_line":"             \u0027debug\u0027: CONF.debug,"}],"source_content_type":"text/x-python","patch_set":43,"id":"5ff73747_7a409008","line":53,"updated":"2017-04-23 14:46:51.000000000","message":"specify user_group in the comment? If you\u0027re worried about length, just saying it can be removed in R is good enough","commit_id":"b3f5cd6556e3a03f6fa73114c8e15e748e64981d"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"6e1a17550f08fab74ff947fe7b37f1bd57b473e9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"             \u0027base_path\u0027: CONF.haproxy_amphora.base_path,"},{"line_number":51,"context_line":"             \u0027bind_host\u0027: CONF.haproxy_amphora.bind_host,"},{"line_number":52,"context_line":"             \u0027bind_port\u0027: CONF.haproxy_amphora.bind_port,"},{"line_number":53,"context_line":"             # TODO(nmagnezi): Deprecated in Pike, Should be Removed in R cycle"},{"line_number":54,"context_line":"             \u0027user_group\u0027: CONF.haproxy_amphora.user_group,"},{"line_number":55,"context_line":"             \u0027controller_list\u0027: CONF.health_manager.controller_ip_port_list,"},{"line_number":56,"context_line":"             \u0027debug\u0027: CONF.debug,"}],"source_content_type":"text/x-python","patch_set":43,"id":"5ff73747_1accec87","line":53,"in_reply_to":"5ff73747_7a409008","updated":"2017-04-23 15:24:47.000000000","message":"Done","commit_id":"b3f5cd6556e3a03f6fa73114c8e15e748e64981d"}],"octavia/amphorae/backends/agent/api_server/listener.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                b \u003d stream.read(BUFFER)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # use haproxy to check the config"},{"line_number":120,"context_line":"        cmd \u003d \"haproxy -c -L {peer} -f {config_file}\".format(config_file\u003dname,"},{"line_number":121,"context_line":"                                                             peer\u003dpeer_name)"},{"line_number":122,"context_line":"        if not CONF.haproxy_amphora.user_group:"},{"line_number":123,"context_line":"            haproxy_ug_cfg \u003d \u0027/var/lib/octavia/haproxy-default-user-group.conf\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_b837f1e3","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":54},"updated":"2017-04-03 16:19:25.000000000","message":"We can just do that here making sure the order is right.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                b \u003d stream.read(BUFFER)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # use haproxy to check the config"},{"line_number":120,"context_line":"        cmd \u003d \"haproxy -c -L {peer} -f {config_file}\".format(config_file\u003dname,"},{"line_number":121,"context_line":"                                                             peer\u003dpeer_name)"},{"line_number":122,"context_line":"        if not CONF.haproxy_amphora.user_group:"},{"line_number":123,"context_line":"            haproxy_ug_cfg \u003d \u0027/var/lib/octavia/haproxy-default-user-group.conf\u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_a8cc3261","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":54},"in_reply_to":"dfeb2761_b837f1e3","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"c9bef41dd43933d3726e864f2dc5cd6d94811450","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        with os.fdopen(os.open(name, flags, mode), \u0027wb\u0027) as file:"},{"line_number":114,"context_line":"            b \u003d stream.read(BUFFER)"},{"line_number":115,"context_line":"            # TODO(nmagnezi): WIP, need to handle cases in which old"},{"line_number":116,"context_line":"            # controllers write user_group to the haproxy.cfg. this should be"},{"line_number":117,"context_line":"            # included in the file."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"            while (b):"}],"source_content_type":"text/x-python","patch_set":25,"id":"dfeb2761_a36fb590","line":116,"range":{"start_line":116,"start_character":68,"end_line":116,"end_character":77},"updated":"2017-04-03 23:14:47.000000000","message":"*should not","commit_id":"6c7b971a2ba0f450cbb8b5801c10d4250069288f"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"678a4ef9f0a708644370dfd619293d829da0c259","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        :param amphora_id: The id of the amphora to update"},{"line_number":100,"context_line":"        :param listener_id: The id of the listener"},{"line_number":101,"context_line":"        \"\"\""},{"line_number":102,"context_line":"        stream \u003d Wrapped(flask.request.stream)"},{"line_number":103,"context_line":"        # We have to hash here because HAProxy has a string length limitation"},{"line_number":104,"context_line":"        # in the configuration file \"peer \u003cpeername\u003e\" lines"},{"line_number":105,"context_line":"        peer_name \u003d octavia_utils.base64_sha1_string(amphora_id).rstrip(\u0027\u003d\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_7e0f31e1","line":102,"updated":"2017-04-06 19:31:01.000000000","message":"Looking at what Wrapped() does, I don\u0027t think we need it anymore... Anyway, mucking with the data is going to break that md5 anyway, our data won\u0027t match...","commit_id":"5505d40c092721aae356f6a035f6aefe0295b549"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"678a4ef9f0a708644370dfd619293d829da0c259","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        with os.fdopen(os.open(name, flags, mode), \u0027wb\u0027) as file:"},{"line_number":114,"context_line":"            b \u003d stream.read(BUFFER)"},{"line_number":115,"context_line":"            while (b):"},{"line_number":116,"context_line":"                if \u0027group\u0027 in b.decode(\u0027utf8\u0027):"},{"line_number":117,"context_line":"                    # Since haproxy user_group is now auto-detected by the"},{"line_number":118,"context_line":"                    # amphora agent, Remove if from haproxy configuration"},{"line_number":119,"context_line":"                    # in case it was provided by an older Octavia controller."}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_5e2b4d2f","line":116,"updated":"2017-04-06 19:31:01.000000000","message":"I think I would opt to let the whole buffer read in, and just fix the data as a whole (since we could have \"gr\" as the last two characters in one buffer segement, and \"oup\" as the first three in the next, right?\n\nMaybe before we shove this into a file, we build it as a Stringbuffer:\n\nimport io\n# move the stream reading outside of the \"with os.fdopen\" thing\nsb \u003d io.StringIO()\n# write to sb instead of file\nwhile (b):\n    sb.write(b.decode(\u0027utf8\u0027))\n# Now parse the entire config at once\nnew_config \u003d re.sub(r\"\\s+group\\s.+\", \"\", sb.getvalue())\n\n# Now \"with os.fdopen\" write out the whole thing, but not binary mode\nwith os.fdopen(os.open(name, flags, mode), \u0027w\u0027) as file:\n    file.write(new_config)\n\n\n# So, with this method there may also be formatting issues, but there are ways to keep the formatting sane in both py2 and py3 with a quick conversion","commit_id":"5505d40c092721aae356f6a035f6aefe0295b549"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"f0de3a9aecae560931518ee3f0d871e30df083ce","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                    # Since haproxy user_group is now auto-detected by the"},{"line_number":118,"context_line":"                    # amphora agent, Remove if from haproxy configuration"},{"line_number":119,"context_line":"                    # in case it was provided by an older Octavia controller."},{"line_number":120,"context_line":"                    b \u003d bytes(re.sub("},{"line_number":121,"context_line":"                        r\"    group .+?(?\u003d\\n)\\n\","},{"line_number":122,"context_line":"                        \"\","},{"line_number":123,"context_line":"                        b.decode(\u0027utf8\u0027)), \u0027utf-8\u0027)"},{"line_number":124,"context_line":"                file.write(b)"},{"line_number":125,"context_line":"                b \u003d stream.read(BUFFER)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_0e7249e6","line":123,"range":{"start_line":120,"start_character":0,"end_line":123,"end_character":51},"updated":"2017-04-06 12:09:06.000000000","message":"this currently fails in CentOS amphoras because they use python2. See details here: https://bugs.launchpad.net/octavia/+bug/1680435","commit_id":"5505d40c092721aae356f6a035f6aefe0295b549"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"93b6bfc603b801f77f82f37f670b00662a8a93cb","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            b \u003d stream.read(BUFFER)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Since haproxy user_group is now auto-detected by the amphora agent,"},{"line_number":122,"context_line":"        # Remove if from haproxy configuration in case it was provided"},{"line_number":123,"context_line":"        # by an older Octavia controller."},{"line_number":124,"context_line":"        new_config \u003d re.sub(r\"\\s+group\\s.+\", \"\", s_io.getvalue())"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"7ffa3b31_da001b04","line":122,"updated":"2017-04-20 22:03:11.000000000","message":"nit: \"remove it\"","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            b \u003d stream.read(BUFFER)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Since haproxy user_group is now auto-detected by the amphora agent,"},{"line_number":122,"context_line":"        # Remove if from haproxy configuration in case it was provided"},{"line_number":123,"context_line":"        # by an older Octavia controller."},{"line_number":124,"context_line":"        new_config \u003d re.sub(r\"\\s+group\\s.+\", \"\", s_io.getvalue())"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_ba2738b7","line":122,"in_reply_to":"7ffa3b31_da001b04","updated":"2017-04-23 14:46:38.000000000","message":"Thanks :)","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Since haproxy user_group is now auto-detected by the amphora agent,"},{"line_number":122,"context_line":"        # Remove if from haproxy configuration in case it was provided"},{"line_number":123,"context_line":"        # by an older Octavia controller."},{"line_number":124,"context_line":"        new_config \u003d re.sub(r\"\\s+group\\s.+\", \"\", s_io.getvalue())"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        with os.fdopen(os.open(name, flags, mode), \u0027w\u0027) as file:"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_a6504cd6","line":123,"updated":"2017-04-22 00:54:17.000000000","message":"I assume this is required because it would cause a conflict error otherwise.  Maybe mention that is causes a failure otherwise.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Since haproxy user_group is now auto-detected by the amphora agent,"},{"line_number":122,"context_line":"        # Remove if from haproxy configuration in case it was provided"},{"line_number":123,"context_line":"        # by an older Octavia controller."},{"line_number":124,"context_line":"        new_config \u003d re.sub(r\"\\s+group\\s.+\", \"\", s_io.getvalue())"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        with os.fdopen(os.open(name, flags, mode), \u0027w\u0027) as file:"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_ba9a98c2","line":123,"in_reply_to":"5ff73747_a6504cd6","updated":"2017-04-23 14:46:38.000000000","message":"Done","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            file.write(new_config)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # use haproxy to check the config"},{"line_number":130,"context_line":"        haproxy_ug_cfg \u003d \u0027/var/lib/octavia/haproxy-default-user-group.conf\u0027"},{"line_number":131,"context_line":"        cmd \u003d \"haproxy -c -L {peer} -f {config_file} -f {haproxy_ug}\".format("},{"line_number":132,"context_line":"            config_file\u003dname, peer\u003dpeer_name, haproxy_ug\u003dhaproxy_ug_cfg)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_a6696c8c","line":130,"range":{"start_line":130,"start_character":25,"end_line":130,"end_character":75},"updated":"2017-04-22 00:54:17.000000000","message":"I think this should go in constants","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            file.write(new_config)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # use haproxy to check the config"},{"line_number":130,"context_line":"        haproxy_ug_cfg \u003d \u0027/var/lib/octavia/haproxy-default-user-group.conf\u0027"},{"line_number":131,"context_line":"        cmd \u003d \"haproxy -c -L {peer} -f {config_file} -f {haproxy_ug}\".format("},{"line_number":132,"context_line":"            config_file\u003dname, peer\u003dpeer_name, haproxy_ug\u003dhaproxy_ug_cfg)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_ba83b856","line":130,"range":{"start_line":130,"start_character":25,"end_line":130,"end_character":75},"in_reply_to":"5ff73747_a6696c8c","updated":"2017-04-23 14:46:38.000000000","message":"Done","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a32143588f0ac6d7072981e1961f63fd35b431b2","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            b \u003d stream.read(BUFFER)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Since haproxy user_group is now auto-detected by the amphora agent,"},{"line_number":122,"context_line":"        # Remove it from haproxy configuration in case it was provided"},{"line_number":123,"context_line":"        # by an older Octavia controller. This is needed in order to prevent"},{"line_number":124,"context_line":"        # a duplicate entry for \u0027group\u0027 in haproxy configuration, which will"},{"line_number":125,"context_line":"        # result an error when haproxy starts."}],"source_content_type":"text/x-python","patch_set":43,"id":"5ff73747_5a45d416","line":122,"updated":"2017-04-23 14:46:51.000000000","message":"nit: lowercase \"remove\"","commit_id":"b3f5cd6556e3a03f6fa73114c8e15e748e64981d"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"6e1a17550f08fab74ff947fe7b37f1bd57b473e9","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            b \u003d stream.read(BUFFER)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        # Since haproxy user_group is now auto-detected by the amphora agent,"},{"line_number":122,"context_line":"        # Remove it from haproxy configuration in case it was provided"},{"line_number":123,"context_line":"        # by an older Octavia controller. This is needed in order to prevent"},{"line_number":124,"context_line":"        # a duplicate entry for \u0027group\u0027 in haproxy configuration, which will"},{"line_number":125,"context_line":"        # result an error when haproxy starts."}],"source_content_type":"text/x-python","patch_set":43,"id":"5ff73747_5a13940e","line":122,"in_reply_to":"5ff73747_5a45d416","updated":"2017-04-23 15:24:47.000000000","message":"Done","commit_id":"b3f5cd6556e3a03f6fa73114c8e15e748e64981d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3680186287a2f9567edbb111b7944b8b856f5fae","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                    haproxy_pid\u003dutil.pid_path(listener_id),"},{"line_number":189,"context_line":"                    haproxy_cmd\u003dutil.CONF.haproxy_amphora.haproxy_cmd,"},{"line_number":190,"context_line":"                    haproxy_cfg\u003dutil.config_path(listener_id),"},{"line_number":191,"context_line":"                    haproxy_user_default_group_cfg\u003d(consts."},{"line_number":192,"context_line":"                                                    HAPROXY_USER_GROUP_CFG),"},{"line_number":193,"context_line":"                    respawn_count\u003dutil.CONF.haproxy_amphora.respawn_count,"},{"line_number":194,"context_line":"                    respawn_interval\u003d(util.CONF.haproxy_amphora."}],"source_content_type":"text/x-python","patch_set":44,"id":"5ff73747_7a59b0fc","line":191,"updated":"2017-04-23 14:49:39.000000000","message":"This is a weird name -- it\u0027s inconsistent with everywhere else, where we\u0027ve used \"default_user_group\" but this splits \"user_group\" with default in the middle?","commit_id":"a82e3ff3bfbaa3fd20bd24bdc928c868f8746aff"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"f0c87411ed34468f7dd24ac7b3b5d05046d14563","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                    haproxy_pid\u003dutil.pid_path(listener_id),"},{"line_number":189,"context_line":"                    haproxy_cmd\u003dutil.CONF.haproxy_amphora.haproxy_cmd,"},{"line_number":190,"context_line":"                    haproxy_cfg\u003dutil.config_path(listener_id),"},{"line_number":191,"context_line":"                    haproxy_user_default_group_cfg\u003d(consts."},{"line_number":192,"context_line":"                                                    HAPROXY_USER_GROUP_CFG),"},{"line_number":193,"context_line":"                    respawn_count\u003dutil.CONF.haproxy_amphora.respawn_count,"},{"line_number":194,"context_line":"                    respawn_interval\u003d(util.CONF.haproxy_amphora."}],"source_content_type":"text/x-python","patch_set":44,"id":"5ff73747_9ac0fc52","line":191,"in_reply_to":"5ff73747_7a59b0fc","updated":"2017-04-23 15:24:56.000000000","message":"Changed to haproxy_user_group_cfg","commit_id":"a82e3ff3bfbaa3fd20bd24bdc928c868f8746aff"}],"octavia/amphorae/backends/agent/api_server/templates/systemd.conf.j2":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"db9db5b40afd7e30626ee2548d4b50915fc60859","unresolved":false,"context_lines":[{"line_number":10,"context_line":"{%- if haproxy_user_group %}"},{"line_number":11,"context_line":"ExecStartPre\u003d/usr/sbin/haproxy -f {{ haproxy_cfg }} -c -q"},{"line_number":12,"context_line":"{%- else %}"},{"line_number":13,"context_line":"ExecStartPre\u003d/usr/sbin/haproxy -f {{ haproxy_cfg }} -f {{ haproxy_user_default_group_cfg }} -c -q"},{"line_number":14,"context_line":"{%- endif %}"},{"line_number":15,"context_line":"# Re-add the namespace"},{"line_number":16,"context_line":"ExecStartPre\u003d-/sbin/ip netns add {{ amphora_nsname }}"}],"source_content_type":"text/x-jinja2","patch_set":24,"id":"dfeb2761_339e8054","line":13,"updated":"2017-04-02 19:54:11.000000000","message":"Just do this always. Don\u0027t bother allowing for the user configured one. We are always going to be smarter than the user here.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":10,"context_line":"{%- if haproxy_user_group %}"},{"line_number":11,"context_line":"ExecStartPre\u003d/usr/sbin/haproxy -f {{ haproxy_cfg }} -c -q"},{"line_number":12,"context_line":"{%- else %}"},{"line_number":13,"context_line":"ExecStartPre\u003d/usr/sbin/haproxy -f {{ haproxy_cfg }} -f {{ haproxy_user_default_group_cfg }} -c -q"},{"line_number":14,"context_line":"{%- endif %}"},{"line_number":15,"context_line":"# Re-add the namespace"},{"line_number":16,"context_line":"ExecStartPre\u003d-/sbin/ip netns add {{ amphora_nsname }}"}],"source_content_type":"text/x-jinja2","patch_set":24,"id":"dfeb2761_68ef4ab0","line":13,"in_reply_to":"dfeb2761_339e8054","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"db9db5b40afd7e30626ee2548d4b50915fc60859","unresolved":false,"context_lines":[{"line_number":31,"context_line":"ExecStart\u003d/sbin/ip netns exec {{ amphora_nsname }} /usr/sbin/haproxy-systemd-wrapper -f {{ haproxy_cfg }} -p {{ haproxy_pid }} -L {{ peer_name }} $EXTRAOPTS"},{"line_number":32,"context_line":"ExecReload\u003d/usr/sbin/haproxy -c -f {{ haproxy_cfg }}"},{"line_number":33,"context_line":"{%- else %}"},{"line_number":34,"context_line":"ExecStart\u003d/sbin/ip netns exec {{ amphora_nsname }} /usr/sbin/haproxy-systemd-wrapper -f {{ haproxy_cfg }} -f {{ haproxy_user_default_group_cfg }} -p {{ haproxy_pid }} -L {{ peer_name }} $EXTRAOPTS"},{"line_number":35,"context_line":"ExecReload\u003d/usr/sbin/haproxy -c -f {{ haproxy_cfg }} -f {{ haproxy_user_default_group_cfg }}"},{"line_number":36,"context_line":"{%- endif %}"},{"line_number":37,"context_line":"ExecReload\u003d/bin/kill -USR2 $MAINPID"}],"source_content_type":"text/x-jinja2","patch_set":24,"id":"dfeb2761_13adbc87","line":34,"updated":"2017-04-02 19:54:11.000000000","message":"Same here.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":31,"context_line":"ExecStart\u003d/sbin/ip netns exec {{ amphora_nsname }} /usr/sbin/haproxy-systemd-wrapper -f {{ haproxy_cfg }} -p {{ haproxy_pid }} -L {{ peer_name }} $EXTRAOPTS"},{"line_number":32,"context_line":"ExecReload\u003d/usr/sbin/haproxy -c -f {{ haproxy_cfg }}"},{"line_number":33,"context_line":"{%- else %}"},{"line_number":34,"context_line":"ExecStart\u003d/sbin/ip netns exec {{ amphora_nsname }} /usr/sbin/haproxy-systemd-wrapper -f {{ haproxy_cfg }} -f {{ haproxy_user_default_group_cfg }} -p {{ haproxy_pid }} -L {{ peer_name }} $EXTRAOPTS"},{"line_number":35,"context_line":"ExecReload\u003d/usr/sbin/haproxy -c -f {{ haproxy_cfg }} -f {{ haproxy_user_default_group_cfg }}"},{"line_number":36,"context_line":"{%- endif %}"},{"line_number":37,"context_line":"ExecReload\u003d/bin/kill -USR2 $MAINPID"}],"source_content_type":"text/x-jinja2","patch_set":24,"id":"dfeb2761_282f02f7","line":34,"in_reply_to":"dfeb2761_13adbc87","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"}],"octavia/common/config.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"db9db5b40afd7e30626ee2548d4b50915fc60859","unresolved":false,"context_lines":[{"line_number":172,"context_line":"               default\u003d5,"},{"line_number":173,"context_line":"               help\u003d_(\u0027Retry timeout between build attempts in \u0027"},{"line_number":174,"context_line":"                      \u0027seconds.\u0027)),"},{"line_number":175,"context_line":"    cfg.StrOpt(\u0027user_group\u0027,"},{"line_number":176,"context_line":"               help\u003d_(\u0027The user group for haproxy to run under inside the \u0027"},{"line_number":177,"context_line":"                      \u0027amphora.\u0027)),"},{"line_number":178,"context_line":"    cfg.StrOpt(\u0027haproxy_stick_size\u0027, default\u003d\u002710k\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_13c6dc49","line":175,"updated":"2017-04-02 19:54:11.000000000","message":"IMO just don\u0027t expose this at all.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0652dd85ac6aa3bce3e9017bd821687b142fa127","unresolved":false,"context_lines":[{"line_number":172,"context_line":"               default\u003d5,"},{"line_number":173,"context_line":"               help\u003d_(\u0027Retry timeout between build attempts in \u0027"},{"line_number":174,"context_line":"                      \u0027seconds.\u0027)),"},{"line_number":175,"context_line":"    cfg.StrOpt(\u0027user_group\u0027,"},{"line_number":176,"context_line":"               help\u003d_(\u0027The user group for haproxy to run under inside the \u0027"},{"line_number":177,"context_line":"                      \u0027amphora.\u0027)),"},{"line_number":178,"context_line":"    cfg.StrOpt(\u0027haproxy_stick_size\u0027, default\u003d\u002710k\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_98e78d41","line":175,"range":{"start_line":175,"start_character":3,"end_line":175,"end_character":28},"updated":"2017-04-03 16:19:25.000000000","message":"Just mark it deprecated like we did with \u0027use_upstart\u0027 below.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":172,"context_line":"               default\u003d5,"},{"line_number":173,"context_line":"               help\u003d_(\u0027Retry timeout between build attempts in \u0027"},{"line_number":174,"context_line":"                      \u0027seconds.\u0027)),"},{"line_number":175,"context_line":"    cfg.StrOpt(\u0027user_group\u0027,"},{"line_number":176,"context_line":"               help\u003d_(\u0027The user group for haproxy to run under inside the \u0027"},{"line_number":177,"context_line":"                      \u0027amphora.\u0027)),"},{"line_number":178,"context_line":"    cfg.StrOpt(\u0027haproxy_stick_size\u0027, default\u003d\u002710k\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_4896c6f2","line":175,"in_reply_to":"dfeb2761_13c6dc49","updated":"2017-04-03 23:12:04.000000000","message":"Marked as deprecated.","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"d753154e2be0a468eb72f6620ee12e0b9ac33805","unresolved":false,"context_lines":[{"line_number":172,"context_line":"               default\u003d5,"},{"line_number":173,"context_line":"               help\u003d_(\u0027Retry timeout between build attempts in \u0027"},{"line_number":174,"context_line":"                      \u0027seconds.\u0027)),"},{"line_number":175,"context_line":"    cfg.StrOpt(\u0027user_group\u0027,"},{"line_number":176,"context_line":"               help\u003d_(\u0027The user group for haproxy to run under inside the \u0027"},{"line_number":177,"context_line":"                      \u0027amphora.\u0027)),"},{"line_number":178,"context_line":"    cfg.StrOpt(\u0027haproxy_stick_size\u0027, default\u003d\u002710k\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"dfeb2761_68f98a4b","line":175,"range":{"start_line":175,"start_character":3,"end_line":175,"end_character":28},"in_reply_to":"dfeb2761_98e78d41","updated":"2017-04-03 23:12:04.000000000","message":"Done","commit_id":"7e6eff81667ebb89889f6a0ff8f987b77afc6714"}],"octavia/tests/functional/amphorae/backend/agent/api_server/test_server.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"50c38fa4b1b656d4b44080ef46d98400ab9e4e83","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                                         data\u003d\u0027test\u0027)"},{"line_number":114,"context_line":"            mode \u003d stat.S_IRUSR | stat.S_IWUSR"},{"line_number":115,"context_line":"            mock_open.assert_called_with(file_name, flags, mode)"},{"line_number":116,"context_line":"            mock_fdopen.assert_called_with(123, \u0027wb\u0027)"},{"line_number":117,"context_line":"            self.assertEqual(202, rv.status_code)"},{"line_number":118,"context_line":"            handle \u003d m()"},{"line_number":119,"context_line":"            handle.write.assert_called_once_with(six.b(\u0027test\u0027))"}],"source_content_type":"text/x-python","patch_set":34,"id":"7ffa3b31_8ef4d9d0","line":116,"updated":"2017-04-19 07:27:06.000000000","message":"Needs to be \u0027w\u0027 not \u0027wb\u0027 now. :)","commit_id":"64ae1929921a07a5ffda4fcd541f5b84b4bcbdbf"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"5c9bcad352f5dfa61a585f1fd64b6e4b93dae361","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                                         data\u003d\u0027test\u0027)"},{"line_number":114,"context_line":"            mode \u003d stat.S_IRUSR | stat.S_IWUSR"},{"line_number":115,"context_line":"            mock_open.assert_called_with(file_name, flags, mode)"},{"line_number":116,"context_line":"            mock_fdopen.assert_called_with(123, \u0027wb\u0027)"},{"line_number":117,"context_line":"            self.assertEqual(202, rv.status_code)"},{"line_number":118,"context_line":"            handle \u003d m()"},{"line_number":119,"context_line":"            handle.write.assert_called_once_with(six.b(\u0027test\u0027))"}],"source_content_type":"text/x-python","patch_set":34,"id":"7ffa3b31_91598e36","line":116,"in_reply_to":"7ffa3b31_8ef4d9d0","updated":"2017-04-19 14:24:36.000000000","message":"Done, thanks Adam!","commit_id":"64ae1929921a07a5ffda4fcd541f5b84b4bcbdbf"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6bc6b0abd560619b31c62f5c1272b3476060e7a4","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                json.loads(rv.data.decode(\u0027utf-8\u0027)))"},{"line_number":215,"context_line":"            mode \u003d stat.S_IRUSR | stat.S_IWUSR"},{"line_number":216,"context_line":"            mock_open.assert_called_with(file_name, flags, mode)"},{"line_number":217,"context_line":"            mock_fdopen.assert_called_with(123, \u0027wb\u0027)"},{"line_number":218,"context_line":"            handle \u003d mock_fdopen()"},{"line_number":219,"context_line":"            handle.write.assert_called_with(six.b(\u0027test\u0027))"},{"line_number":220,"context_line":"            mock_subprocess.assert_called_with("}],"source_content_type":"text/x-python","patch_set":35,"id":"7ffa3b31_c296223f","line":217,"updated":"2017-04-19 16:03:28.000000000","message":"Whoops, another one. T_T","commit_id":"7c5004ff4be64baaef02ddb0f6d19781955e44ce"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"96636c822bd03beb0fe6868abffd7bc5b2780d87","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                json.loads(rv.data.decode(\u0027utf-8\u0027)))"},{"line_number":215,"context_line":"            mode \u003d stat.S_IRUSR | stat.S_IWUSR"},{"line_number":216,"context_line":"            mock_open.assert_called_with(file_name, flags, mode)"},{"line_number":217,"context_line":"            mock_fdopen.assert_called_with(123, \u0027wb\u0027)"},{"line_number":218,"context_line":"            handle \u003d mock_fdopen()"},{"line_number":219,"context_line":"            handle.write.assert_called_with(six.b(\u0027test\u0027))"},{"line_number":220,"context_line":"            mock_subprocess.assert_called_with("}],"source_content_type":"text/x-python","patch_set":35,"id":"7ffa3b31_8e6e002d","line":217,"in_reply_to":"7ffa3b31_c296223f","updated":"2017-04-19 19:57:31.000000000","message":"Done","commit_id":"7c5004ff4be64baaef02ddb0f6d19781955e44ce"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6029f135dd8ab2a709eca0e958931f153a67f8cb","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            mock_open.assert_called_with(file_name, flags, mode)"},{"line_number":116,"context_line":"            mock_fdopen.assert_called_with(123, \u0027w\u0027)"},{"line_number":117,"context_line":"            self.assertEqual(202, rv.status_code)"},{"line_number":118,"context_line":"            handle \u003d m()"},{"line_number":119,"context_line":"            handle.write.assert_called_once_with(six.b(\u0027test\u0027))"},{"line_number":120,"context_line":"            mock_subprocess.assert_any_call("},{"line_number":121,"context_line":"                \"haproxy -c -L {peer} -f {config_file} -f {haproxy_ug}\".format("}],"source_content_type":"text/x-python","patch_set":36,"id":"7ffa3b31_9f6bccb5","line":118,"updated":"2017-04-19 21:47:31.000000000","message":"Do you use handle again? really just m().write.assert_called_once_with(\u0027test\u0027) is fine","commit_id":"364f16566d3c978d8314e0d83c96d7041c5c57e2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"6029f135dd8ab2a709eca0e958931f153a67f8cb","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            mock_fdopen.assert_called_with(123, \u0027w\u0027)"},{"line_number":117,"context_line":"            self.assertEqual(202, rv.status_code)"},{"line_number":118,"context_line":"            handle \u003d m()"},{"line_number":119,"context_line":"            handle.write.assert_called_once_with(six.b(\u0027test\u0027))"},{"line_number":120,"context_line":"            mock_subprocess.assert_any_call("},{"line_number":121,"context_line":"                \"haproxy -c -L {peer} -f {config_file} -f {haproxy_ug}\".format("},{"line_number":122,"context_line":"                    config_file\u003dfile_name,"}],"source_content_type":"text/x-python","patch_set":36,"id":"7ffa3b31_df54b400","line":119,"updated":"2017-04-19 21:47:31.000000000","message":"get rid of six.b()","commit_id":"364f16566d3c978d8314e0d83c96d7041c5c57e2"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        flags \u003d os.O_WRONLY | os.O_CREAT | os.O_TRUNC"},{"line_number":97,"context_line":"        mock_exists.return_value \u003d True"},{"line_number":98,"context_line":"        file_name \u003d \u0027/var/lib/octavia/123/haproxy.cfg.new\u0027"},{"line_number":99,"context_line":"        haproxy_ug_cfg \u003d \"/var/lib/octavia/haproxy-default-user-group.conf\""},{"line_number":100,"context_line":"        m \u003d self.useFixture(test_utils.OpenFixture(file_name)).mock_open"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # happy case upstart file exists"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_c60118b2","line":99,"range":{"start_line":99,"start_character":25,"end_line":99,"end_character":75},"updated":"2017-04-22 00:54:17.000000000","message":"We should use this from constants","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        flags \u003d os.O_WRONLY | os.O_CREAT | os.O_TRUNC"},{"line_number":97,"context_line":"        mock_exists.return_value \u003d True"},{"line_number":98,"context_line":"        file_name \u003d \u0027/var/lib/octavia/123/haproxy.cfg.new\u0027"},{"line_number":99,"context_line":"        haproxy_ug_cfg \u003d \"/var/lib/octavia/haproxy-default-user-group.conf\""},{"line_number":100,"context_line":"        m \u003d self.useFixture(test_utils.OpenFixture(file_name)).mock_open"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # happy case upstart file exists"}],"source_content_type":"text/x-python","patch_set":42,"id":"5ff73747_5a827451","line":99,"range":{"start_line":99,"start_character":25,"end_line":99,"end_character":75},"in_reply_to":"5ff73747_c60118b2","updated":"2017-04-23 14:46:38.000000000","message":"Done","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"}],"releasenotes/notes/auto_detect_haproxy_user_group-c220b6a2c8f1d589.yaml":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Auto detect and deprecate haproxy user_group."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - To use CentOS, Fedora, or RHEL as your amphora image you no longer need to"},{"line_number":6,"context_line":"    set the user_group option, which is located in the [haproxy_amphora]"}],"source_content_type":"text/x-yaml","patch_set":42,"id":"5ff73747_e61d3410","line":3,"range":{"start_line":2,"start_character":0,"end_line":3,"end_character":49},"updated":"2017-04-22 00:54:17.000000000","message":"Please don\u0027t use the prelude.  This is for an introductory paragraph for the whole release.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Auto detect and deprecate haproxy user_group."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - To use CentOS, Fedora, or RHEL as your amphora image you no longer need to"},{"line_number":6,"context_line":"    set the user_group option, which is located in the [haproxy_amphora]"}],"source_content_type":"text/x-yaml","patch_set":42,"id":"5ff73747_3a97a893","line":3,"range":{"start_line":2,"start_character":0,"end_line":3,"end_character":49},"in_reply_to":"5ff73747_e61d3410","updated":"2017-04-23 14:46:38.000000000","message":"Good to know :-)\nRemoved.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"6027c14f805e79eb40e68b5d675d7b83da270251","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Auto detect and deprecate haproxy user_group."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - To use CentOS, Fedora, or RHEL as your amphora image you no longer need to"},{"line_number":6,"context_line":"    set the user_group option, which is located in the [haproxy_amphora]"},{"line_number":7,"context_line":"    section of the octavia.conf."},{"line_number":8,"context_line":"deprecations:"},{"line_number":9,"context_line":"  - haproxy user_group is no longer being used. it is now auto-detected for"},{"line_number":10,"context_line":"    Ubuntu, CentOS, Fedora and RHEL based amphora images."}],"source_content_type":"text/x-yaml","patch_set":42,"id":"5ff73747_26e1dcff","line":7,"range":{"start_line":5,"start_character":4,"end_line":7,"end_character":32},"updated":"2017-04-22 00:54:17.000000000","message":"nit: This reads like a deprecation.  Maybe we can re-word it to be more \"feature\" like.\nSomething like:\nThe amphora haproxy user_group setting is now automatically detected for CentOS, Fedora, or RHEL based amphora.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"26fa567dfbc5ac70adb49abdc4fea9ffb9336241","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Auto detect and deprecate haproxy user_group."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - To use CentOS, Fedora, or RHEL as your amphora image you no longer need to"},{"line_number":6,"context_line":"    set the user_group option, which is located in the [haproxy_amphora]"},{"line_number":7,"context_line":"    section of the octavia.conf."},{"line_number":8,"context_line":"deprecations:"},{"line_number":9,"context_line":"  - haproxy user_group is no longer being used. it is now auto-detected for"},{"line_number":10,"context_line":"    Ubuntu, CentOS, Fedora and RHEL based amphora images."}],"source_content_type":"text/x-yaml","patch_set":42,"id":"5ff73747_1a94ec8a","line":7,"range":{"start_line":5,"start_character":4,"end_line":7,"end_character":32},"in_reply_to":"5ff73747_26e1dcff","updated":"2017-04-23 14:46:38.000000000","message":"Done.\nShould we still keep the \u0027deprecations\u0027 section?\nSeems duplicate.","commit_id":"d2dd5daab45f45563b3f194dc5f833f9ebb479a6"}]}
