)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8d0f18c3a80dd17a9d84a33cde6b4447180d26b9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Set agent modes for DVR+HA multinode job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We created experimental Neutron DVR+HA multinode job with [1]."},{"line_number":10,"context_line":"DVR+HA needs a three node setup with two dvr_snat nodes"},{"line_number":11,"context_line":"and one dvr node. So in this setup, we set"},{"line_number":12,"context_line":"1) controller node\u0027s agent_mode to dvr_snat"},{"line_number":13,"context_line":"2) first compute to dvr and other to dvr_snat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da4df55a_140c03ec","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":55},"updated":"2016-12-28 12:36:14.000000000","message":"may I suggest to add something in [1] to document this scenario?\n\n[1] http://git.openstack.org/cgit/openstack-infra/devstack-gate/tree/multinode_setup_info.txt","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"d5aca85d1edf4a0f9397ccbdc7d501f93ad94f62","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Set agent modes for DVR+HA multinode job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We created experimental Neutron DVR+HA multinode job with [1]."},{"line_number":10,"context_line":"DVR+HA needs a three node setup with two dvr_snat nodes"},{"line_number":11,"context_line":"and one dvr node. So in this setup, we set"},{"line_number":12,"context_line":"1) controller node\u0027s agent_mode to dvr_snat"},{"line_number":13,"context_line":"2) first compute to dvr and other to dvr_snat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a3c09a3_df874bd5","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":55},"in_reply_to":"da4df55a_140c03ec","updated":"2017-01-16 11:55:29.000000000","message":"sure","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"}],"devstack-vm-gate.sh":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c86baad0317c2df7e7a0cf71020f01e53be42c3f","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        else"},{"line_number":278,"context_line":"            # The role for L3 agents running on controller nodes is \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"            echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""},{"line_number":280,"context_line":"        fi"},{"line_number":281,"context_line":"    fi"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"fa6399be_ad8c3536","line":280,"updated":"2016-10-12 18:07:56.000000000","message":"It would be nice if we could mange the dvr mode here for all the hosts in all configurations. But that would probably require generating the localrc for each subnode and then handling more than two roles. Maybe you can look into doing that to see how difficult that change becomes?","commit_id":"ad26a7dec16f306956129c7c77c74310824a8c75"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"0e4a948a4bc7b05f3913b5656853cbee27737226","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        else"},{"line_number":278,"context_line":"            # The role for L3 agents running on controller nodes is \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"            echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""},{"line_number":280,"context_line":"        fi"},{"line_number":281,"context_line":"    fi"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"fa6399be_ca04d319","line":280,"in_reply_to":"fa6399be_78001dab","updated":"2016-10-13 09:28:31.000000000","message":"for NODE in $sub_nodes; do\n        sub_nodes_arr\u003d($sub_nodes)\n        first_node_ip\u003d${sub_nodes_arr[0]}\n        # first compute sub node is DVR, others dvr_snat \n        if ! [ \"$HOST_IP\" \u003d \"$first_node_ip\" ]; then\n             echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\"\n        else\n             echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\"\n             \n        fi\n    done","commit_id":"ad26a7dec16f306956129c7c77c74310824a8c75"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"68bfb7744927c491e7c4a0dcb3bf3c41754aed51","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        else"},{"line_number":278,"context_line":"            # The role for L3 agents running on controller nodes is \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"            echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""},{"line_number":280,"context_line":"        fi"},{"line_number":281,"context_line":"    fi"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"fa6399be_78001dab","line":280,"in_reply_to":"fa6399be_ad8c3536","updated":"2016-10-12 18:25:58.000000000","message":"I will try","commit_id":"ad26a7dec16f306956129c7c77c74310824a8c75"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8cc8275a9155b0d1503ab51f0483372d1d22bb30","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        remote_command $NODE \"cat /tmp/tmp_hosts | sudo tee --append /etc/hosts \u003e /dev/null\""},{"line_number":167,"context_line":"        cp $sub_localrc /tmp/tmp_sub_localrc"},{"line_number":168,"context_line":"        # We add HOST_IP after Q_HOST, to allow other variables to use HOST_IP"},{"line_number":169,"context_line":"        sed -i \"/Q_HOST\u003d/a\\HOST_IP\u003d$NODE\" /tmp/tmp_sub_localrc"},{"line_number":170,"context_line":"        remote_copy_file /tmp/tmp_sub_localrc $NODE:$devstack_dir/localrc"},{"line_number":171,"context_line":"        remote_copy_file $localconf $NODE:$localconf"},{"line_number":172,"context_line":"    done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"fa6399be_5ae495ab","line":169,"updated":"2016-10-17 14:16:14.000000000","message":"why is that necessary, (Just trying to understand the logic).","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"16fabd55e6ae34498eb96efa30107ccbe89fbcef","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        remote_command $NODE \"cat /tmp/tmp_hosts | sudo tee --append /etc/hosts \u003e /dev/null\""},{"line_number":167,"context_line":"        cp $sub_localrc /tmp/tmp_sub_localrc"},{"line_number":168,"context_line":"        # We add HOST_IP after Q_HOST, to allow other variables to use HOST_IP"},{"line_number":169,"context_line":"        sed -i \"/Q_HOST\u003d/a\\HOST_IP\u003d$NODE\" /tmp/tmp_sub_localrc"},{"line_number":170,"context_line":"        remote_copy_file /tmp/tmp_sub_localrc $NODE:$devstack_dir/localrc"},{"line_number":171,"context_line":"        remote_copy_file $localconf $NODE:$localconf"},{"line_number":172,"context_line":"    done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"fa6399be_5e741e9b","line":169,"in_reply_to":"fa6399be_5ae495ab","updated":"2016-10-19 15:36:29.000000000","message":"Because I need HOST_IP in L285.\n\ntemplate local.conf(i.e before copying to compute nodes) will look like this( when we have 2 compute nodes)\n\ndvr_node_ip\u003d\"192.168.0.1\" #i.e first compute ip\nif [ $dvr_node_ip \u003d\u003d $HOST_IP ]; then\n     Q_DVR_MODE\u003ddvr\nelse\n     Q_DVR_MODE\u003ddvr_snat\nfi\n\nThis is how local.conf looks in the first compute node, before running ./stack.sh \nHOST_IP\u003d\"192.168.0.1\"\ndvr_node_ip\u003d\"192.168.0.1\" #i.e first compute ip\nif [ \"192.168.0.1\" \u003d\u003d \"192.168.0.1\" ]; then\n     Q_DVR_MODE\u003ddvr\nelse\n     Q_DVR_MODE\u003ddvr_snat\nfi\nSo in first compute node, agent_mode will be set to DVR.\n\nThis is how local.conf looks in the second compute node before running ./stack.sh\nHOST_IP\u003d\"192.168.0.2\"\ndvr_node_ip\u003d\"192.168.0.1\" #i.e first compute ip\nif [ \"192.168.0.1\" \u003d\u003d \"192.168.0.2\" ]; then\n     Q_DVR_MODE\u003ddvr\nelse\n     Q_DVR_MODE\u003ddvr_snat\nfi\nSo in second compute node, agent_mode will be set to DVR_SNAT.","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4579a04e8711713bb2149a5ad898f90a120085e9","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        remote_command $NODE \"cat /tmp/tmp_hosts | sudo tee --append /etc/hosts \u003e /dev/null\""},{"line_number":167,"context_line":"        cp $sub_localrc /tmp/tmp_sub_localrc"},{"line_number":168,"context_line":"        # We add HOST_IP after Q_HOST, to allow other variables to use HOST_IP"},{"line_number":169,"context_line":"        sed -i \"/Q_HOST\u003d/a\\HOST_IP\u003d$NODE\" /tmp/tmp_sub_localrc"},{"line_number":170,"context_line":"        remote_copy_file /tmp/tmp_sub_localrc $NODE:$devstack_dir/localrc"},{"line_number":171,"context_line":"        remote_copy_file $localconf $NODE:$localconf"},{"line_number":172,"context_line":"    done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"7a77a97e_083c5e2e","line":169,"in_reply_to":"fa6399be_5e741e9b","updated":"2016-11-22 09:13:55.000000000","message":"ack :)","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8cc8275a9155b0d1503ab51f0483372d1d22bb30","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            else"},{"line_number":277,"context_line":"                # In 3 node setup, first compute node will set agent_mode to"},{"line_number":278,"context_line":"                # \u0027dvr\u0027 and others to \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"                for NODE in $sub_nodes; do"},{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"fa6399be_1a5dbd48","line":279,"updated":"2016-10-17 14:16:14.000000000","message":"you can just do NODE\u003d${sub_nodes_arr[0]}","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8d0f18c3a80dd17a9d84a33cde6b4447180d26b9","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            else"},{"line_number":277,"context_line":"                # In 3 node setup, first compute node will set agent_mode to"},{"line_number":278,"context_line":"                # \u0027dvr\u0027 and others to \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"                for NODE in $sub_nodes; do"},{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"da4df55a_54012b69","line":279,"in_reply_to":"7a77a97e_c8d506ba","updated":"2016-12-28 12:36:14.000000000","message":"how can the sub_nodes array be empty if $role \u003d\u003d sub? I think that making the first element of the array dvr and the other dvr_snat is easier to read.","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"d5aca85d1edf4a0f9397ccbdc7d501f93ad94f62","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            else"},{"line_number":277,"context_line":"                # In 3 node setup, first compute node will set agent_mode to"},{"line_number":278,"context_line":"                # \u0027dvr\u0027 and others to \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"                for NODE in $sub_nodes; do"},{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"7a3c09a3_3f4befca","line":279,"in_reply_to":"da4df55a_54012b69","updated":"2017-01-16 11:55:29.000000000","message":"if $role \u003d\u003d sub, /etc/nodepool/sub_nodes_private won\u0027t be empty. I will follow Miguel\u0027s suggestion then.","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"16fabd55e6ae34498eb96efa30107ccbe89fbcef","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            else"},{"line_number":277,"context_line":"                # In 3 node setup, first compute node will set agent_mode to"},{"line_number":278,"context_line":"                # \u0027dvr\u0027 and others to \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"                for NODE in $sub_nodes; do"},{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"fa6399be_5e9b3ec9","line":279,"in_reply_to":"fa6399be_1a5dbd48","updated":"2016-10-19 15:36:29.000000000","message":"what if sub_nodes_arr is empty? But need help in making it better code :)","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4579a04e8711713bb2149a5ad898f90a120085e9","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            else"},{"line_number":277,"context_line":"                # In 3 node setup, first compute node will set agent_mode to"},{"line_number":278,"context_line":"                # \u0027dvr\u0027 and others to \u0027dvr_snat\u0027"},{"line_number":279,"context_line":"                for NODE in $sub_nodes; do"},{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"}],"source_content_type":"text/x-sh","patch_set":5,"id":"7a77a97e_c8d506ba","line":279,"in_reply_to":"fa6399be_5e9b3ec9","updated":"2016-11-22 09:13:55.000000000","message":"Oh, right I saw your check for ${#sub_nodes_arr[@]} in the if above, but at this point it could be empty.","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"8cc8275a9155b0d1503ab51f0483372d1d22bb30","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"},{"line_number":283,"context_line":"                cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""},{"line_number":284,"context_line":" dvr_node_ip\u003d$first_node_ip"},{"line_number":285,"context_line":" if [ \\$dvr_node_ip \u003d\u003d \\$HOST_IP ]; then"},{"line_number":286,"context_line":"     Q_DVR_MODE\u003ddvr"},{"line_number":287,"context_line":" else"}],"source_content_type":"text/x-sh","patch_set":5,"id":"fa6399be_5a2e55a6","line":284,"updated":"2016-10-17 14:16:14.000000000","message":"you can indent this (but the EOF), and reading this script will be much nicer, the localrc_file output won\u0027t be beautiful, but that one is more volatile/artifact.","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4579a04e8711713bb2149a5ad898f90a120085e9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"},{"line_number":283,"context_line":"                cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""},{"line_number":284,"context_line":" dvr_node_ip\u003d$first_node_ip"},{"line_number":285,"context_line":" if [ \\$dvr_node_ip \u003d\u003d \\$HOST_IP ]; then"},{"line_number":286,"context_line":"     Q_DVR_MODE\u003ddvr"},{"line_number":287,"context_line":" else"}],"source_content_type":"text/x-sh","patch_set":5,"id":"7a77a97e_085b7e55","line":284,"in_reply_to":"fa6399be_1e1b861c","updated":"2016-11-22 09:13:55.000000000","message":"Yes, it\u0027s ugly everywhere :P :D","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"16fabd55e6ae34498eb96efa30107ccbe89fbcef","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"},{"line_number":283,"context_line":"                cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""},{"line_number":284,"context_line":" dvr_node_ip\u003d$first_node_ip"},{"line_number":285,"context_line":" if [ \\$dvr_node_ip \u003d\u003d \\$HOST_IP ]; then"},{"line_number":286,"context_line":"     Q_DVR_MODE\u003ddvr"},{"line_number":287,"context_line":" else"}],"source_content_type":"text/x-sh","patch_set":5,"id":"fa6399be_1e1b861c","line":284,"in_reply_to":"fa6399be_5a2e55a6","updated":"2016-10-19 15:36:29.000000000","message":"In this file(devstack-vm-gate.sh), when they want to write to file using \"cat \u003c\u003cEOF\u003e\u003e\",  they are writing at beginning. I followed same thing here :)","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8d0f18c3a80dd17a9d84a33cde6b4447180d26b9","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"},{"line_number":283,"context_line":"                cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""},{"line_number":284,"context_line":" dvr_node_ip\u003d$first_node_ip"},{"line_number":285,"context_line":" if [ \\$dvr_node_ip \u003d\u003d \\$HOST_IP ]; then"},{"line_number":286,"context_line":"     Q_DVR_MODE\u003ddvr"},{"line_number":287,"context_line":" else"},{"line_number":288,"context_line":"     Q_DVR_MODE\u003ddvr_snat"},{"line_number":289,"context_line":" fi"},{"line_number":290,"context_line":"EOF"},{"line_number":291,"context_line":"            fi"},{"line_number":292,"context_line":"        else"}],"source_content_type":"text/x-sh","patch_set":5,"id":"da4df55a_549ccb5c","line":289,"range":{"start_line":283,"start_character":16,"end_line":289,"end_character":3},"updated":"2016-12-28 12:36:14.000000000","message":"can I suggest to break this out in its own function. Otherwise it\u0027s hard to read this whole block.","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"d5aca85d1edf4a0f9397ccbdc7d501f93ad94f62","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                    first_node_ip\u003d$NODE"},{"line_number":281,"context_line":"                    break"},{"line_number":282,"context_line":"                done"},{"line_number":283,"context_line":"                cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""},{"line_number":284,"context_line":" dvr_node_ip\u003d$first_node_ip"},{"line_number":285,"context_line":" if [ \\$dvr_node_ip \u003d\u003d \\$HOST_IP ]; then"},{"line_number":286,"context_line":"     Q_DVR_MODE\u003ddvr"},{"line_number":287,"context_line":" else"},{"line_number":288,"context_line":"     Q_DVR_MODE\u003ddvr_snat"},{"line_number":289,"context_line":" fi"},{"line_number":290,"context_line":"EOF"},{"line_number":291,"context_line":"            fi"},{"line_number":292,"context_line":"        else"}],"source_content_type":"text/x-sh","patch_set":5,"id":"7a3c09a3_7f13b7b8","line":289,"range":{"start_line":283,"start_character":16,"end_line":289,"end_character":3},"in_reply_to":"da4df55a_549ccb5c","updated":"2017-01-16 11:55:29.000000000","message":"sure","commit_id":"8020b3b800437f5f08ca4a026c3a01822c8840a1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6f1b917b1404d1ae83acd9a970eb32ffc8d0db26","unresolved":false,"context_lines":[{"line_number":189,"context_line":"}"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"function setup_dvr_agentmode {"},{"line_number":192,"context_line":"    local DVR_NODE_IP\u003d$1;"},{"line_number":193,"context_line":"    local localrc_file\u003d$2"},{"line_number":194,"context_line":"    cat \u003c\u003cEOF \u003e\u003e\"$localrc_file\""},{"line_number":195,"context_line":"DVR_NODE_IP\u003d${DVR_NODE_IP}"}],"source_content_type":"text/x-sh","patch_set":10,"id":"7a3c09a3_d2eecf20","line":192,"range":{"start_line":192,"start_character":24,"end_line":192,"end_character":25},"updated":"2017-01-18 16:34:44.000000000","message":"Not needed","commit_id":"ee7f30bd458aeec328e4fb614d62de549be7f6c8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0facb17d445f732e822f4de3a571404982d59700","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    Q_DVR_MODE\u003ddvr"},{"line_number":198,"context_line":"else"},{"line_number":199,"context_line":"    Q_DVR_MODE\u003ddvr_snat"},{"line_number":200,"context_line":"fi"},{"line_number":201,"context_line":"EOF"},{"line_number":202,"context_line":"}"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"7a3c09a3_0511ef03","line":200,"updated":"2017-01-18 16:49:53.000000000","message":"My concern with this is that devstack is finally moving to push towards getting devstack-gate using local.conf instead of localrc. I think that means we can\u0027t rely on the shell to evaluate these conditionals.\n\nIdeally you would evaluate this switch within devstack-gate then write the appropriate config so that we don\u0027t have issues when moving to local.conf.","commit_id":"ee7f30bd458aeec328e4fb614d62de549be7f6c8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"50c77a7e2053ac1a4f30aba5216d8a4a918e7ced","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    Q_DVR_MODE\u003ddvr"},{"line_number":198,"context_line":"else"},{"line_number":199,"context_line":"    Q_DVR_MODE\u003ddvr_snat"},{"line_number":200,"context_line":"fi"},{"line_number":201,"context_line":"EOF"},{"line_number":202,"context_line":"}"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"7a3c09a3_8366b7b8","line":200,"in_reply_to":"7a3c09a3_0511ef03","updated":"2017-01-18 17:10:54.000000000","message":"So you think if we would iterate over subnodes on L286 and pass the dvr_mode option per node and write it to local.conf, it would solve your concern?","commit_id":"ee7f30bd458aeec328e4fb614d62de549be7f6c8"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"633f6be76375ed02f71c3529b2fc0d8aaf18f6c2","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    Q_DVR_MODE\u003ddvr"},{"line_number":198,"context_line":"else"},{"line_number":199,"context_line":"    Q_DVR_MODE\u003ddvr_snat"},{"line_number":200,"context_line":"fi"},{"line_number":201,"context_line":"EOF"},{"line_number":202,"context_line":"}"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"7a3c09a3_99846a5e","line":200,"in_reply_to":"7a3c09a3_8366b7b8","updated":"2017-01-18 17:36:16.000000000","message":"That was my first patchset\nhttps://review.openstack.org/#/c/383827/1..10/devstack-vm-gate.sh\n\nI have to change first patchset  to write to local.conf instead of locarc?","commit_id":"ee7f30bd458aeec328e4fb614d62de549be7f6c8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1fca17501877a58e2bc42e6b8094d717256d08cd","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    Q_DVR_MODE\u003ddvr"},{"line_number":198,"context_line":"else"},{"line_number":199,"context_line":"    Q_DVR_MODE\u003ddvr_snat"},{"line_number":200,"context_line":"fi"},{"line_number":201,"context_line":"EOF"},{"line_number":202,"context_line":"}"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"7a3c09a3_f4e813b5","line":200,"in_reply_to":"7a3c09a3_99846a5e","updated":"2017-01-18 17:57:38.000000000","message":"I would suggest to use that patchset :) As the original writes to localrc, change of localrc to local.conf should be done in separate patch.","commit_id":"ee7f30bd458aeec328e4fb614d62de549be7f6c8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"fad4a25da3cebfc338a582d5a8470137fd4bb1d7","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    Q_DVR_MODE\u003ddvr"},{"line_number":198,"context_line":"else"},{"line_number":199,"context_line":"    Q_DVR_MODE\u003ddvr_snat"},{"line_number":200,"context_line":"fi"},{"line_number":201,"context_line":"EOF"},{"line_number":202,"context_line":"}"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-sh","patch_set":10,"id":"5a3905b3_a44c9d9e","line":200,"in_reply_to":"7a3c09a3_f4e813b5","updated":"2017-01-24 16:30:40.000000000","message":"That isn\u0027t quite what I was saying. I was trying to say you shouldn\u0027t embed shell that need to be executed and evaluated by devstack beyond simple variable assignment. The problem was the embedded if/else. One way to do that is to use local.conf directly as it forces you that way. Or continue to use localrc and just remove the if/else.","commit_id":"ee7f30bd458aeec328e4fb614d62de549be7f6c8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d85884ac14c173154c40b00952bd07933973bd65","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    if [[ \"$DEVSTACK_GATE_NEUTRON_DVR\" -eq \"1\" ]]; then"},{"line_number":233,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":234,"context_line":"            local sub_node\u003d$3"},{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_7bf27407","line":234,"updated":"2017-01-24 06:27:18.000000000","message":"Strange to see this here instead of top of function.  Can L316 not just pass \"\" ?","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"af518eccbb7b75d562397d8d400f6b235534193d","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    if [[ \"$DEVSTACK_GATE_NEUTRON_DVR\" -eq \"1\" ]]; then"},{"line_number":233,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":234,"context_line":"            local sub_node\u003d$3"},{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_93de20db","line":234,"in_reply_to":"5a3905b3_7bf27407","updated":"2017-01-24 10:23:17.000000000","message":"Thanks Brian. I am fine with the suggestion. But waiting for other reviewers opinion.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"64807fb236757ee69cec829ad44a83e20e7af261","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    if [[ \"$DEVSTACK_GATE_NEUTRON_DVR\" -eq \"1\" ]]; then"},{"line_number":233,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":234,"context_line":"            local sub_node\u003d$3"},{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_5ae67244","line":234,"in_reply_to":"5a3905b3_7f1a40c7","updated":"2017-01-24 16:49:02.000000000","message":"correct, unless this is run with set -u. The expansion just makes this bullet-proof.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b75dcfca24368f7428d94e4d7b5e522e0f3542d8","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    if [[ \"$DEVSTACK_GATE_NEUTRON_DVR\" -eq \"1\" ]]; then"},{"line_number":233,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":234,"context_line":"            local sub_node\u003d$3"},{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_e49dc50a","line":234,"in_reply_to":"5a3905b3_93de20db","updated":"2017-01-24 16:30:55.000000000","message":"what about just doing:\n\nlocal sub_node\u003d${3-\"\"}\n\ndon\u0027t need to pass anything on line 316 if there\u0027s no node","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b3c95e711428a3661c244389629425c1f4b9d200","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    if [[ \"$DEVSTACK_GATE_NEUTRON_DVR\" -eq \"1\" ]]; then"},{"line_number":233,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":234,"context_line":"            local sub_node\u003d$3"},{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_7f1a40c7","line":234,"in_reply_to":"5a3905b3_e49dc50a","updated":"2017-01-24 16:41:41.000000000","message":"Isn\u0027t this implicit behavior when you pass nothing?","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6ab46d138470c9fd18df076857953845f533fbb0","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"},{"line_number":238,"context_line":"            if [[ $sub_node \u003d $dvr_node ]]; then"},{"line_number":239,"context_line":"                echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\""},{"line_number":240,"context_line":"            else"},{"line_number":241,"context_line":"                echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_4eb934e9","line":238,"range":{"start_line":238,"start_character":18,"end_line":238,"end_character":40},"updated":"2017-01-19 13:50:37.000000000","message":"Although what you wrote must work (I tried), I see everywhere else things like \"$sub_node\" \u003d\u003d \"$dvr_node\"\n\nI wonder if there\u0027s a real difference.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9d71decbd404dcc7ef45ce84bb7f8a9904d2ee93","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"},{"line_number":238,"context_line":"            if [[ $sub_node \u003d $dvr_node ]]; then"},{"line_number":239,"context_line":"                echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\""},{"line_number":240,"context_line":"            else"},{"line_number":241,"context_line":"                echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_7a45ee40","line":238,"range":{"start_line":238,"start_character":18,"end_line":238,"end_character":40},"in_reply_to":"5a3905b3_1ffbfc79","updated":"2017-01-24 16:46:40.000000000","message":"I think quoting is needed only when using [, bash has protection for this case when [[ is used.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"98d7e0ea50fd3022b291401de8234a86750dfa4f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"},{"line_number":238,"context_line":"            if [[ $sub_node \u003d $dvr_node ]]; then"},{"line_number":239,"context_line":"                echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\""},{"line_number":240,"context_line":"            else"},{"line_number":241,"context_line":"                echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_693a6acf","line":238,"range":{"start_line":238,"start_character":18,"end_line":238,"end_character":40},"in_reply_to":"5a3905b3_4eb934e9","updated":"2017-01-19 13:58:34.000000000","message":"\u003d\u003d is used in posix style using [ binary. single \u003d works when [[ is used, which is a bash specific keyword, part of the language.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"c3288a2b4b223cabbba1df274dc87fa0704a6ee4","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"},{"line_number":238,"context_line":"            if [[ $sub_node \u003d $dvr_node ]]; then"},{"line_number":239,"context_line":"                echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\""},{"line_number":240,"context_line":"            else"},{"line_number":241,"context_line":"                echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_ce03640e","line":238,"range":{"start_line":238,"start_character":18,"end_line":238,"end_character":40},"in_reply_to":"5a3905b3_4eb934e9","updated":"2017-01-19 13:58:19.000000000","message":"I don\u0027t know the difference. This file is using both $var and \"$var\" in \"if\" conditions.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"2e33c61e3a182150a12d3afee55b02175d28b448","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"},{"line_number":238,"context_line":"            if [[ $sub_node \u003d $dvr_node ]]; then"},{"line_number":239,"context_line":"                echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\""},{"line_number":240,"context_line":"            else"},{"line_number":241,"context_line":"                echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_9717b050","line":238,"range":{"start_line":238,"start_character":18,"end_line":238,"end_character":40},"in_reply_to":"5a3905b3_693a6acf","updated":"2017-01-19 14:54:14.000000000","message":"Thanks for the explanation Jakub :)\n\nYou have entered my sh-bash-experts list :D","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"e4abf22a16d63deddc33fd8428a40d5bc01fd385","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            # First sub node will be dvr and others are dvr_snat"},{"line_number":236,"context_line":"            sub_nodes\u003d$(cat /etc/nodepool/sub_nodes_private)"},{"line_number":237,"context_line":"            dvr_node\u003d($sub_nodes)"},{"line_number":238,"context_line":"            if [[ $sub_node \u003d $dvr_node ]]; then"},{"line_number":239,"context_line":"                echo \"Q_DVR_MODE\u003ddvr\" \u003e\u003e\"$localrc_file\""},{"line_number":240,"context_line":"            else"},{"line_number":241,"context_line":"                echo \"Q_DVR_MODE\u003ddvr_snat\" \u003e\u003e\"$localrc_file\""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_1ffbfc79","line":238,"range":{"start_line":238,"start_character":18,"end_line":238,"end_character":40},"in_reply_to":"5a3905b3_9717b050","updated":"2017-01-24 16:43:36.000000000","message":"And the reason for quoting the variables is so that you don\u0027t end up with a shell parse error if a variable is empty. In the case of an empty var\n\n  $foo \u003d \"1\"\n\nBecause \u003d \"1\" which is a parse error. If you quote \"$foo\" then you get \"\" \u003d \"1\" which is not an error just a failed condition check.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"6ab46d138470c9fd18df076857953845f533fbb0","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        echo \"NETWORK_GATEWAY\u003d10.1.0.1\" \u003e\u003e\"$localrc_file\""},{"line_number":313,"context_line":"    fi"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    if [[ $role \u003d primary ]]; then"},{"line_number":316,"context_line":"        setup_dvr_agentmode $role $localrc_file"},{"line_number":317,"context_line":"    fi"},{"line_number":318,"context_line":""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_6ecef084","line":315,"updated":"2017-01-19 13:50:37.000000000","message":"ditto","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"c3288a2b4b223cabbba1df274dc87fa0704a6ee4","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        echo \"NETWORK_GATEWAY\u003d10.1.0.1\" \u003e\u003e\"$localrc_file\""},{"line_number":313,"context_line":"    fi"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    if [[ $role \u003d primary ]]; then"},{"line_number":316,"context_line":"        setup_dvr_agentmode $role $localrc_file"},{"line_number":317,"context_line":"    fi"},{"line_number":318,"context_line":""}],"source_content_type":"text/x-sh","patch_set":12,"id":"5a3905b3_8e74fccf","line":315,"in_reply_to":"5a3905b3_6ecef084","updated":"2017-01-19 13:58:19.000000000","message":"In original code, they are comparing like\n[[ $role \u003d sub ]];\n\nSo I did [[ $role \u003d primary ]];","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"3aed6061cb29d1cb0a07b27986497fa7d80a9b28","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \u0026\u003e \"$WORKSPACE/logs/devstack-gate-discover-hosts.txt\""},{"line_number":251,"context_line":"}"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"function setup_dvr_agentmode {"},{"line_number":254,"context_line":"    local role\u003d$1"},{"line_number":255,"context_line":"    local localrc_file\u003d$2"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-sh","patch_set":16,"id":"3a1ff146_e5992221","line":253,"updated":"2017-03-14 23:21:55.000000000","message":"Wouldn\u0027t a simpler way to do this be to set the primary node to dvr, then always set subnodes to dvr_snat? That would reduce the logic here I think.","commit_id":"fc7e6f821352d65f37f640964ef9964300c6e8f7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a3507b3478690a94ee55a1b6bf3d57a95658c29","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \u0026\u003e \"$WORKSPACE/logs/devstack-gate-discover-hosts.txt\""},{"line_number":251,"context_line":"}"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"function setup_dvr_agentmode {"},{"line_number":254,"context_line":"    local role\u003d$1"},{"line_number":255,"context_line":"    local localrc_file\u003d$2"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-sh","patch_set":16,"id":"3a1ff146_a2e555a9","line":253,"in_reply_to":"3a1ff146_e25d8ded","updated":"2017-03-15 05:51:10.000000000","message":"done","commit_id":"fc7e6f821352d65f37f640964ef9964300c6e8f7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"da9a58c94bbfea52b44d9e73420986b1f3ba04a0","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \u0026\u003e \"$WORKSPACE/logs/devstack-gate-discover-hosts.txt\""},{"line_number":251,"context_line":"}"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"function setup_dvr_agentmode {"},{"line_number":254,"context_line":"    local role\u003d$1"},{"line_number":255,"context_line":"    local localrc_file\u003d$2"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-sh","patch_set":16,"id":"3a1ff146_e25d8ded","line":253,"in_reply_to":"3a1ff146_e5992221","updated":"2017-03-15 05:34:34.000000000","message":"Yes, that simplifies the code a lot. I will do that.","commit_id":"fc7e6f821352d65f37f640964ef9964300c6e8f7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"7b57aa0b94ad4e2672307c57b6adcb9f524e34be","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":329,"context_line":"            localrc_set $localrc_file \"Q_DVR_MODE\" \"dvr_snat\""},{"line_number":330,"context_line":"        else"},{"line_number":331,"context_line":"            localrc_set $localrc_file \"Q_DVR_MODE\" \"dvr\""},{"line_number":332,"context_line":"        fi"},{"line_number":333,"context_line":"    fi"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-sh","patch_set":17,"id":"1a1ced50_e76e2c95","line":331,"updated":"2017-03-20 21:03:45.000000000","message":"This else will match the all in one (aio) case and set the only node to dvr.\n\nI think you want to have a third block or just update the if to catch the all in one case. Something like:\n\n  if not all in one and role is sub:\n      set dvr_snat\n  else if all in one:\n      set dvr_snat\n  else:\n      set dvr","commit_id":"fbeb9a3b1e7e56f2b6d4857d26e10f281b4a2c3b"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"0d08287b3bda89fc4129f447cc2af3546852d47b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" !\u003d \"aio\" ]] \u0026\u0026 [[ $role \u003d sub ]]; then"},{"line_number":329,"context_line":"            localrc_set $localrc_file \"Q_DVR_MODE\" \"dvr_snat\""},{"line_number":330,"context_line":"        else"},{"line_number":331,"context_line":"            localrc_set $localrc_file \"Q_DVR_MODE\" \"dvr\""},{"line_number":332,"context_line":"        fi"},{"line_number":333,"context_line":"    fi"},{"line_number":334,"context_line":""}],"source_content_type":"text/x-sh","patch_set":17,"id":"1a1ced50_598193c2","line":331,"in_reply_to":"1a1ced50_e76e2c95","updated":"2017-03-21 08:09:50.000000000","message":"Done","commit_id":"fbeb9a3b1e7e56f2b6d4857d26e10f281b4a2c3b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"df81f60443be3b1de37178150436055c36884012","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    fi"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    if [[ \"$DEVSTACK_GATE_NEUTRON_DVR\" -eq \"1\" ]]; then"},{"line_number":326,"context_line":"        # The role for L3 agents running on first node is \u0027dvr\u0027 and"},{"line_number":327,"context_line":"        # other nodes is \u0027dvr_snat\u0027"},{"line_number":328,"context_line":"        if [[ \"$DEVSTACK_GATE_TOPOLOGY\" \u003d\u003d \"aio\" ]] || [[ $role \u003d sub ]]; then"},{"line_number":329,"context_line":"            localrc_set $localrc_file \"Q_DVR_MODE\" \"dvr_snat\""}],"source_content_type":"text/x-sh","patch_set":18,"id":"1a1ced50_265bb4f7","line":326,"range":{"start_line":326,"start_character":49,"end_line":326,"end_character":54},"updated":"2017-03-21 20:09:10.000000000","message":"nit: s/compute node","commit_id":"678a38633f4262955beb1ffaae8ece7763699875"}],"multinode_setup_info.txt":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"e4abf22a16d63deddc33fd8428a40d5bc01fd385","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":12,"id":"5a3905b3_3f87d8b5","line":148,"updated":"2017-01-24 16:43:36.000000000","message":"This isn\u0027t strictly true. gate-tempest-dsvm-neutron-dvr-ha-multinode-full-ubuntu-xenial-nv appears to run on 3-node test env.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"fb9d4a05a4e4ab628623f48f8a8993928feec049","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":12,"id":"5a3905b3_27cb3320","line":148,"in_reply_to":"5a3905b3_3f87d8b5","updated":"2017-01-25 04:13:26.000000000","message":"Yes. This patch is mainly for gate-tempest-dsvm-neutron-dvr-ha-multinode-full-ubuntu-xenial-nv job, to test DVR+HA feature.","commit_id":"cffc3ed3fd689ff2c29ff94307bd46b63fdf5fb9"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"30083e129e932b6fc7396d1caa910f21dde2f0c4","unresolved":false,"context_lines":[{"line_number":143,"context_line":"|                          |   |                          |   |                          |"},{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_e09238f5","line":146,"updated":"2017-01-31 14:19:42.000000000","message":"s/the primary node","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6b1afddd6b1619b05776f7e845587d1c194a9e04","unresolved":false,"context_lines":[{"line_number":143,"context_line":"|                          |   |                          |   |                          |"},{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_1c5088d3","line":146,"in_reply_to":"3a461143_e09238f5","updated":"2017-01-31 16:38:05.000000000","message":"Done","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"30083e129e932b6fc7396d1caa910f21dde2f0c4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_80b89476","line":147,"range":{"start_line":147,"start_character":77,"end_line":147,"end_character":80},"updated":"2017-01-31 14:19:42.000000000","message":"s/DVR","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"30083e129e932b6fc7396d1caa910f21dde2f0c4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_e080788d","line":147,"range":{"start_line":147,"start_character":43,"end_line":147,"end_character":52},"updated":"2017-01-31 14:19:42.000000000","message":"s/any remaining","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"30083e129e932b6fc7396d1caa910f21dde2f0c4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_a07af0ba","line":147,"range":{"start_line":147,"start_character":10,"end_line":147,"end_character":15},"updated":"2017-01-31 14:19:42.000000000","message":"s/the first","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6b1afddd6b1619b05776f7e845587d1c194a9e04","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_5c64d0b7","line":147,"range":{"start_line":147,"start_character":77,"end_line":147,"end_character":80},"in_reply_to":"3a461143_80b89476","updated":"2017-01-31 16:38:05.000000000","message":"Done","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6b1afddd6b1619b05776f7e845587d1c194a9e04","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_7c57ccc9","line":147,"range":{"start_line":147,"start_character":10,"end_line":147,"end_character":15},"in_reply_to":"3a461143_a07af0ba","updated":"2017-01-31 16:38:05.000000000","message":"Done","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6b1afddd6b1619b05776f7e845587d1c194a9e04","unresolved":false,"context_lines":[{"line_number":144,"context_line":"+--------------------------+   +--------------------------+   +--------------------------+"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_9c5ab8f0","line":147,"range":{"start_line":147,"start_character":43,"end_line":147,"end_character":52},"in_reply_to":"3a461143_e080788d","updated":"2017-01-31 16:38:05.000000000","message":"Done","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"30083e129e932b6fc7396d1caa910f21dde2f0c4","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_c0ae1c2d","line":148,"range":{"start_line":148,"start_character":6,"end_line":148,"end_character":12},"updated":"2017-01-31 14:19:42.000000000","message":"a 2-node\n\nAnd it would be good to explain that \"dvr_snat\" means it\u0027s a network node w/centralized SNAT, \"dvr\" means it\u0027s a compute node.","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"6b1afddd6b1619b05776f7e845587d1c194a9e04","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for first subnode and \"dvr_snat\" for remaining subnodes. Currently all dvr jobs are"},{"line_number":148,"context_line":"using 2 node setup. DVR HA jobs need 3 node setup with this configuration."}],"source_content_type":"text/plain","patch_set":13,"id":"3a461143_bc75b464","line":148,"range":{"start_line":148,"start_character":6,"end_line":148,"end_character":12},"in_reply_to":"3a461143_c0ae1c2d","updated":"2017-01-31 16:38:05.000000000","message":"Done","commit_id":"c84a5a4ddc6921132d275d36c4a3580f81f1674d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"10c96a0cbe5da17441bfaf017214602655eb412a","unresolved":false,"context_lines":[{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for the primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represent the network node with centralized SNAT, and \"dvr\" represent compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":14,"id":"3a461143_7de6b845","line":149,"range":{"start_line":149,"start_character":0,"end_line":149,"end_character":9},"updated":"2017-02-01 18:06:25.000000000","message":"represents","commit_id":"e96eeb96bac38d45bf8a57979fe3c1021cefc1c8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"10c96a0cbe5da17441bfaf017214602655eb412a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represent the network node with centralized SNAT, and \"dvr\" represent compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":14,"id":"3a461143_fd5628cd","line":150,"updated":"2017-02-01 18:06:25.000000000","message":"This means that if we want to have two computes and two controllers the current logic would prevents us to do that.","commit_id":"e96eeb96bac38d45bf8a57979fe3c1021cefc1c8"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"4c5b7ccca3d38a2c3f4e54466c60e2f7b4a740ab","unresolved":false,"context_lines":[{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represent the network node with centralized SNAT, and \"dvr\" represent compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":14,"id":"ba2be162_185ac64f","line":150,"in_reply_to":"3a461143_fd5628cd","updated":"2017-03-02 12:32:27.000000000","message":"Right.","commit_id":"e96eeb96bac38d45bf8a57979fe3c1021cefc1c8"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"32529a1da936b9a2f5bc217bfe58beb805c0249b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for the primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represents the network node with centralized SNAT, and \"dvr\" represent compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":15,"id":"9a30ddce_d8bb0b71","line":149,"range":{"start_line":149,"start_character":61,"end_line":149,"end_character":70},"updated":"2017-03-07 18:32:22.000000000","message":"represents","commit_id":"771dc4209c675bcb61060d227434f32746570c76"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"3aed6061cb29d1cb0a07b27986497fa7d80a9b28","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for the primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represents the network node with centralized SNAT, and \"dvr\" represents compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":16,"id":"3a1ff146_4554b653","line":148,"updated":"2017-03-14 23:21:55.000000000","message":"Just noting that we do have 3 node dvr jobs now...","commit_id":"fc7e6f821352d65f37f640964ef9964300c6e8f7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"da9a58c94bbfea52b44d9e73420986b1f3ba04a0","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for the primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represents the network node with centralized SNAT, and \"dvr\" represents compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":16,"id":"3a1ff146_e204adc7","line":148,"in_reply_to":"3a1ff146_4554b653","updated":"2017-03-15 05:34:34.000000000","message":"sure, I will remove that.","commit_id":"fc7e6f821352d65f37f640964ef9964300c6e8f7"},{"author":{"_account_id":10267,"name":"venkata anil","email":"anilvenkata@redhat.com","username":"anil"},"change_message_id":"7a3507b3478690a94ee55a1b6bf3d57a95658c29","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"When DVR is enabled, agent_mode in l3_agent.ini for the primary node will be set to \"dvr_snat\","},{"line_number":147,"context_line":"\"dvr\" for the first subnode and \"dvr_snat\" for any remaining subnodes. Currently all DVR jobs are"},{"line_number":148,"context_line":"using a 2-node setup. DVR HA jobs need 3 node setup with this configuration, where \"dvr_snat\""},{"line_number":149,"context_line":"represents the network node with centralized SNAT, and \"dvr\" represents compute nodes. There"},{"line_number":150,"context_line":"should be at least 2 \"dvr_snat\" nodes."}],"source_content_type":"text/plain","patch_set":16,"id":"3a1ff146_e2ed8d8f","line":148,"in_reply_to":"3a1ff146_e204adc7","updated":"2017-03-15 05:51:10.000000000","message":"done","commit_id":"fc7e6f821352d65f37f640964ef9964300c6e8f7"}]}
