)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ec0707b5fd29021805ffd151a27a13160046770e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jens Rosenboom \u003cj.rosenboom@x-ion.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-04 22:16:52 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Switch the default to Linuxbridge"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Jens Rosenboom \u003cj.rosenboom@x-ion.de\u003e"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9aa53dc9_7f548f53","line":7,"updated":"2015-04-06 12:07:05.000000000","message":"can you add a brief explanation why it can be a good idea?","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c9a48e1c9ccad746313682b9c0ab024ee0d58e86","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jens Rosenboom \u003cj.rosenboom@x-ion.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-04 22:16:52 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Switch the default to Linuxbridge"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Co-Authored-By: Jens Rosenboom \u003cj.rosenboom@x-ion.de\u003e"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9aa53dc9_dd92314b","line":7,"in_reply_to":"9aa53dc9_7f548f53","updated":"2015-04-08 06:00:53.000000000","message":"Done","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"}],"lib/neutron-legacy":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"aa2c4d79ab516c398390aaebff0dceac4090e45a","unresolved":false,"context_lines":[{"line_number":301,"context_line":"# network."},{"line_number":302,"context_line":"#"},{"line_number":303,"context_line":"# Example: ``LB_PHYSICAL_INTERFACE\u003deth1``"},{"line_number":304,"context_line":"LB_PHYSICAL_INTERFACE\u003d${LB_PHYSICAL_INTERFACE:-eth0}"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# When Neutron tunnels are enabled it is needed to specify the"},{"line_number":307,"context_line":"# IP address of the end point in the local server. This IP is set"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"baa041b7_064dc53d","line":304,"updated":"2015-04-06 10:30:25.000000000","message":"I don\u0027t think we can set this as a default.","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c9a48e1c9ccad746313682b9c0ab024ee0d58e86","unresolved":false,"context_lines":[{"line_number":301,"context_line":"# network."},{"line_number":302,"context_line":"#"},{"line_number":303,"context_line":"# Example: ``LB_PHYSICAL_INTERFACE\u003deth1``"},{"line_number":304,"context_line":"LB_PHYSICAL_INTERFACE\u003d${LB_PHYSICAL_INTERFACE:-eth0}"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# When Neutron tunnels are enabled it is needed to specify the"},{"line_number":307,"context_line":"# IP address of the end point in the local server. This IP is set"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"9aa53dc9_5d78612b","line":304,"in_reply_to":"baa041b7_064dc53d","updated":"2015-04-08 06:00:53.000000000","message":"It was needed for the vlan variant, maybe for vxlan we can do without, trying that right now. The other option would be to explicitly set this in every test job that might need it.","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"04648bebf18c0e2c50d7e9d1ed31c015736c4d08","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        fi"},{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            sleep 10"},{"line_number":1272,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1273,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"},{"line_number":1274,"context_line":"                sudo ip link set $ext_gw_interface up"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"baa041b7_09f5e381","line":1271,"updated":"2015-04-05 12:19:28.000000000","message":"Why is this sleep needed? Can you add comments about the reason?","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c9a48e1c9ccad746313682b9c0ab024ee0d58e86","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        fi"},{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            sleep 10"},{"line_number":1272,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1273,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"},{"line_number":1274,"context_line":"                sudo ip link set $ext_gw_interface up"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"9aa53dc9_fd8f3521","line":1271,"in_reply_to":"9aa53dc9_6c3027e9","updated":"2015-04-08 06:00:53.000000000","message":"I\u0027ve changed to using that loop, but I do not think that this is related to the errors we are seeing in Jenkins currently.","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"6c1a1a292dd9eef001f287bfb3036c05656dc13f","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        fi"},{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            sleep 10"},{"line_number":1272,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1273,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"},{"line_number":1274,"context_line":"                sudo ip link set $ext_gw_interface up"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"baa041b7_cd4a60c5","line":1271,"in_reply_to":"baa041b7_09f5e381","updated":"2015-04-06 08:15:20.000000000","message":"In my local testing I was getting errors from the line below because $ext_gw_interface did not exist, though it did exist when I checked afterwards. So it seems the linuxbridge plugin needs a couple of seconds in order to setup the bridge, at least locally it works for me now.","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":2556,"name":"Evan Callicoat","email":"apsu@propter.net","username":"diopter"},"change_message_id":"e63ef8057d37f9cdddea1bfb2472dd0ccc786cab","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        fi"},{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            sleep 10"},{"line_number":1272,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1273,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"},{"line_number":1274,"context_line":"                sudo ip link set $ext_gw_interface up"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"9aa53dc9_6c3027e9","line":1271,"in_reply_to":"baa041b7_cd07001b","updated":"2015-04-07 20:24:15.000000000","message":"It definitely takes the LinuxBridge plugin a non-negligible and mostly indeterminate amount of time to create and appropriately wire/configure namespaces, bridges and bridge ports. Instead of \"sleep 10\", you will need a tight but non-busy-wait loop to check for the state you expect. Something like:\n\nwhile ! ip -o link | grep -q $ext_gw_interface; do sleep 0.2; done\n\nThis may apply to the state of other network pieces along the way as well.","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"7b71dc69df769fec656317884734828fc15951d0","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"        fi"},{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            sleep 10"},{"line_number":1272,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1273,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"},{"line_number":1274,"context_line":"                sudo ip link set $ext_gw_interface up"}],"source_content_type":"application/x-shellscript","patch_set":7,"id":"baa041b7_cd07001b","line":1271,"in_reply_to":"baa041b7_cd4a60c5","updated":"2015-04-06 08:35:28.000000000","message":"It\u0027s not clear reason which set sleep \"10\". It possibly needs over 10s. You should clearly trace the cause, also add comments about the reason here.","commit_id":"fb6cfe0a56cbd366f6edd4ed05fb4b644df6e6cf"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"ef5dbe0bbff76b66c68338247d30b48606266020","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            while ! ip -o link | grep -q $ext_gw_interface; do"},{"line_number":1272,"context_line":"                sleep 0.2"},{"line_number":1273,"context_line":"            done"},{"line_number":1274,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1275,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"9aa53dc9_ee7a9387","line":1272,"updated":"2015-04-09 17:44:23.000000000","message":"this has the potential to loop forever.","commit_id":"201458c45ec4f571d99c84d7da14eb618224cf60"},{"author":{"_account_id":2556,"name":"Evan Callicoat","email":"apsu@propter.net","username":"diopter"},"change_message_id":"c7569b7c7ad315525f8c8be2f861e93e3b3d9a39","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"},{"line_number":1270,"context_line":"            local cidr_len\u003d${FLOATING_RANGE#*/}"},{"line_number":1271,"context_line":"            while ! ip -o link | grep -q $ext_gw_interface; do"},{"line_number":1272,"context_line":"                sleep 0.2"},{"line_number":1273,"context_line":"            done"},{"line_number":1274,"context_line":"            if [[ $(ip addr show dev $ext_gw_interface | grep -c $ext_gw_ip) \u003d\u003d 0 \u0026\u0026 ( $Q_USE_PROVIDERNET_FOR_PUBLIC \u003d\u003d \"False\" || $Q_USE_PUBLIC_VETH \u003d\u003d \"True\" ) ]]; then"},{"line_number":1275,"context_line":"                sudo ip addr add $ext_gw_ip/$cidr_len dev $ext_gw_interface"}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"9aa53dc9_14bca6da","line":1272,"in_reply_to":"9aa53dc9_ee7a9387","updated":"2015-04-09 18:33:34.000000000","message":"Indeed it does! My intention with providing the example was just to illustrate the idea of a relatively quick but not busy-wait loop. The correct way to do this is to create a checkwait function which has incremental back off on failures and selectable delay and max iteration parameters, then pass it functions to execute to do the checks. Or just make small loops for each check and use the incremental waiter in each one with a way to reset it before each loop.\n\nI can provide a code example if that\u0027s helpful, as I suspect the delay on creation of resources will be encountered constantly here","commit_id":"201458c45ec4f571d99c84d7da14eb618224cf60"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e243fdee299447797144a3313f8a48ac5e419dea","unresolved":false,"context_lines":[{"line_number":301,"context_line":"# network."},{"line_number":302,"context_line":"#"},{"line_number":303,"context_line":"# Example: ``LB_PHYSICAL_INTERFACE\u003deth1``"},{"line_number":304,"context_line":"LB_PHYSICAL_INTERFACE\u003d${LB_PHYSICAL_INTERFACE:-eth0}"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# When Neutron tunnels are enabled it is needed to specify the"},{"line_number":307,"context_line":"# IP address of the end point in the local server. This IP is set"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3acd31a7_08618539","line":304,"updated":"2015-05-01 20:22:49.000000000","message":"Is it a good idea to default this?  If eth0 is say, the primary interface, and eth1 is for testing, could this not take the system off the network?  If it\u0027s required and not specified can\u0027t you just print a message and stop?  I understand it works just fine 95% of the time.","commit_id":"1b7e7c527b9cd2ca6d9d3abf6ec3a5f820a65356"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"7821794866b132a731b8e7920af2f96921c40971","unresolved":false,"context_lines":[{"line_number":301,"context_line":"# network."},{"line_number":302,"context_line":"#"},{"line_number":303,"context_line":"# Example: ``LB_PHYSICAL_INTERFACE\u003deth1``"},{"line_number":304,"context_line":"LB_PHYSICAL_INTERFACE\u003d${LB_PHYSICAL_INTERFACE:-eth0}"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# When Neutron tunnels are enabled it is needed to specify the"},{"line_number":307,"context_line":"# IP address of the end point in the local server. This IP is set"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"1aca2d91_f3bd1ed8","line":304,"in_reply_to":"3acd31a7_08618539","updated":"2015-05-07 16:29:07.000000000","message":"I think LB_PHYSICAL_INTERFACE may want to actually pick up PUBLIC_INTERFACE - and add a check to see if PUBLIC_INTERFACE is actually defined (if a check doesn\u0027t already exist).","commit_id":"1b7e7c527b9cd2ca6d9d3abf6ec3a5f820a65356"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e243fdee299447797144a3313f8a48ac5e419dea","unresolved":false,"context_lines":[{"line_number":1263,"context_line":"        local ext_gw_interface\u003d\"none\""},{"line_number":1264,"context_line":"        if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":1265,"context_line":"            ext_gw_interface\u003d$(_neutron_get_ext_gw_interface)"},{"line_number":1266,"context_line":"        elif [[ \"$Q_AGENT\" \u003d \"linuxbridge\" ]]; then"},{"line_number":1267,"context_line":"            ext_gw_interface\u003dbrq${EXT_NET_ID:0:11}"},{"line_number":1268,"context_line":"        fi"},{"line_number":1269,"context_line":"        if [[ \"$ext_gw_interface\" !\u003d \"none\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"dac4157f_03eef6eb","line":1266,"updated":"2015-05-01 20:22:49.000000000","message":"I know it\u0027s a nit since there\u0027s other occurrences of it (like on L1263 above), but \u0027\u003d\u003d\u0027 is preferred.  I have yet to find a shell that didn\u0027t do the right thing with \u0027\u003d\u0027 though.","commit_id":"1b7e7c527b9cd2ca6d9d3abf6ec3a5f820a65356"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"94db44b4917f07867683d3e6b5bcd797588d5f2a","unresolved":false,"context_lines":[{"line_number":299,"context_line":"# network."},{"line_number":300,"context_line":"#"},{"line_number":301,"context_line":"# Example: ``LB_PHYSICAL_INTERFACE\u003deth1``"},{"line_number":302,"context_line":"LB_PHYSICAL_INTERFACE\u003d${LB_PHYSICAL_INTERFACE:-eth0}"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"# When Neutron tunnels are enabled it is needed to specify the"},{"line_number":305,"context_line":"# IP address of the end point in the local server. This IP is set"}],"source_content_type":"application/x-shellscript","patch_set":15,"id":"3afb71cf_a1fb70c0","line":302,"updated":"2015-06-09 18:47:59.000000000","message":"I am still not a fan of this change as we don\u0027t do it for OVS or anything else in this file.  The comment up on line 280 does mention setting it...","commit_id":"46177cc0c5da3f81798dd41f46b5993f014de4f9"}],"lib/neutron_plugins/ml2":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"e42e5e25683f41d72db049f7b8a418d5324473d0","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Enable this to simply and quickly enable tunneling with ML2."},{"line_number":11,"context_line":"# Select either \u0027gre\u0027, \u0027vxlan\u0027, or \u0027gre,vxlan\u0027"},{"line_number":12,"context_line":"Q_ML2_TENANT_NETWORK_TYPE\u003d${Q_ML2_TENANT_NETWORK_TYPE:-\"vlan\"}"},{"line_number":13,"context_line":"# This has to be set here since the agent will set this in the config file"},{"line_number":14,"context_line":"if [[ \"$Q_ML2_TENANT_NETWORK_TYPE\" \u003d\u003d \"gre\" || \"$Q_ML2_TENANT_NETWORK_TYPE\" \u003d\u003d \"vxlan\" ]]; then"},{"line_number":15,"context_line":"    Q_TUNNEL_TYPES\u003d$Q_ML2_TENANT_NETWORK_TYPE"}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"9aa53dc9_f95020d6","line":12,"updated":"2015-04-09 16:07:15.000000000","message":"hmm, I\u0027m concerned about this change. I think the trend is towards using vxlan, we should investigate why this was failing","commit_id":"201458c45ec4f571d99c84d7da14eb618224cf60"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"ef5dbe0bbff76b66c68338247d30b48606266020","unresolved":false,"context_lines":[{"line_number":18,"context_line":"fi"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Default openvswitch L2 agent"},{"line_number":21,"context_line":"Q_AGENT\u003d${Q_AGENT:-linuxbridge}"},{"line_number":22,"context_line":"source $TOP_DIR/lib/neutron_plugins/${Q_AGENT}_agent"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# List of MechanismDrivers to load"}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"9aa53dc9_cea22ffc","line":21,"updated":"2015-04-09 17:44:23.000000000","message":"comment no longer matches.  :-)","commit_id":"201458c45ec4f571d99c84d7da14eb618224cf60"}]}
