)]}'
{"lib/neutron":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"003e8cd458fc7fe48c9ee5dd464cdba4d08b8a5e","unresolved":false,"context_lines":[{"line_number":948,"context_line":"    if [[ \"$PUBLIC_INTERFACE\" !\u003d \"\" \u0026\u0026 \"$OVS_PHYSICAL_BRIDGE\" !\u003d \"\" ]]; then"},{"line_number":949,"context_line":"      # Remove the IP address from the PHYSICAL_INTERFACE, add it to the"},{"line_number":950,"context_line":"      # $OVS_PHYSICAL_BRIDGE. This is a required step for DevStack installs where"},{"line_number":951,"context_line":"      # there is only one interface available for use. Obviously, for a production"},{"line_number":952,"context_line":"      # multiple interfaces are recommended to separate tenant, API, and management traffic"},{"line_number":953,"context_line":"        local PUBLIC_NETWORK_BROADCAST\u003d$(route | grep $PUBLIC_INTERFACE | awk \u0027{print $3}\u0027)"},{"line_number":954,"context_line":"        local IP\u003d$(ip addr show dev $PUBLIC_INTERFACE | grep \u0027 inet \u0027 | awk \u0027{print $2}\u0027| tail -n1)"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"ba7be1f8_a81a5ec3","line":951,"updated":"2015-02-26 04:56:32.000000000","message":"How do u know it is the only one interface env?","commit_id":"5b24ff2cea4d0f173ce08bbf8a96ec5d11a5c8d5"},{"author":{"_account_id":10796,"name":"Deepak C Shetty (deepakcs)","email":"dpkshetty@gmail.com","username":"deepakcs"},"change_message_id":"69ddd2b7079b1ea8dc883f74f85e97c902bacdf6","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE"},{"line_number":963,"context_line":"        sudo route add default gw $DEFAULT_ROUTE_GW"},{"line_number":964,"context_line":"    fi"},{"line_number":965,"context_line":"}"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"function _configure_neutron_metadata_agent {"},{"line_number":968,"context_line":"    cp $NEUTRON_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba7be1f8_7fe60518","line":965,"updated":"2015-02-27 17:20:33.000000000","message":"Wouldn\u0027t it be good if we do the above change (ip del, add if to br, ip to br) as a single command (separated by ; ) so that we don\u0027t lose network connectivity ?","commit_id":"3bd746be6868a3012bee15186eb54d25d6bdf783"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"cb23c2f438df7c21498741f7e593a79152013d53","unresolved":false,"context_lines":[{"line_number":962,"context_line":"        sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE"},{"line_number":963,"context_line":"        sudo route add default gw $DEFAULT_ROUTE_GW"},{"line_number":964,"context_line":"    fi"},{"line_number":965,"context_line":"}"},{"line_number":966,"context_line":""},{"line_number":967,"context_line":"function _configure_neutron_metadata_agent {"},{"line_number":968,"context_line":"    cp $NEUTRON_DIR/etc/metadata_agent.ini $Q_META_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"ba7be1f8_3ffe4d6c","line":965,"in_reply_to":"ba7be1f8_7fe60518","updated":"2015-02-27 17:26:29.000000000","message":"Good suggestion.","commit_id":"3bd746be6868a3012bee15186eb54d25d6bdf783"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"576c7432be2d2a9930b7a3cc58f6c11cde2649a6","unresolved":false,"context_lines":[{"line_number":776,"context_line":"# cleanup_neutron() - Remove residual data files, anything left over from previous"},{"line_number":777,"context_line":"# runs that a clean run would need to clean up"},{"line_number":778,"context_line":"function cleanup_neutron {"},{"line_number":779,"context_line":"    if [[ \"$PUBLIC_INTERFACE\" !\u003d \"\" \u0026\u0026 \"$OVS_PHYSICAL_BRIDGE\" !\u003d \"\" ]]; then"},{"line_number":780,"context_line":"        DEFAULT_ROUTE_GW\u003d$(route | grep \u0027default\u0027 | awk \u0027{print $2}\u0027)"},{"line_number":781,"context_line":"        for IP in $(ip addr show dev $OVS_PHYSICAL_BRIDGE | grep \u0027 inet \u0027 | awk \u0027{print $2}\u0027); do"},{"line_number":782,"context_line":"            sudo ip addr del $IP dev $OVS_PHYSICAL_BRIDGE"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"9a80dd14_bebd4804","line":779,"updated":"2015-03-09 13:42:15.000000000","message":"OVS_PHYSICAL_BRIDGE is not defined and should not be defined when you are using a tunnelling network type for tenant network.\n\nLooks like the example in the devstack doc is for the scenario, when you use a single ovs vlan bridge and your `native vlan` is the public/floating network.\nIt may help if you would like to use single trunk port on one interface, but is deficiently not the common dev scenario and definitely not for single node OS deployments.\n\nWhen someone uses tunnelling the br-tun what replaces the br-ethx and you do not need to specify any related interface. The $TUNNEL_ENDPOINT_IP matters, which defaults to the $HOST_IP.\nthe br-ethx Is more like the nova private networks, not the public one.\n\nThe br-ex in this case by default exists (just)for the floating network (the br-ex is usually coexist in multi-nic VLAN setup with the br-eth1)\n\nbr-ex might get a directly attached external interface,\nbut in this case you might get issues with the PMTUD, unless you do not do a special MTU setting on the physical router.\n\nPS.: The default dev nova-network setup did not required vlans.","commit_id":"e61a9d88824c0cdf671cd970c8ac3662d8c8c039"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"c7f2f79fc64109c338034426e1a681de84fcc0f1","unresolved":false,"context_lines":[{"line_number":777,"context_line":"# runs that a clean run would need to clean up"},{"line_number":778,"context_line":"function cleanup_neutron {"},{"line_number":779,"context_line":"    if [[ \"$PUBLIC_INTERFACE\" !\u003d \"\" \u0026\u0026 \"$OVS_PHYSICAL_BRIDGE\" !\u003d \"\" ]]; then"},{"line_number":780,"context_line":"        DEFAULT_ROUTE_GW\u003d$(route | grep \u0027default\u0027 | awk \u0027{print $2}\u0027)"},{"line_number":781,"context_line":"        for IP in $(ip addr show dev $OVS_PHYSICAL_BRIDGE | grep \u0027 inet \u0027 | awk \u0027{print $2}\u0027); do"},{"line_number":782,"context_line":"            sudo ip addr del $IP dev $OVS_PHYSICAL_BRIDGE"},{"line_number":783,"context_line":"            sudo ip addr add $IP dev $PUBLIC_INTERFACE"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"9a80dd14_b3e66842","line":780,"updated":"2015-03-09 10:37:29.000000000","message":"can we route -n, to save the reverse lookup?","commit_id":"e61a9d88824c0cdf671cd970c8ac3662d8c8c039"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"c7f2f79fc64109c338034426e1a681de84fcc0f1","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        # $OVS_PHYSICAL_BRIDGE. This is a required step for DevStack installs where"},{"line_number":953,"context_line":"        # there is only one interface available for use. Obviously, for a production"},{"line_number":954,"context_line":"        # multiple interfaces are recommended to separate tenant, API, and management traffic"},{"line_number":955,"context_line":"        if [ $(route | grep \u0027default\u0027 | grep -c $PUBLIC_INTERFACE) \u003d\u003d 1 ]; then"},{"line_number":956,"context_line":"            # Grab the default route from PUBLIC_INTERFACE, and add it back after assigning"},{"line_number":957,"context_line":"            # the IP to $OVS_PHYSICAL_BRIDGE"},{"line_number":958,"context_line":"            DEFAULT_ROUTE_GW\u003d$(route | grep \u0027default\u0027 | awk \u0027{print $2}\u0027)"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"9a80dd14_73c79096","line":955,"updated":"2015-03-09 10:37:29.000000000","message":"same -n please.","commit_id":"e61a9d88824c0cdf671cd970c8ac3662d8c8c039"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5452c77831e2f3fca57d246d3a7a56e403b086be","unresolved":false,"context_lines":[{"line_number":942,"context_line":"        # $OVS_PHYSICAL_BRIDGE. This is a required step for DevStack installs where"},{"line_number":943,"context_line":"        # there is only one interface available for use. Obviously, for a production"},{"line_number":944,"context_line":"        # multiple interfaces are recommended to separate tenant, API, and management traffic"},{"line_number":945,"context_line":"        if [ $(route -n | grep \u0027default\u0027 | grep -c $PUBLIC_INTERFACE) \u003d\u003d 1 ]; then"},{"line_number":946,"context_line":"            # Grab the default route from PUBLIC_INTERFACE, and add it back after assigning"},{"line_number":947,"context_line":"            # the IP to $OVS_PHYSICAL_BRIDGE"},{"line_number":948,"context_line":"            DEFAULT_ROUTE_GW\u003d$(route -n | grep \u0027default\u0027 | awk \u0027{print $2}\u0027)"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"9a80dd14_c2101aab","line":945,"updated":"2015-03-10 20:05:18.000000000","message":"Sorry I\u0027m late to the review, I probably owe Sean a beer now... :)\n\n\u0027route -n\u0027 will not print \u0027default\u0027, but instead 0.0.0.0, perhaps change to using \u0027ip r\u0027 ?\n\nAlso, you use \u0027route -n\u0027 two times in a row (maybe three), you can maybe just do it once and save it to a local, then parse it in the three places?","commit_id":"783c67c067b64ba20f7c5a2bdebeb5f4589e1acb"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5452c77831e2f3fca57d246d3a7a56e403b086be","unresolved":false,"context_lines":[{"line_number":947,"context_line":"            # the IP to $OVS_PHYSICAL_BRIDGE"},{"line_number":948,"context_line":"            DEFAULT_ROUTE_GW\u003d$(route -n | grep \u0027default\u0027 | awk \u0027{print $2}\u0027)"},{"line_number":949,"context_line":"        fi"},{"line_number":950,"context_line":"        local PUBLIC_NETWORK_BROADCAST\u003d$(route -n | sed -e \u0027/default/d\u0027 | grep $PUBLIC_INTERFACE | awk \u0027{print $3}\u0027)"},{"line_number":951,"context_line":"        local IP\u003d$(ip addr show dev $PUBLIC_INTERFACE | grep \u0027 inet \u0027 | awk \u0027{print $2}\u0027| tail -n1)"},{"line_number":952,"context_line":"        sudo ip addr del $IP dev $PUBLIC_INTERFACE; sudo ip addr add $IP broadcast $PUBLIC_NETWORK_BROADCAST dev $OVS_PHYSICAL_BRIDGE; sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE; sudo route add default gw $DEFAULT_ROUTE_GW"},{"line_number":953,"context_line":"    fi"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"9a80dd14_02cdd25d","line":950,"updated":"2015-03-10 20:05:18.000000000","message":"This returned subnet masks on my system, like 255.255.255.0","commit_id":"783c67c067b64ba20f7c5a2bdebeb5f4589e1acb"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5452c77831e2f3fca57d246d3a7a56e403b086be","unresolved":false,"context_lines":[{"line_number":948,"context_line":"            DEFAULT_ROUTE_GW\u003d$(route -n | grep \u0027default\u0027 | awk \u0027{print $2}\u0027)"},{"line_number":949,"context_line":"        fi"},{"line_number":950,"context_line":"        local PUBLIC_NETWORK_BROADCAST\u003d$(route -n | sed -e \u0027/default/d\u0027 | grep $PUBLIC_INTERFACE | awk \u0027{print $3}\u0027)"},{"line_number":951,"context_line":"        local IP\u003d$(ip addr show dev $PUBLIC_INTERFACE | grep \u0027 inet \u0027 | awk \u0027{print $2}\u0027| tail -n1)"},{"line_number":952,"context_line":"        sudo ip addr del $IP dev $PUBLIC_INTERFACE; sudo ip addr add $IP broadcast $PUBLIC_NETWORK_BROADCAST dev $OVS_PHYSICAL_BRIDGE; sudo ovs-vsctl add-port $OVS_PHYSICAL_BRIDGE $PUBLIC_INTERFACE; sudo route add default gw $DEFAULT_ROUTE_GW"},{"line_number":953,"context_line":"    fi"},{"line_number":954,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"9a80dd14_42c0aa2a","line":951,"updated":"2015-03-10 20:05:18.000000000","message":"Using \u0027ip -4 addr...\u0027 would have filtered the IPv6 addresses out here too, instead of the extra spaces around \u0027inet\u0027.\n\nAlso, I think you want to use \u0027head -n1\u0027 as if there is more than on IP address here, tail will pull the secondary, not the primary.\n\nAnd you can condense these two above to a single call:\n\n    local IP_BRD\u003d$(ip -4 a s dev $PUBLIC_INTERFACE | grep inet | head -n1 | awk \u0027{print $2, $3, $4}\u0027)\n\nThat should return something like this, which you can feed right back to /sbin/ip, even on delete:\n\n    10.0.0.20/24 brd 10.0.0.255","commit_id":"783c67c067b64ba20f7c5a2bdebeb5f4589e1acb"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6b365ff7d3c90438f7ce2c6173b632e789370502","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        local DEFAULT_ROUTE_GW\u003d$(echo $DEFAULT_ROUTE | awk \u0027{print $2}\u0027)"},{"line_number":775,"context_line":"        local DEFAULT_ROUTE_IFACE\u003d$(echo $DEFAULT_ROUTE | awk \u0027{print $8}\u0027)"},{"line_number":776,"context_line":"        #Save IFS"},{"line_number":777,"context_line":"        local OIFS\u003dIFS"},{"line_number":778,"context_line":"        IFS\u003d$\u0027\\n\u0027"},{"line_number":779,"context_line":"        for IP_DATA in $(ip -4 a s dev $OVS_PHYSICAL_BRIDGE | grep \u0027 inet \u0027); do"},{"line_number":780,"context_line":"            local IP\u003d$(echo $IP_DATA | awk \u0027{print $2}\u0027)"}],"source_content_type":"application/x-shellscript","patch_set":17,"id":"9a80dd14_19c12580","line":777,"range":{"start_line":777,"start_character":19,"end_line":777,"end_character":22},"updated":"2015-03-19 18:39:09.000000000","message":"local OIFS\u003d$IFS","commit_id":"603e6e558e791dacfa014b23777297719e24c4e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ddae6eeec81ffbf6d98713df930f511d28623afc","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        #Save IFS"},{"line_number":777,"context_line":"        local OIFS\u003d$IFS"},{"line_number":778,"context_line":"        IFS\u003d$\u0027\\n\u0027"},{"line_number":779,"context_line":"        for IP_DATA in $(ip -4 a s dev $OVS_PHYSICAL_BRIDGE | grep \u0027 inet \u0027); do"},{"line_number":780,"context_line":"            local IP\u003d$(echo $IP_DATA | awk \u0027{print $2}\u0027)"},{"line_number":781,"context_line":"            sudo ip addr del $IP dev $OVS_PHYSICAL_BRIDGE"},{"line_number":782,"context_line":"            if [ $(echo $IP_DATA | grep -c \u0027brd\u0027) \u003d\u003d 1 ]; then"}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"9a80dd14_fa4a7f25","line":779,"updated":"2015-03-19 19:50:59.000000000","message":"This doesn\u0027t seem to work, it\u0027s iterating through the items in \"inet 10.1.1.20/24 brd 10.1.1.255 scope global dummy1\" when I test it independently.\n\nAnd why are we iterating through all the IPs when we only moved one in _configure_neutron_l3_agent() ?","commit_id":"a24693ed85489bffafab922602e8afdbd950ae43"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"a209f74429095b1ae852580816ee644e4d1607f6","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        #Save IFS"},{"line_number":777,"context_line":"        local OIFS\u003d$IFS"},{"line_number":778,"context_line":"        IFS\u003d$\u0027\\n\u0027"},{"line_number":779,"context_line":"        for IP_DATA in $(ip -4 a s dev $OVS_PHYSICAL_BRIDGE | grep \u0027 inet \u0027); do"},{"line_number":780,"context_line":"            local IP\u003d$(echo $IP_DATA | awk \u0027{print $2}\u0027)"},{"line_number":781,"context_line":"            sudo ip addr del $IP dev $OVS_PHYSICAL_BRIDGE"},{"line_number":782,"context_line":"            if [ $(echo $IP_DATA | grep -c \u0027brd\u0027) \u003d\u003d 1 ]; then"}],"source_content_type":"application/x-shellscript","patch_set":18,"id":"9a80dd14_ba3727fd","line":779,"in_reply_to":"9a80dd14_fa4a7f25","updated":"2015-03-19 20:04:52.000000000","message":"@Brian - when you say it is iterating through items - you need to set IFS like I do a couple lines above if you are testing independently, otherwise it\u0027ll iterate though each item separated by whitespace. Setting IFS to the newline means it\u0027ll iterate though each IP address instead of each word.","commit_id":"a24693ed85489bffafab922602e8afdbd950ae43"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f7c2a289382b0caf3aa881174470a42ef7a94a0f","unresolved":false,"context_lines":[{"line_number":787,"context_line":"    local to_intf\u003d$2"},{"line_number":788,"context_line":"    local add_ovs_port\u003d$3"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"    if [[ \"$from_intf\" !\u003d \"\" \u0026\u0026 \"$to_intf\" !\u003d \"\" ]]; then"},{"line_number":791,"context_line":"        # Remove the primary IP address from $from_intf and add it to $to_intf,"},{"line_number":792,"context_line":"        # along with the default route, if it exists.  Also, when called"},{"line_number":793,"context_line":"        # on configure we will also add $from_intf as a port on $to_intf,"}],"source_content_type":"application/x-shellscript","patch_set":21,"id":"1a6ced46_b2285987","line":790,"updated":"2015-03-25 15:04:46.000000000","message":"use -n here","commit_id":"beaf8a86cf9f495b44fd048a0dfc26e47a7b5e79"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f7c2a289382b0caf3aa881174470a42ef7a94a0f","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # on configure we will also add $from_intf as a port on $to_intf,"},{"line_number":794,"context_line":"        # assuming it is an OVS bridge."},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        local IP_BRD\u003d$(ip -4 a s dev $from_intf | grep inet | head -n1 | awk \u0027{print $2, $3, $4}\u0027)"},{"line_number":797,"context_line":"        local DEFAULT_ROUTE_GW\u003d$(ip r | grep \u0027default\u0027 | grep $from_intf | awk \u0027{print $3}\u0027)"},{"line_number":798,"context_line":"        local ADD_OVS_PORT\u003d\"\""},{"line_number":799,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":21,"id":"1a6ced46_922fdd87","line":796,"updated":"2015-03-25 15:04:46.000000000","message":"lower case local var names\n\n  ip -4 a s dev $from_intf | awk \u0027/inet/ { print $2, $3, $4; exit }\u0027","commit_id":"beaf8a86cf9f495b44fd048a0dfc26e47a7b5e79"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f7c2a289382b0caf3aa881174470a42ef7a94a0f","unresolved":false,"context_lines":[{"line_number":794,"context_line":"        # assuming it is an OVS bridge."},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        local IP_BRD\u003d$(ip -4 a s dev $from_intf | grep inet | head -n1 | awk \u0027{print $2, $3, $4}\u0027)"},{"line_number":797,"context_line":"        local DEFAULT_ROUTE_GW\u003d$(ip r | grep \u0027default\u0027 | grep $from_intf | awk \u0027{print $3}\u0027)"},{"line_number":798,"context_line":"        local ADD_OVS_PORT\u003d\"\""},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"        if [ \"$DEFAULT_ROUTE_GW\" !\u003d \"\" ]; then"}],"source_content_type":"application/x-shellscript","patch_set":21,"id":"1a6ced46_32d38905","line":797,"updated":"2015-03-25 15:04:46.000000000","message":"we can re-write these pipes purely in awk:\n\n  ip r | awk \"/default.+$from_intf/ { print \\$3; exit }\"","commit_id":"beaf8a86cf9f495b44fd048a0dfc26e47a7b5e79"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b60879094d1f53c1ace3b385b1c03bc43ac92fe6","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # on configure we will also add $from_intf as a port on $to_intf,"},{"line_number":794,"context_line":"        # assuming it is an OVS bridge."},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        local IP_BRD\u003d$(ip -4 a s dev $from_intf | awk \u0027/inet/ { print $2, $3, $4; exit }\u0027)"},{"line_number":797,"context_line":"        local DEFAULT_ROUTE_GW\u003d$(ip r | awk \"/default.+$from_intf/ { print \\$3; exit }\")"},{"line_number":798,"context_line":"        local ADD_OVS_PORT\u003d\"\""},{"line_number":799,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":23,"id":"1a6ced46_664aa327","line":796,"updated":"2015-03-25 16:11:49.000000000","message":"This doesn\u0027t look equivalent as \u0027head -n1\u0027 is gone - that\u0027s important as there could be more than one IP on the interface.","commit_id":"93b2100c983e1c271a8d51aa7f4755a6445be6a8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e154134c9049790e91e480a68bdf742fd9ed934d","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # on configure we will also add $from_intf as a port on $to_intf,"},{"line_number":794,"context_line":"        # assuming it is an OVS bridge."},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        local IP_BRD\u003d$(ip -4 a s dev $from_intf | awk \u0027/inet/ { print $2, $3, $4; exit }\u0027)"},{"line_number":797,"context_line":"        local DEFAULT_ROUTE_GW\u003d$(ip r | awk \"/default.+$from_intf/ { print \\$3; exit }\")"},{"line_number":798,"context_line":"        local ADD_OVS_PORT\u003d\"\""},{"line_number":799,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":23,"id":"1a6ced46_011f195c","line":796,"in_reply_to":"1a6ced46_26ec2b8f","updated":"2015-03-25 16:26:20.000000000","message":"I guess I should have actually tried it first!  Thanks for the info Dean.","commit_id":"93b2100c983e1c271a8d51aa7f4755a6445be6a8"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8edb519ee6bbc51b2aedd8df983b776310dc40bc","unresolved":false,"context_lines":[{"line_number":793,"context_line":"        # on configure we will also add $from_intf as a port on $to_intf,"},{"line_number":794,"context_line":"        # assuming it is an OVS bridge."},{"line_number":795,"context_line":""},{"line_number":796,"context_line":"        local IP_BRD\u003d$(ip -4 a s dev $from_intf | awk \u0027/inet/ { print $2, $3, $4; exit }\u0027)"},{"line_number":797,"context_line":"        local DEFAULT_ROUTE_GW\u003d$(ip r | awk \"/default.+$from_intf/ { print \\$3; exit }\")"},{"line_number":798,"context_line":"        local ADD_OVS_PORT\u003d\"\""},{"line_number":799,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":23,"id":"1a6ced46_26ec2b8f","line":796,"in_reply_to":"1a6ced46_664aa327","updated":"2015-03-25 16:20:46.000000000","message":"The exit inside the awk brackets stops after the first match is printed.","commit_id":"93b2100c983e1c271a8d51aa7f4755a6445be6a8"}]}
