)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"bb5a872c837b801ffc218eecc3fab02223b8141e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"your localrc to indicate if you intend to run your tenant data network"},{"line_number":23,"context_line":"as either ipv4, ipv6, or dual stack respectively. Default value is 4."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Define WITH_IPV6_PATCH with one of the two values \u0027True\u0027 or \u0027False\u0027"},{"line_number":26,"context_line":"in your localrc to indicate if you intend to run your openstack with"},{"line_number":27,"context_line":"IPv6 patch or not. Default value is False. If the value is True,"},{"line_number":28,"context_line":"then make sure your neutron repository have the following patches"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2Fbag%3D","line":25,"updated":"2014-04-21 21:22:04.000000000","message":"I think that it would be better to not have this setting, since there is a lot of work being done on IPv6 and the two below patches are only part of the work being done.","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"97b62d68eb627fa3fae405196a8fcdc310214001","unresolved":false,"context_lines":[{"line_number":22,"context_line":"your localrc to indicate if you intend to run your tenant data network"},{"line_number":23,"context_line":"as either ipv4, ipv6, or dual stack respectively. Default value is 4."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Define WITH_IPV6_PATCH with one of the two values \u0027True\u0027 or \u0027False\u0027"},{"line_number":26,"context_line":"in your localrc to indicate if you intend to run your openstack with"},{"line_number":27,"context_line":"IPv6 patch or not. Default value is False. If the value is True,"},{"line_number":28,"context_line":"then make sure your neutron repository have the following patches"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2FaaQ%3D","line":25,"in_reply_to":"AAAAXH%2F%2Fbag%3D","updated":"2014-04-22 00:48:58.000000000","message":"Like I indicated in the IRC meeting, someone from the community asked me for the devstack patch. This flag is temporary since I\u0027m not sure how he is going to use this devstack patch given the current state of the ipv6 patch.","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"bb5a872c837b801ffc218eecc3fab02223b8141e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        AdvSendAdvert on;"},{"line_number":45,"context_line":"        MinRtrAdvInterval 3;"},{"line_number":46,"context_line":"        MaxRtrAdvInterval 10;"},{"line_number":47,"context_line":"    };"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"And then run radvd inside your router namespace as"},{"line_number":50,"context_line":"   sudo ip netns exec \u003cyour router namespace\u003e service radvd start"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2FbaI%3D","line":47,"updated":"2014-04-21 21:22:04.000000000","message":"We should probably automate this- since we will need something like this for testing IPv6 at the gate","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"97b62d68eb627fa3fae405196a8fcdc310214001","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        AdvSendAdvert on;"},{"line_number":45,"context_line":"        MinRtrAdvInterval 3;"},{"line_number":46,"context_line":"        MaxRtrAdvInterval 10;"},{"line_number":47,"context_line":"    };"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"And then run radvd inside your router namespace as"},{"line_number":50,"context_line":"   sudo ip netns exec \u003cyour router namespace\u003e service radvd start"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAXH%2F%2FaaI%3D","line":47,"in_reply_to":"AAAAXH%2F%2FbaI%3D","updated":"2014-04-22 00:48:58.000000000","message":"nova-network runs with radvd for ipv6. some of the code can be ported over from nova network and put in l3 agent.","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"4c440a4b93e15e3ec8b923c9ff89299b7fd250eb","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    };"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"And then run radvd inside your router namespace as"},{"line_number":39,"context_line":"   sudo ip netns exec \u003cyour router namespace\u003e service radvd start"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Make sure that your VM image has dhcpv6 client enabled at bootup."},{"line_number":42,"context_line":"Or otherwise, you need to run it manually after the VM is booted."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1ae5cdf2_d74b1285","line":39,"updated":"2014-06-11 15:21:17.000000000","message":"The piece about starting up radvd, should not be done manually or as part of DevStack. Instead, this should be done inside Neutron when creating a Subnet with the apropriate IPv6 attributes set.","commit_id":"93109810dc4b19d4de79d80bee1c3a5e96531a9c"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"c9b49b75ed2cf95f0ad0372d61e7fdde35adfdf0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    };"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"And then run radvd inside your router namespace as"},{"line_number":39,"context_line":"   sudo ip netns exec \u003cyour router namespace\u003e service radvd start"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Make sure that your VM image has dhcpv6 client enabled at bootup."},{"line_number":42,"context_line":"Or otherwise, you need to run it manually after the VM is booted."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1ae5cdf2_52cf107f","line":39,"in_reply_to":"1ae5cdf2_d74b1285","updated":"2014-06-11 15:40:43.000000000","message":"that\u0027s correct. Before that happens, it points out how to get it working.","commit_id":"93109810dc4b19d4de79d80bee1c3a5e96531a9c"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"06cfda74d861b7193a4d408205bc9809d4dd5e4f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"  - IPV6_RA_MODE (with default as slaac)"},{"line_number":19,"context_line":"  - IPV6_ADDRESS_MODE (with default as slaac)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Make sure that your VM image has dhcpv6 client enabled at bootup."},{"line_number":22,"context_line":"Or otherwise, you need to run it manually after the VM is booted."},{"line_number":23,"context_line":"It\u0027s recommended to run the lastest version of dnsmasq 2.68."},{"line_number":24,"context_line":"If you intend to enable internet access in your VM, make sure"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"fa98f980_aa3dd5de","line":21,"updated":"2014-09-05 18:16:43.000000000","message":"I believe the client only needs this if you have set IPV6_RA_MODE and IPV6_ADDRESS_MODE to \u0027stateful\u0027 or \u0027stateless\u0027 - perhaps we should mention this in the context of \"if you are not going to use the defaults\" ?","commit_id":"bf8e69daa814a25045d677828ab26c83dbecb5c6"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"fa276a4c464c4df8a6e814a9886e0c6e69bcae4e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"  - IPV6_RA_MODE (with default as slaac)"},{"line_number":19,"context_line":"  - IPV6_ADDRESS_MODE (with default as slaac)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Make sure that your VM image has dhcpv6 client enabled at bootup."},{"line_number":22,"context_line":"Or otherwise, you need to run it manually after the VM is booted."},{"line_number":23,"context_line":"It\u0027s recommended to run the lastest version of dnsmasq 2.68."},{"line_number":24,"context_line":"If you intend to enable internet access in your VM, make sure"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"fa98f980_2e40eb34","line":21,"in_reply_to":"fa98f980_aa3dd5de","updated":"2014-09-08 15:02:49.000000000","message":"That\u0027s a good point - fixed.","commit_id":"bf8e69daa814a25045d677828ab26c83dbecb5c6"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"5221200c6def63776cea307b9aeadfc33743b093","unresolved":false,"context_lines":[{"line_number":22,"context_line":"client enabled at bootup, otherwise you\u0027ll need to run it manually"},{"line_number":23,"context_line":"after the VM is booted."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"It\u0027s recommended to run the lastest version of dnsmasq 2.68."},{"line_number":26,"context_line":"If you intend to enable internet access in your VM, make sure"},{"line_number":27,"context_line":"your network node has IPv6 internet access, and the IPv6 prefix for"},{"line_number":28,"context_line":"your tenant network is a GUA and routable."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"fa98f980_6569babd","line":25,"updated":"2014-09-11 16:28:29.000000000","message":"lastest -\u003e latest","commit_id":"c2ee31930e45ab210afc47d4ea1bb39453d8b465"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"cdaa79a6a304476678255b10d87170fe29bed2ba","unresolved":false,"context_lines":[{"line_number":22,"context_line":"client enabled at bootup, otherwise you\u0027ll need to run it manually"},{"line_number":23,"context_line":"after the VM is booted."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"It\u0027s recommended to run the lastest version of dnsmasq 2.68."},{"line_number":26,"context_line":"If you intend to enable internet access in your VM, make sure"},{"line_number":27,"context_line":"your network node has IPv6 internet access, and the IPv6 prefix for"},{"line_number":28,"context_line":"your tenant network is a GUA and routable."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"fa98f980_a59c826b","line":25,"in_reply_to":"fa98f980_6569babd","updated":"2014-09-11 16:39:24.000000000","message":"D\u0027oh. Thanks, done.","commit_id":"c2ee31930e45ab210afc47d4ea1bb39453d8b465"}],"doc/source/configuration.rst":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1bc0a895f92e6913dda64bc95e9a7bbcb303733a","unresolved":false,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        IPV6_RA_MODE\u003dslaac"},{"line_number":352,"context_line":"        IPV6_ADDRESS_MODE\u003dslaac"},{"line_number":353,"context_line":"        IPV6_PRIVATE_FIXED_RANGE\u003dfd$IPV6_GLOBAL_ID::/64  "},{"line_number":354,"context_line":"        IPV6_PRIVATE_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    | *Note: ``IPV6_PRIVATE_FIXED_RANGE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``"}],"source_content_type":"text/x-rst","patch_set":45,"id":"9aa7fdbe_45fe416c","line":353,"updated":"2014-10-27 14:47:35.000000000","message":"nit: trailing whitespace","commit_id":"afd24da7a7d0a5ed7ef689301ec082eba846a9e2"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"ba8da4ec334d3ae0321f6838775316dad788b537","unresolved":false,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        IPV6_RA_MODE\u003dslaac"},{"line_number":352,"context_line":"        IPV6_ADDRESS_MODE\u003dslaac"},{"line_number":353,"context_line":"        IPV6_PRIVATE_FIXED_RANGE\u003dfd$IPV6_GLOBAL_ID::/64  "},{"line_number":354,"context_line":"        IPV6_PRIVATE_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    | *Note: ``IPV6_PRIVATE_FIXED_RANGE`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``"}],"source_content_type":"text/x-rst","patch_set":45,"id":"9aa7fdbe_69e4ffab","line":353,"in_reply_to":"9aa7fdbe_45fe416c","updated":"2014-10-27 15:15:52.000000000","message":"Thanks, done.","commit_id":"afd24da7a7d0a5ed7ef689301ec082eba846a9e2"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"15fc92ac14fccdd32299e3fcf773834cdddde1bb","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        IPV6_RA_MODE\u003dslaac"},{"line_number":352,"context_line":"        IPV6_ADDRESS_MODE\u003dslaac"},{"line_number":353,"context_line":"        FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":354,"context_line":"        IPV6_PRIVATE_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    | *Note: ``FIXED_RANGE_V6`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``"},{"line_number":357,"context_line":"      can be configured with any valid IPv6 prefix. The default values make"}],"source_content_type":"text/x-rst","patch_set":51,"id":"5a890539_a15878fb","line":354,"updated":"2014-11-10 12:05:04.000000000","message":"Typo: GOLBAL -\u003e GLOBAL","commit_id":"81eda3cb34138b99335b8a6e3c02ba96909df5d6"}],"docs/source/configuration.html":[{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"d56c903aee1decba4adfb62dc20ca6ad71327473","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            \u003cdd\u003e\u003cem\u003eDefault: \u003ccode\u003eIP_VERSION\u003d4\u003c/code\u003e\u003c/em\u003e\u003cbr /\u003e"},{"line_number":209,"context_line":"            This setting can be used to configure DevStack to create either an IPv4, IPv6, or dual stack tenant data network by setting \u003ccode\u003eIP_VERSION\u003c/code\u003e to either \u003ccode\u003eIP_VERSION\u003d4\u003c/code\u003e, \u003ccode\u003eIP_VERSION\u003d6\u003c/code\u003e, or \u003ccode\u003eIP_VERSION\u003d4+6\u003c/code\u003e respectively. This functionality requires that the Neutron networking service is enabled by setting the following options:"},{"line_number":210,"context_line":"            \u003cpre\u003edisable_service n-net"},{"line_number":211,"context_line":"enable_service q-svc q-agt q-dhcp q-l3 q-meta\u003c/pre\u003e"},{"line_number":212,"context_line":"The following optional variables can be used to alter the default IPv6 behavior. The default values for \u003ccode\u003eIPV6_NETWORK_GATEWAY\u003c/code\u003e and \u003ccode\u003eFIXED_RANGE_V6\u003c/code\u003e make use of an auto-generated \u003ccode\u003eIPV6_GLOBAL_ID\u003c/code\u003e to comply with RFC 4193."},{"line_number":213,"context_line":"            \u003cpre\u003eIPV6_RA_MODE\u003dslaac"},{"line_number":214,"context_line":"IPV6_ADDRESS_MODE\u003dslaac"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_a715839c","line":211,"updated":"2014-10-14 19:10:50.000000000","message":"q-meta is not needed.","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"9e971df386dd0f310e9472ea7eb6251bb178b868","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            \u003cdd\u003e\u003cem\u003eDefault: \u003ccode\u003eIP_VERSION\u003d4\u003c/code\u003e\u003c/em\u003e\u003cbr /\u003e"},{"line_number":209,"context_line":"            This setting can be used to configure DevStack to create either an IPv4, IPv6, or dual stack tenant data network by setting \u003ccode\u003eIP_VERSION\u003c/code\u003e to either \u003ccode\u003eIP_VERSION\u003d4\u003c/code\u003e, \u003ccode\u003eIP_VERSION\u003d6\u003c/code\u003e, or \u003ccode\u003eIP_VERSION\u003d4+6\u003c/code\u003e respectively. This functionality requires that the Neutron networking service is enabled by setting the following options:"},{"line_number":210,"context_line":"            \u003cpre\u003edisable_service n-net"},{"line_number":211,"context_line":"enable_service q-svc q-agt q-dhcp q-l3 q-meta\u003c/pre\u003e"},{"line_number":212,"context_line":"The following optional variables can be used to alter the default IPv6 behavior. The default values for \u003ccode\u003eIPV6_NETWORK_GATEWAY\u003c/code\u003e and \u003ccode\u003eFIXED_RANGE_V6\u003c/code\u003e make use of an auto-generated \u003ccode\u003eIPV6_GLOBAL_ID\u003c/code\u003e to comply with RFC 4193."},{"line_number":213,"context_line":"            \u003cpre\u003eIPV6_RA_MODE\u003dslaac"},{"line_number":214,"context_line":"IPV6_ADDRESS_MODE\u003dslaac"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_06963c3f","line":211,"in_reply_to":"baa201ad_a715839c","updated":"2014-10-15 11:35:00.000000000","message":"Done","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"d56c903aee1decba4adfb62dc20ca6ad71327473","unresolved":false,"context_lines":[{"line_number":215,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003dipv6-public-subnet"},{"line_number":216,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003dipv6-private-subnet"},{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_02b0fd89","line":218,"updated":"2014-10-14 19:10:50.000000000","message":"Can you add the following to describe the above two variables:\n\n   These two variables define the CIDR used for the ipv6 private subnet with \nthe name IPV6_PRIVATE_SUBNET_NAME and the gateway address for the subnet.","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"9e971df386dd0f310e9472ea7eb6251bb178b868","unresolved":false,"context_lines":[{"line_number":215,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003dipv6-public-subnet"},{"line_number":216,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003dipv6-private-subnet"},{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_a6f9f04f","line":218,"in_reply_to":"baa201ad_02b0fd89","updated":"2014-10-15 11:35:00.000000000","message":"How about instead changing the variable names to IPV6_PRIVATE_RANGE and IPV6_NETWORK_GATEWAY so they match better with their public counterparts?","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"1afa0e6a5e87bfd2513849997e2e64316dc99656","unresolved":false,"context_lines":[{"line_number":215,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003dipv6-public-subnet"},{"line_number":216,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003dipv6-private-subnet"},{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_a11aba6c","line":218,"in_reply_to":"baa201ad_a6f9f04f","updated":"2014-10-15 11:39:18.000000000","message":"IPV6_NETWORK_GATEWAY should read IPV6_PRIVATE_NETWORK_GATEWAY","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"d56c903aee1decba4adfb62dc20ca6ad71327473","unresolved":false,"context_lines":[{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"          \u003ch3\u003eExamples\u003c/h3\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_a0756a99","line":220,"updated":"2014-10-14 19:10:50.000000000","message":"Can you add the following to describe the above two variables:\n\n   These two variables define the address used on the gateway port in the \nneutron router that is created by devstack, assuming that the network node\n acts as an ipv6 router. Therefore, they don\u0027t need to be changed if the \nassumption holds on your network node.","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"abab9ec864b592bc3ce9cbce3196fcdfafa22142","unresolved":false,"context_lines":[{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"          \u003ch3\u003eExamples\u003c/h3\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_0789d674","line":220,"in_reply_to":"baa201ad_a0756a99","updated":"2014-10-15 12:42:04.000000000","message":"As discussed offline these two variables only matter between the vm and the host so they shouldn\u0027t need to be changed. I\u0027m therefore going to remove them from here to avoid confusion.","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"9e971df386dd0f310e9472ea7eb6251bb178b868","unresolved":false,"context_lines":[{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"          \u003ch3\u003eExamples\u003c/h3\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_a67e50ad","line":220,"in_reply_to":"baa201ad_a0756a99","updated":"2014-10-15 11:35:00.000000000","message":"Done","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"f9998332573c4fa51aa530fcf95b95ca7d8f28d4","unresolved":false,"context_lines":[{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"          \u003ch3\u003eExamples\u003c/h3\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_bbd590e6","line":220,"in_reply_to":"baa201ad_a0756a99","updated":"2014-10-15 06:33:22.000000000","message":"I think we also need to mention that this gateway will be configured on public bridge in dual stack case.","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"9e971df386dd0f310e9472ea7eb6251bb178b868","unresolved":false,"context_lines":[{"line_number":217,"context_line":"FIXED_RANGE_V6\u003dfd$IPV6_GLOBAL_ID::/64"},{"line_number":218,"context_line":"IPV6_NETWORK_GATEWAY\u003dfd$IPV6_GOLBAL_ID::1"},{"line_number":219,"context_line":"IPV6_PUBLIC_RANGE\u003dfe80:bad:dad::/64"},{"line_number":220,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003dfe80:bad:dad::2\u003c/pre\u003e\u003c/dd\u003e"},{"line_number":221,"context_line":"          \u003c/dl\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"          \u003ch3\u003eExamples\u003c/h3\u003e"}],"source_content_type":"text/html","patch_set":40,"id":"baa201ad_c67b54bc","line":220,"in_reply_to":"baa201ad_bbd590e6","updated":"2014-10-15 11:35:00.000000000","message":"Done","commit_id":"dd550099639d93853ce9e2ef06bf655629940f50"}],"lib/neutron":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"bb5a872c837b801ffc218eecc3fab02223b8141e","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    fi"},{"line_number":385,"context_line":"}"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"function create_neutron_initial_network {"},{"line_number":388,"context_line":"    set -o xtrace"},{"line_number":389,"context_line":"    # Remove the following line that creates an image for testing"},{"line_number":390,"context_line":"    glance image-create --name ubuntu_precise --disk-format qcow2 --container-format bare --is-public True --file /home/openstack/tmp/precise.qcow2"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAXH%2F%2Fba8%3D","line":387,"updated":"2014-04-21 21:22:04.000000000","message":"Should we break this up into two pieces? \n\ncreate_neutron_initial_network_v4 and create_neutron_initial_network_v6?","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"97b62d68eb627fa3fae405196a8fcdc310214001","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    fi"},{"line_number":385,"context_line":"}"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"function create_neutron_initial_network {"},{"line_number":388,"context_line":"    set -o xtrace"},{"line_number":389,"context_line":"    # Remove the following line that creates an image for testing"},{"line_number":390,"context_line":"    glance image-create --name ubuntu_precise --disk-format qcow2 --container-format bare --is-public True --file /home/openstack/tmp/precise.qcow2"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAXH%2F%2FaZk%3D","line":387,"in_reply_to":"AAAAXH%2F%2Fba8%3D","updated":"2014-04-22 00:48:58.000000000","message":"I think that it\u0027s a good idea to break this function up. I actually should mark this patch as WIP as some of the changes in this routine should be considered temporary, which should be removed when the complete solution is put in neutron.","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"bb5a872c837b801ffc218eecc3fab02223b8141e","unresolved":false,"context_lines":[{"line_number":387,"context_line":"function create_neutron_initial_network {"},{"line_number":388,"context_line":"    set -o xtrace"},{"line_number":389,"context_line":"    # Remove the following line that creates an image for testing"},{"line_number":390,"context_line":"    glance image-create --name ubuntu_precise --disk-format qcow2 --container-format bare --is-public True --file /home/openstack/tmp/precise.qcow2"},{"line_number":391,"context_line":"    TENANT_ID\u003d$(openstack project list | grep \" demo \" | get_field 1)"},{"line_number":392,"context_line":"    die_if_not_set $LINENO TENANT_ID \"Failure retrieving TENANT_ID for demo\""},{"line_number":393,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAXH%2F%2FbcU%3D","line":390,"updated":"2014-04-21 21:22:04.000000000","message":"This probably needs to be removed","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"97b62d68eb627fa3fae405196a8fcdc310214001","unresolved":false,"context_lines":[{"line_number":387,"context_line":"function create_neutron_initial_network {"},{"line_number":388,"context_line":"    set -o xtrace"},{"line_number":389,"context_line":"    # Remove the following line that creates an image for testing"},{"line_number":390,"context_line":"    glance image-create --name ubuntu_precise --disk-format qcow2 --container-format bare --is-public True --file /home/openstack/tmp/precise.qcow2"},{"line_number":391,"context_line":"    TENANT_ID\u003d$(openstack project list | grep \" demo \" | get_field 1)"},{"line_number":392,"context_line":"    die_if_not_set $LINENO TENANT_ID \"Failure retrieving TENANT_ID for demo\""},{"line_number":393,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAXH%2F%2FaZg%3D","line":390,"in_reply_to":"AAAAXH%2F%2FbcU%3D","updated":"2014-04-22 00:48:58.000000000","message":"good catch. I forgot to remove it.","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PUBLIC_NETWORK_GATEWAY\u003d${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}"},{"line_number":70,"context_line":"PRIVATE_SUBNET_NAME\u003d${PRIVATE_SUBNET_NAME:-\"private-subnet\"}"},{"line_number":71,"context_line":"PUBLIC_SUBNET_NAME\u003d${PUBLIC_SUBNET_NAME:-\"public-subnet\"}"},{"line_number":72,"context_line":"DNS_NAMESERVER\u003d${DNS_NAMESERVER:-8.8.8.8}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":75,"context_line":"WITH_IPV6_PATCH\u003d${WITH_IPV6_PATCH:-True}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_3a42973e","line":72,"updated":"2014-09-02 19:00:51.000000000","message":"Not sure if it\u0027s OK to point to an external resource (Google\u0027s public DNS servers) by default in devstack. Need input from infra here.\n\nAlso, do we really need DNS? We haven\u0027t needed it so far, It feels like a separate issue.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PUBLIC_NETWORK_GATEWAY\u003d${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}"},{"line_number":70,"context_line":"PRIVATE_SUBNET_NAME\u003d${PRIVATE_SUBNET_NAME:-\"private-subnet\"}"},{"line_number":71,"context_line":"PUBLIC_SUBNET_NAME\u003d${PUBLIC_SUBNET_NAME:-\"public-subnet\"}"},{"line_number":72,"context_line":"DNS_NAMESERVER\u003d${DNS_NAMESERVER:-8.8.8.8}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":75,"context_line":"WITH_IPV6_PATCH\u003d${WITH_IPV6_PATCH:-True}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_57e62de9","line":72,"in_reply_to":"fa98f980_110db13e","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"fb368ce3caf51783ff10248960f6a9dd0cc1b53d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PUBLIC_NETWORK_GATEWAY\u003d${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}"},{"line_number":70,"context_line":"PRIVATE_SUBNET_NAME\u003d${PRIVATE_SUBNET_NAME:-\"private-subnet\"}"},{"line_number":71,"context_line":"PUBLIC_SUBNET_NAME\u003d${PUBLIC_SUBNET_NAME:-\"public-subnet\"}"},{"line_number":72,"context_line":"DNS_NAMESERVER\u003d${DNS_NAMESERVER:-8.8.8.8}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":75,"context_line":"WITH_IPV6_PATCH\u003d${WITH_IPV6_PATCH:-True}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_110db13e","line":72,"in_reply_to":"fa98f980_3a42973e","updated":"2014-09-02 20:19:36.000000000","message":"Agree - DNS is a separate feature and should be a separate patchset","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PUBLIC_NETWORK_GATEWAY\u003d${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}"},{"line_number":70,"context_line":"PRIVATE_SUBNET_NAME\u003d${PRIVATE_SUBNET_NAME:-\"private-subnet\"}"},{"line_number":71,"context_line":"PUBLIC_SUBNET_NAME\u003d${PUBLIC_SUBNET_NAME:-\"public-subnet\"}"},{"line_number":72,"context_line":"DNS_NAMESERVER\u003d${DNS_NAMESERVER:-8.8.8.8}"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":75,"context_line":"WITH_IPV6_PATCH\u003d${WITH_IPV6_PATCH:-True}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_77eb31b0","line":72,"in_reply_to":"fa98f980_3a42973e","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":83,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":84,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":85,"context_line":"IPV6_DNS_NAMESERVER\u003d${IPV6_DNS_NAMESERVER:-2001:4860:4860::8888}"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"# Set up default directories"},{"line_number":88,"context_line":"NEUTRON_DIR\u003d$DEST/neutron"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_ba75a799","line":85,"updated":"2014-09-02 19:00:51.000000000","message":"Again, this is Google\u0027s public DNS server.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":83,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":84,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":85,"context_line":"IPV6_DNS_NAMESERVER\u003d${IPV6_DNS_NAMESERVER:-2001:4860:4860::8888}"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"# Set up default directories"},{"line_number":88,"context_line":"NEUTRON_DIR\u003d$DEST/neutron"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_37e529dd","line":85,"in_reply_to":"fa98f980_ba75a799","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":957,"context_line":"    neutron_plugin_setup_interface_driver $1"},{"line_number":958,"context_line":"}"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"# Setup either an IPV4 or IPV6 subnet depending on IP version"},{"line_number":961,"context_line":"function _neutron_setup_default_subnet {"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"4\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_2e27b513","line":960,"updated":"2014-09-02 19:00:51.000000000","message":"Nit: s/Setup/Set up/\n\n(More of these below.)","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":957,"context_line":"    neutron_plugin_setup_interface_driver $1"},{"line_number":958,"context_line":"}"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"# Setup either an IPV4 or IPV6 subnet depending on IP version"},{"line_number":961,"context_line":"function _neutron_setup_default_subnet {"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"4\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_ea84995f","line":960,"in_reply_to":"fa98f980_2e27b513","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":961,"context_line":"function _neutron_setup_default_subnet {"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"4\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":964,"context_line":"        SUBNET_ID\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY --dns-nameserver $DNS_NAMESERVER --name $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":965,"context_line":"        die_if_not_set $LINENO SUBNET_ID \"Failure creating SUBNET_ID for $TENANT_ID\""},{"line_number":966,"context_line":"    fi"},{"line_number":967,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_7d4fb9bd","line":964,"updated":"2014-09-02 19:00:51.000000000","message":"These subnet-create invocations make for very long lines. How about using a local variable to hold the arguments, that you build up one or two at a time?","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":961,"context_line":"function _neutron_setup_default_subnet {"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"4\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":964,"context_line":"        SUBNET_ID\u003d$(neutron subnet-create --tenant-id $TENANT_ID --ip_version 4 --gateway $NETWORK_GATEWAY --dns-nameserver $DNS_NAMESERVER --name $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":965,"context_line":"        die_if_not_set $LINENO SUBNET_ID \"Failure creating SUBNET_ID for $TENANT_ID\""},{"line_number":966,"context_line":"    fi"},{"line_number":967,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_2a7b017c","line":964,"in_reply_to":"fa98f980_7d4fb9bd","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":966,"context_line":"    fi"},{"line_number":967,"context_line":""},{"line_number":968,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"6\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":969,"context_line":"        IPV6_MODES\u003d"},{"line_number":970,"context_line":"        if [[ \"$WITH_IPV6_PATCH\" \u003d\u003d \"True\" ]]; then"},{"line_number":971,"context_line":"            IPV6_MODES\u003d\"--ipv6-ra-mode $IPV6_RA_MODE --ipv6-address-mode $IPV6_ADDRESS_MODE\""},{"line_number":972,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_694a97c6","line":969,"updated":"2014-09-02 19:00:51.000000000","message":"Make this a local var. And there are more variables below that should be scoped local.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":966,"context_line":"    fi"},{"line_number":967,"context_line":""},{"line_number":968,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"6\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":969,"context_line":"        IPV6_MODES\u003d"},{"line_number":970,"context_line":"        if [[ \"$WITH_IPV6_PATCH\" \u003d\u003d \"True\" ]]; then"},{"line_number":971,"context_line":"            IPV6_MODES\u003d\"--ipv6-ra-mode $IPV6_RA_MODE --ipv6-address-mode $IPV6_ADDRESS_MODE\""},{"line_number":972,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_4a804546","line":969,"in_reply_to":"fa98f980_694a97c6","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":978,"context_line":"# Setup router for IPV4 or IPV6 depending on IP version"},{"line_number":979,"context_line":"function _neutron_setup_default_router {"},{"line_number":980,"context_line":""},{"line_number":981,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"4\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":982,"context_line":"        neutron router-interface-add $ROUTER_ID $SUBNET_ID"},{"line_number":983,"context_line":"        ID_AND_EXT_GW_IP\u003d$(neutron subnet-create --ip_version 4 ${Q_FLOATING_ALLOCATION_POOL:+--allocation-pool $Q_FLOATING_ALLOCATION_POOL} --gateway $PUBLIC_NETWORK_GATEWAY --name $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE -- --enable_dhcp\u003dFalse | grep -e \u0027gateway_ip\u0027 -e \u0027 id \u0027)"},{"line_number":984,"context_line":"        die_if_not_set $LINENO ID_AND_EXT_GW_IP \"Failure creating a public subnet\""}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_49223302","line":981,"updated":"2014-09-02 19:00:51.000000000","message":"Add a comment here explaining what the block below does.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":978,"context_line":"# Setup router for IPV4 or IPV6 depending on IP version"},{"line_number":979,"context_line":"function _neutron_setup_default_router {"},{"line_number":980,"context_line":""},{"line_number":981,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"4\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":982,"context_line":"        neutron router-interface-add $ROUTER_ID $SUBNET_ID"},{"line_number":983,"context_line":"        ID_AND_EXT_GW_IP\u003d$(neutron subnet-create --ip_version 4 ${Q_FLOATING_ALLOCATION_POOL:+--allocation-pool $Q_FLOATING_ALLOCATION_POOL} --gateway $PUBLIC_NETWORK_GATEWAY --name $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE -- --enable_dhcp\u003dFalse | grep -e \u0027gateway_ip\u0027 -e \u0027 id \u0027)"},{"line_number":984,"context_line":"        die_if_not_set $LINENO ID_AND_EXT_GW_IP \"Failure creating a public subnet\""}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_8a95cd88","line":981,"in_reply_to":"fa98f980_49223302","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":985,"context_line":"        EXT_GW_IP\u003d$(echo $ID_AND_EXT_GW_IP  | get_field 2)"},{"line_number":986,"context_line":"        PUB_SUBNET_ID\u003d$(echo $ID_AND_EXT_GW_IP | get_field 5)"},{"line_number":987,"context_line":"        neutron router-gateway-set $ROUTER_ID $EXT_NET_ID"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":990,"context_line":"            # logic is specific to using the l3-agent for l3"},{"line_number":991,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_ee45ad70","line":988,"updated":"2014-09-02 19:00:51.000000000","message":"Add a comment here explaining what the block below does.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":985,"context_line":"        EXT_GW_IP\u003d$(echo $ID_AND_EXT_GW_IP  | get_field 2)"},{"line_number":986,"context_line":"        PUB_SUBNET_ID\u003d$(echo $ID_AND_EXT_GW_IP | get_field 5)"},{"line_number":987,"context_line":"        neutron router-gateway-set $ROUTER_ID $EXT_NET_ID"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":990,"context_line":"            # logic is specific to using the l3-agent for l3"},{"line_number":991,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_98a98092","line":988,"in_reply_to":"fa98f980_ee45ad70","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        neutron router-gateway-set $ROUTER_ID $EXT_NET_ID"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":990,"context_line":"            # logic is specific to using the l3-agent for l3"},{"line_number":991,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":992,"context_line":"                CIDR_LEN\u003d${FLOATING_RANGE#*/}"},{"line_number":993,"context_line":"                sudo ip addr add $EXT_GW_IP/$CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_eea04d45","line":990,"updated":"2014-09-02 19:00:51.000000000","message":"\"This logic ... for layer 3.\"","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":987,"context_line":"        neutron router-gateway-set $ROUTER_ID $EXT_NET_ID"},{"line_number":988,"context_line":""},{"line_number":989,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":990,"context_line":"            # logic is specific to using the l3-agent for l3"},{"line_number":991,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":992,"context_line":"                CIDR_LEN\u003d${FLOATING_RANGE#*/}"},{"line_number":993,"context_line":"                sudo ip addr add $EXT_GW_IP/$CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_ca8b5566","line":990,"in_reply_to":"fa98f980_eea04d45","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"6\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1007,"context_line":"        neutron router-interface-add $ROUTER_ID $IPV6_SUBNET_ID"},{"line_number":1008,"context_line":"        # Create an external network, and a subnet. Configure the external network as router gw"},{"line_number":1009,"context_line":"        IPV6_ID_AND_EXT_GW_IP\u003d$(neutron subnet-create --ip_version 6 --gateway $IPV6_PUBLIC_NETWORK_GATEWAY --name $IPV6_PUBLIC_SUBNET_NAME $EXT_NET_ID $IPV6_PUBLIC_RANGE -- --enable_dhcp\u003dFalse | grep -e \u0027gateway_ip\u0027 -e \u0027 id \u0027)"},{"line_number":1010,"context_line":"        die_if_not_set $LINENO IPV6_ID_AND_EXT_GW_IP \"Failure creating a IPv6 public subnet\""},{"line_number":1011,"context_line":"        IPV6_EXT_GW_IP\u003d$(echo $IPV6_ID_AND_EXT_GW_IP | get_field 2)"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_e345c670","line":1008,"updated":"2014-09-02 19:00:51.000000000","message":"I would prefer comments to be comprised of complete English sentences with a minimum of abbreviations.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"6\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1007,"context_line":"        neutron router-interface-add $ROUTER_ID $IPV6_SUBNET_ID"},{"line_number":1008,"context_line":"        # Create an external network, and a subnet. Configure the external network as router gw"},{"line_number":1009,"context_line":"        IPV6_ID_AND_EXT_GW_IP\u003d$(neutron subnet-create --ip_version 6 --gateway $IPV6_PUBLIC_NETWORK_GATEWAY --name $IPV6_PUBLIC_SUBNET_NAME $EXT_NET_ID $IPV6_PUBLIC_RANGE -- --enable_dhcp\u003dFalse | grep -e \u0027gateway_ip\u0027 -e \u0027 id \u0027)"},{"line_number":1010,"context_line":"        die_if_not_set $LINENO IPV6_ID_AND_EXT_GW_IP \"Failure creating a IPv6 public subnet\""},{"line_number":1011,"context_line":"        IPV6_EXT_GW_IP\u003d$(echo $IPV6_ID_AND_EXT_GW_IP | get_field 2)"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_8adced74","line":1008,"in_reply_to":"fa98f980_e345c670","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        if [[ \"$IP_VERSION\" \u003d\u003d \"6\" ]]; then"},{"line_number":1015,"context_line":"            neutron router-gateway-set $ROUTER_ID $EXT_NET_ID"},{"line_number":1016,"context_line":"        fi"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":1019,"context_line":"            IPV6_CIDR_LEN\u003d${IPV6_PUBLIC_RANGE#*/}"},{"line_number":1020,"context_line":"            IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_c999c320","line":1017,"updated":"2014-09-02 19:00:51.000000000","message":"Add a comment here explaining what the block below does.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        if [[ \"$IP_VERSION\" \u003d\u003d \"6\" ]]; then"},{"line_number":1015,"context_line":"            neutron router-gateway-set $ROUTER_ID $EXT_NET_ID"},{"line_number":1016,"context_line":"        fi"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":1019,"context_line":"            IPV6_CIDR_LEN\u003d${IPV6_PUBLIC_RANGE#*/}"},{"line_number":1020,"context_line":"            IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_d896a84b","line":1017,"in_reply_to":"fa98f980_c999c320","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":1019,"context_line":"            IPV6_CIDR_LEN\u003d${IPV6_PUBLIC_RANGE#*/}"},{"line_number":1020,"context_line":"            IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1021,"context_line":"            # logic is specific to using the l3-agent for l3"},{"line_number":1022,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"6\" ]]; then"},{"line_number":1023,"context_line":"                IPV6_ROUTER_GW_IP\u003d`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F \u0027\"\u0027 -v subnet_id\u003d$IPV6_PUB_SUBNET_ID \u0027$4 \u003d\u003d subnet_id { print $8; }\u0027`"},{"line_number":1024,"context_line":"                die_if_not_set $LINENO IPV6_ROUTER_GW_IP \"Failure retrieving IPV6_ROUTER_GW_IP\""}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_eeaccda2","line":1021,"updated":"2014-09-02 19:00:51.000000000","message":"\"This logic ... for layer 3.\"","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1018,"context_line":"        if is_service_enabled q-l3; then"},{"line_number":1019,"context_line":"            IPV6_CIDR_LEN\u003d${IPV6_PUBLIC_RANGE#*/}"},{"line_number":1020,"context_line":"            IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1021,"context_line":"            # logic is specific to using the l3-agent for l3"},{"line_number":1022,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"6\" ]]; then"},{"line_number":1023,"context_line":"                IPV6_ROUTER_GW_IP\u003d`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F \u0027\"\u0027 -v subnet_id\u003d$IPV6_PUB_SUBNET_ID \u0027$4 \u003d\u003d subnet_id { print $8; }\u0027`"},{"line_number":1024,"context_line":"                die_if_not_set $LINENO IPV6_ROUTER_GW_IP \"Failure retrieving IPV6_ROUTER_GW_IP\""}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_972895e3","line":1021,"in_reply_to":"fa98f980_eeaccda2","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"                die_if_not_set $LINENO IPV6_ROUTER_GW_PORT \"Failure retrieving IPV6_ROUTER_GW_PORT\""},{"line_number":1030,"context_line":"            fi"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"            # OVS script flush the public bridge\u0027s ip addresses. Flip the disable_ipv6 configuration variable to recover the public bridge\u0027s LLA address"},{"line_number":1033,"context_line":"            sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6\u003d1"},{"line_number":1034,"context_line":"            sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6\u003d0"},{"line_number":1035,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_23d26e00","line":1032,"updated":"2014-09-02 19:00:51.000000000","message":"Please keep comment lines \u003c 80 columns.\n\nI don\u0027t quite understand the first sentence. It seems to be missing a word. Maybe \"The OVS script flushes the public bridge\u0027s IP address.\"? Which OVS script is that?\n\nThe second sentence I think could be reworded to \"Turn IPv6 support in the host off and then on again to recover the public bridge\u0027s link local address.\"","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"                die_if_not_set $LINENO IPV6_ROUTER_GW_PORT \"Failure retrieving IPV6_ROUTER_GW_PORT\""},{"line_number":1030,"context_line":"            fi"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"            # OVS script flush the public bridge\u0027s ip addresses. Flip the disable_ipv6 configuration variable to recover the public bridge\u0027s LLA address"},{"line_number":1033,"context_line":"            sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6\u003d1"},{"line_number":1034,"context_line":"            sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6\u003d0"},{"line_number":1035,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_2920419a","line":1032,"in_reply_to":"fa98f980_23d26e00","updated":"2014-09-04 15:01:18.000000000","message":"Re-written this to be more explicit about the function causing the address flush. Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"            sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6\u003d0"},{"line_number":1035,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":1036,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1037,"context_line":"                sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"                if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1040,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_4ecdd95c","line":1037,"updated":"2014-09-02 19:00:51.000000000","message":"Lines 1036,37 could do with an explanatory comment.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"            sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6\u003d0"},{"line_number":1035,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":1036,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1037,"context_line":"                sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"                if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1040,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_c92ed58b","line":1037,"in_reply_to":"fa98f980_4ecdd95c","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1035,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":1036,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1037,"context_line":"                sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"                if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1040,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do"},{"line_number":1041,"context_line":"                        sleep 1"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_ced70922","line":1038,"updated":"2014-09-02 19:00:51.000000000","message":"It would be nice to have a comment explaining what lines 1039-1050 do.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1035,"context_line":"            if is_neutron_ovs_base_plugin \u0026\u0026 [[ \"$Q_USE_NAMESPACE\" \u003d \"True\" ]]; then"},{"line_number":1036,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1037,"context_line":"                sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"                if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1040,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do"},{"line_number":1041,"context_line":"                        sleep 1"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_e950f90c","line":1038,"in_reply_to":"fa98f980_ced70922","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"                sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"                if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1040,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do"},{"line_number":1041,"context_line":"                        sleep 1"},{"line_number":1042,"context_line":"                    done"},{"line_number":1043,"context_line":"                    sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_2ec5f58d","line":1040,"updated":"2014-09-02 19:00:51.000000000","message":"This could loop forever. There should at least be a timeout. Is it covered at a higher level?","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"                sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"                if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1040,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do"},{"line_number":1041,"context_line":"                        sleep 1"},{"line_number":1042,"context_line":"                    done"},{"line_number":1043,"context_line":"                    sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_d7c21d33","line":1040,"in_reply_to":"fa98f980_2ec5f58d","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"b3880ea35593681dac801736d51f81028c8d964b","unresolved":false,"context_lines":[{"line_number":1042,"context_line":"                    done"},{"line_number":1043,"context_line":"                    sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1044,"context_line":"                else"},{"line_number":1045,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $IPV6_PREFIX; do"},{"line_number":1046,"context_line":"                        sleep 1"},{"line_number":1047,"context_line":"                    done"},{"line_number":1048,"context_line":"                fi"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_6ebffdfb","line":1045,"updated":"2014-09-02 19:00:51.000000000","message":"Ditto.","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"4cecfb16b74cee4e2ad9290eb6dd5824185d3dcf","unresolved":false,"context_lines":[{"line_number":1042,"context_line":"                    done"},{"line_number":1043,"context_line":"                    sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1044,"context_line":"                else"},{"line_number":1045,"context_line":"                    until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $IPV6_PREFIX; do"},{"line_number":1046,"context_line":"                        sleep 1"},{"line_number":1047,"context_line":"                    done"},{"line_number":1048,"context_line":"                fi"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"fa98f980_f7bf21a8","line":1045,"in_reply_to":"fa98f980_6ebffdfb","updated":"2014-09-04 15:01:18.000000000","message":"Done","commit_id":"0119ab09455e3c1b3ce10bdd73129ec9fce21944"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"fffb7fa34577a6e9a7c56f5a3da699168f8d61a5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"PUBLIC_SUBNET_NAME\u003d${PUBLIC_SUBNET_NAME:-\"public-subnet\"}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":79,"context_line":"WITH_IPV6_PATCH\u003d${WITH_IPV6_PATCH:-True}"},{"line_number":80,"context_line":"IPV6_RA_MODE\u003d${IPV6_RA_MODE:-slaac}"},{"line_number":81,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":82,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"fa98f980_c454f7cb","line":79,"updated":"2014-09-04 15:50:18.000000000","message":"This needs to be removed - I think this was originally created to pull a patch out of gerrit for radvd support, which is a no-no.","commit_id":"204151d65ba7d63ddb2f5820dece028a5b417a4b"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"fc52a82ebc6b778deff224d7fbcbc8a26815c6c3","unresolved":false,"context_lines":[{"line_number":76,"context_line":"PUBLIC_SUBNET_NAME\u003d${PUBLIC_SUBNET_NAME:-\"public-subnet\"}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":79,"context_line":"WITH_IPV6_PATCH\u003d${WITH_IPV6_PATCH:-True}"},{"line_number":80,"context_line":"IPV6_RA_MODE\u003d${IPV6_RA_MODE:-slaac}"},{"line_number":81,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":82,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"fa98f980_7d0ae48a","line":79,"in_reply_to":"fa98f980_c454f7cb","updated":"2014-09-05 12:49:17.000000000","message":"Yes you\u0027re right, thanks for spotting that.","commit_id":"204151d65ba7d63ddb2f5820dece028a5b417a4b"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"fffb7fa34577a6e9a7c56f5a3da699168f8d61a5","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"6\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":977,"context_line":"        local IPV6_MODES\u003d"},{"line_number":978,"context_line":"        if [[ \"$WITH_IPV6_PATCH\" \u003d\u003d \"True\" ]]; then"},{"line_number":979,"context_line":"            IPV6_MODES\u003d\"--ipv6-ra-mode $IPV6_RA_MODE --ipv6-address-mode $IPV6_ADDRESS_MODE\""},{"line_number":980,"context_line":"        fi"},{"line_number":981,"context_line":"        SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --ip_version 6 \""}],"source_content_type":"application/octet-stream","patch_set":16,"id":"fa98f980_a4f7f3d1","line":978,"updated":"2014-09-04 15:50:18.000000000","message":"This check probably can be removed, or changed to die_if_not_set for $IPV6_RA_MODE and $IPV6_RA_MODE, instead of $WITH_IPV6_PATCH.","commit_id":"204151d65ba7d63ddb2f5820dece028a5b417a4b"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"fc52a82ebc6b778deff224d7fbcbc8a26815c6c3","unresolved":false,"context_lines":[{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    if [[ \"$IP_VERSION\" \u003d\u003d \"6\" || \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":977,"context_line":"        local IPV6_MODES\u003d"},{"line_number":978,"context_line":"        if [[ \"$WITH_IPV6_PATCH\" \u003d\u003d \"True\" ]]; then"},{"line_number":979,"context_line":"            IPV6_MODES\u003d\"--ipv6-ra-mode $IPV6_RA_MODE --ipv6-address-mode $IPV6_ADDRESS_MODE\""},{"line_number":980,"context_line":"        fi"},{"line_number":981,"context_line":"        SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --ip_version 6 \""}],"source_content_type":"application/octet-stream","patch_set":16,"id":"fa98f980_9dfdc870","line":978,"in_reply_to":"fa98f980_a4f7f3d1","updated":"2014-09-05 12:49:17.000000000","message":"Done","commit_id":"204151d65ba7d63ddb2f5820dece028a5b417a4b"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":534,"context_line":"            _neutron_set_up_default_subnet_v4"},{"line_number":535,"context_line":"            _neutron_set_up_default_subnet_v6"},{"line_number":536,"context_line":"        fi"},{"line_number":537,"context_line":"    fi"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    if [[ \"$Q_L3_ENABLED\" \u003d\u003d \"True\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_dbb86d77","line":536,"updated":"2014-09-12 13:42:17.000000000","message":"the above statements can be simplified:\n      if [[ $IP_VERSION \u003d~ 4* ]]; then\n          _neutron_setup_default_subnet_v4\n      if\n      if [[ $IP_VERSION \u003d~ .*6 ]]; then\n          _neutron_setup_default_subnet_v6\n      fi","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":533,"context_line":"        if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":534,"context_line":"            _neutron_set_up_default_subnet_v4"},{"line_number":535,"context_line":"            _neutron_set_up_default_subnet_v6"},{"line_number":536,"context_line":"        fi"},{"line_number":537,"context_line":"    fi"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    if [[ \"$Q_L3_ENABLED\" \u003d\u003d \"True\" ]]; then"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_e913a459","line":536,"in_reply_to":"fa98f980_dbb86d77","updated":"2014-09-15 16:27:25.000000000","message":"Done, with a small tweak.","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":568,"context_line":"            _neutron_set_up_default_router_v4"},{"line_number":569,"context_line":"            _neutron_set_up_default_router_v6"},{"line_number":570,"context_line":"        fi"},{"line_number":571,"context_line":"    fi"},{"line_number":572,"context_line":"}"},{"line_number":573,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_0669b8bd","line":570,"updated":"2014-09-12 13:42:17.000000000","message":"ditto.\n\nin addition, recommend passing in things like: ROUTER_ID, SUBNET_ID, etc, etc, rather than relying on them as globals.","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":568,"context_line":"            _neutron_set_up_default_router_v4"},{"line_number":569,"context_line":"            _neutron_set_up_default_router_v6"},{"line_number":570,"context_line":"        fi"},{"line_number":571,"context_line":"    fi"},{"line_number":572,"context_line":"}"},{"line_number":573,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_892cd89a","line":570,"in_reply_to":"fa98f980_0669b8bd","updated":"2014-09-15 16:27:25.000000000","message":"Done","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":983,"context_line":"# Set up IPV4 private subnet"},{"line_number":984,"context_line":"function _neutron_set_up_default_subnet_v4 {"},{"line_number":985,"context_line":"    local SUBNET_PARAMS\u003d\"--tenant-id $TENANT_ID\""},{"line_number":986,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --ip_version 4\""},{"line_number":987,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --gateway $NETWORK_GATEWAY\""},{"line_number":988,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --name $PRIVATE_SUBNET_NAME\""},{"line_number":989,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS $NET_ID $FIXED_RANGE\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_8683e854","line":986,"updated":"2014-09-12 13:42:17.000000000","message":"SUBNET_PARAMS+\u003d\" --ip_version 4\" \n\nSame for all of the occurrences in the changes made in this file.","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":983,"context_line":"# Set up IPV4 private subnet"},{"line_number":984,"context_line":"function _neutron_set_up_default_subnet_v4 {"},{"line_number":985,"context_line":"    local SUBNET_PARAMS\u003d\"--tenant-id $TENANT_ID\""},{"line_number":986,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --ip_version 4\""},{"line_number":987,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --gateway $NETWORK_GATEWAY\""},{"line_number":988,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --name $PRIVATE_SUBNET_NAME\""},{"line_number":989,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS $NET_ID $FIXED_RANGE\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_49d590e3","line":986,"in_reply_to":"fa98f980_8683e854","updated":"2014-09-15 16:27:25.000000000","message":"Done","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":988,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --name $PRIVATE_SUBNET_NAME\""},{"line_number":989,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS $NET_ID $FIXED_RANGE\""},{"line_number":990,"context_line":"    SUBNET_ID\u003d$(neutron subnet-create $SUBNET_PARAMS | grep \u0027 id \u0027 | get_field 2)"},{"line_number":991,"context_line":"    die_if_not_set $LINENO SUBNET_ID \"Failure creating SUBNET_ID for $TENANT_ID\""},{"line_number":992,"context_line":"}"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"# Set up IPV6 private subnet"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_e643d410","line":991,"updated":"2014-09-12 13:42:17.000000000","message":"the function should return a SUBNET_ID by\n       echo $SUBNET_ID\n\nTo make it better, the function could take some input parameters and return a SUBNET_ID. But it may be for the future\n\nSame comments apply to other functions.","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":988,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS --name $PRIVATE_SUBNET_NAME\""},{"line_number":989,"context_line":"    SUBNET_PARAMS\u003d\"$SUBNET_PARAMS $NET_ID $FIXED_RANGE\""},{"line_number":990,"context_line":"    SUBNET_ID\u003d$(neutron subnet-create $SUBNET_PARAMS | grep \u0027 id \u0027 | get_field 2)"},{"line_number":991,"context_line":"    die_if_not_set $LINENO SUBNET_ID \"Failure creating SUBNET_ID for $TENANT_ID\""},{"line_number":992,"context_line":"}"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"# Set up IPV6 private subnet"}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_29d84c1d","line":991,"in_reply_to":"fa98f980_e643d410","updated":"2014-09-15 16:27:25.000000000","message":"Done","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":992,"context_line":"}"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"# Set up IPV6 private subnet"},{"line_number":995,"context_line":"function _neutron_set_up_default_subnet_v6 {"},{"line_number":996,"context_line":"    die_if_not_set $LINENO IPV6_RA_MODE \"IPV6 RA Mode not set\""},{"line_number":997,"context_line":"    die_if_not_set $LINENO IPV6_ADDRESS_MODE \"IPV6 Address Mode not set\""},{"line_number":998,"context_line":"    local IPV6_MODES\u003d\"--ipv6-ra-mode $IPV6_RA_MODE --ipv6-address-mode $IPV6_ADDRESS_MODE\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_c6adf085","line":995,"updated":"2014-09-12 13:42:17.000000000","message":"_neutron_setup_subnet_v6","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":992,"context_line":"}"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"# Set up IPV6 private subnet"},{"line_number":995,"context_line":"function _neutron_set_up_default_subnet_v6 {"},{"line_number":996,"context_line":"    die_if_not_set $LINENO IPV6_RA_MODE \"IPV6 RA Mode not set\""},{"line_number":997,"context_line":"    die_if_not_set $LINENO IPV6_ADDRESS_MODE \"IPV6 Address Mode not set\""},{"line_number":998,"context_line":"    local IPV6_MODES\u003d\"--ipv6-ra-mode $IPV6_RA_MODE --ipv6-address-mode $IPV6_ADDRESS_MODE\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_4c459e41","line":995,"in_reply_to":"fa98f980_c6adf085","updated":"2014-09-15 16:27:25.000000000","message":"I\u0027m going to go with _neutron_create_subnet to avoid the setup / set up issue.","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"}"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"# Set up default router and IPV4 public subnet"},{"line_number":1009,"context_line":"function _neutron_set_up_default_router_v4 {"},{"line_number":1010,"context_line":"    neutron router-interface-add $ROUTER_ID $SUBNET_ID"},{"line_number":1011,"context_line":"    # Create a public subnet on the external network"},{"line_number":1012,"context_line":"    local SUBNET_PARAMS\u003d\"--ip_version 4\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_a6bc6cbc","line":1009,"updated":"2014-09-12 13:42:17.000000000","message":"_neutron_setup_router_v4","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"}"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"# Set up default router and IPV4 public subnet"},{"line_number":1009,"context_line":"function _neutron_set_up_default_router_v4 {"},{"line_number":1010,"context_line":"    neutron router-interface-add $ROUTER_ID $SUBNET_ID"},{"line_number":1011,"context_line":"    # Create a public subnet on the external network"},{"line_number":1012,"context_line":"    local SUBNET_PARAMS\u003d\"--ip_version 4\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_6c750297","line":1009,"in_reply_to":"fa98f980_a6bc6cbc","updated":"2014-09-15 16:27:25.000000000","message":"Ditto","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"        if [[ \"$Q_USE_NAMESPACE\" \u003d\u003d \"False\" ]]; then"},{"line_number":1037,"context_line":"            # Explicitly set router id in l3 agent configuration"},{"line_number":1038,"context_line":"            iniset $Q_L3_CONF_FILE DEFAULT router_id $ROUTER_ID"},{"line_number":1039,"context_line":"        fi"},{"line_number":1040,"context_line":"    fi"},{"line_number":1041,"context_line":"}"},{"line_number":1042,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_067d381c","line":1039,"updated":"2014-09-12 13:42:17.000000000","message":"common to both v4 and v6, so the code should be taken out of two routines, and put in a common place.","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"        if [[ \"$Q_USE_NAMESPACE\" \u003d\u003d \"False\" ]]; then"},{"line_number":1037,"context_line":"            # Explicitly set router id in l3 agent configuration"},{"line_number":1038,"context_line":"            iniset $Q_L3_CONF_FILE DEFAULT router_id $ROUTER_ID"},{"line_number":1039,"context_line":"        fi"},{"line_number":1040,"context_line":"    fi"},{"line_number":1041,"context_line":"}"},{"line_number":1042,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_f36e0395","line":1039,"in_reply_to":"fa98f980_067d381c","updated":"2014-09-15 16:27:25.000000000","message":"Done","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"db61e372675bc3b99bf5709d4cecb578d92e8c27","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"}"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"# Set up default router and IPV6 public subnet"},{"line_number":1044,"context_line":"function _neutron_set_up_default_router_v6 {"},{"line_number":1045,"context_line":"    neutron router-interface-add $ROUTER_ID $IPV6_SUBNET_ID"},{"line_number":1046,"context_line":"    # Create a public subnet on the external network"},{"line_number":1047,"context_line":"    local SUBNET_PARAMS\u003d\"--ip_version 6\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_06cb7853","line":1044,"updated":"2014-09-12 13:42:17.000000000","message":"_neutron_setup_router_v6","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"571b1e934f34aea8a1f884e2c22f768468b820a3","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"}"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"# Set up default router and IPV6 public subnet"},{"line_number":1044,"context_line":"function _neutron_set_up_default_router_v6 {"},{"line_number":1045,"context_line":"    neutron router-interface-add $ROUTER_ID $IPV6_SUBNET_ID"},{"line_number":1046,"context_line":"    # Create a public subnet on the external network"},{"line_number":1047,"context_line":"    local SUBNET_PARAMS\u003d\"--ip_version 6\""}],"source_content_type":"application/octet-stream","patch_set":24,"id":"fa98f980_0c6636ed","line":1044,"in_reply_to":"fa98f980_06cb7853","updated":"2014-09-15 16:27:25.000000000","message":"Again, _neutron_create","commit_id":"c4dcbbe1c493deaf31fc479aa120a2206a717638"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c6231ac92c8ddb7455a63f37c93bead97896eac0","unresolved":false,"context_lines":[{"line_number":974,"context_line":""},{"line_number":975,"context_line":"# Create private IPv4 subnet"},{"line_number":976,"context_line":"# Param $1 \u003d TENANT_ID"},{"line_number":977,"context_line":"# Param $2 \u003d NET_ID"},{"line_number":978,"context_line":"function _neutron_create_private_subnet_v4 {"},{"line_number":979,"context_line":"    local SUBNET_PARAMS\u003d\"--tenant-id $1 \""},{"line_number":980,"context_line":"    SUBNET_PARAMS+\u003d\"--ip_version 4 \""}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_41360704","line":977,"updated":"2014-09-16 05:39:26.000000000","message":"It\u0027s better to define than comment.\n    local TENANT_ID\u003d$1\n    local NET_ID\u003d$2","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e00dd9d9c5043446683ee1339dd78ed9125d2a82","unresolved":false,"context_lines":[{"line_number":974,"context_line":""},{"line_number":975,"context_line":"# Create private IPv4 subnet"},{"line_number":976,"context_line":"# Param $1 \u003d TENANT_ID"},{"line_number":977,"context_line":"# Param $2 \u003d NET_ID"},{"line_number":978,"context_line":"function _neutron_create_private_subnet_v4 {"},{"line_number":979,"context_line":"    local SUBNET_PARAMS\u003d\"--tenant-id $1 \""},{"line_number":980,"context_line":"    SUBNET_PARAMS+\u003d\"--ip_version 4 \""}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_7bae539a","line":977,"in_reply_to":"fa98f980_41360704","updated":"2014-09-16 12:15:06.000000000","message":"Thanks, Done","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c6231ac92c8ddb7455a63f37c93bead97896eac0","unresolved":false,"context_lines":[{"line_number":988,"context_line":""},{"line_number":989,"context_line":"# Create private IPv6 subnet"},{"line_number":990,"context_line":"# Param $1 \u003d TENANT_ID"},{"line_number":991,"context_line":"# Param $2 \u003d NET_ID"},{"line_number":992,"context_line":"function _neutron_create_private_subnet_v6 {"},{"line_number":993,"context_line":"    die_if_not_set $LINENO IPV6_RA_MODE \"IPV6 RA Mode not set\""},{"line_number":994,"context_line":"    die_if_not_set $LINENO IPV6_ADDRESS_MODE \"IPV6 Address Mode not set\""}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_6455d9f8","line":991,"updated":"2014-09-16 05:39:26.000000000","message":"ditto.","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e00dd9d9c5043446683ee1339dd78ed9125d2a82","unresolved":false,"context_lines":[{"line_number":988,"context_line":""},{"line_number":989,"context_line":"# Create private IPv6 subnet"},{"line_number":990,"context_line":"# Param $1 \u003d TENANT_ID"},{"line_number":991,"context_line":"# Param $2 \u003d NET_ID"},{"line_number":992,"context_line":"function _neutron_create_private_subnet_v6 {"},{"line_number":993,"context_line":"    die_if_not_set $LINENO IPV6_RA_MODE \"IPV6 RA Mode not set\""},{"line_number":994,"context_line":"    die_if_not_set $LINENO IPV6_ADDRESS_MODE \"IPV6 Address Mode not set\""}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_9b921757","line":991,"in_reply_to":"fa98f980_6455d9f8","updated":"2014-09-16 12:15:06.000000000","message":"Done","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c6231ac92c8ddb7455a63f37c93bead97896eac0","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"# Create public IPv4 subnet and set router gateway"},{"line_number":1007,"context_line":"# Param $1 \u003d EXT_NET_ID"},{"line_number":1008,"context_line":"# Param $2 \u003d ROUTER_ID"},{"line_number":1009,"context_line":"function _neutron_create_public_subnet_v4 {"},{"line_number":1010,"context_line":"    neutron router-interface-add $2 $SUBNET_ID"},{"line_number":1011,"context_line":"    # Create a public subnet on the external network"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_a46981bf","line":1008,"updated":"2014-09-16 05:39:26.000000000","message":"ditto.\n    local EXT_NET_ID\u003d$1\n    local ROUTER_ID\u003d$2","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e00dd9d9c5043446683ee1339dd78ed9125d2a82","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"# Create public IPv4 subnet and set router gateway"},{"line_number":1007,"context_line":"# Param $1 \u003d EXT_NET_ID"},{"line_number":1008,"context_line":"# Param $2 \u003d ROUTER_ID"},{"line_number":1009,"context_line":"function _neutron_create_public_subnet_v4 {"},{"line_number":1010,"context_line":"    neutron router-interface-add $2 $SUBNET_ID"},{"line_number":1011,"context_line":"    # Create a public subnet on the external network"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_db9c9f6d","line":1008,"in_reply_to":"fa98f980_a46981bf","updated":"2014-09-16 12:15:06.000000000","message":"Done","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c6231ac92c8ddb7455a63f37c93bead97896eac0","unresolved":false,"context_lines":[{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"# Create public IPv6 subnet and set router gateway"},{"line_number":1043,"context_line":"# Param $1 \u003d EXT_NET_ID"},{"line_number":1044,"context_line":"# Param $2 \u003d ROUTER_ID"},{"line_number":1045,"context_line":"function _neutron_create_public_subnet_v6 {"},{"line_number":1046,"context_line":"    neutron router-interface-add $2 $IPV6_SUBNET_ID"},{"line_number":1047,"context_line":"    # Create a public subnet on the external network"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_249d91bc","line":1044,"updated":"2014-09-16 05:39:26.000000000","message":"ditto.\n    local EXT_NET_ID\u003d$1\n    local ROUTER_ID\u003d$2","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e00dd9d9c5043446683ee1339dd78ed9125d2a82","unresolved":false,"context_lines":[{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"# Create public IPv6 subnet and set router gateway"},{"line_number":1043,"context_line":"# Param $1 \u003d EXT_NET_ID"},{"line_number":1044,"context_line":"# Param $2 \u003d ROUTER_ID"},{"line_number":1045,"context_line":"function _neutron_create_public_subnet_v6 {"},{"line_number":1046,"context_line":"    neutron router-interface-add $2 $IPV6_SUBNET_ID"},{"line_number":1047,"context_line":"    # Create a public subnet on the external network"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_1b862717","line":1044,"in_reply_to":"fa98f980_249d91bc","updated":"2014-09-16 12:15:06.000000000","message":"Done","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c6231ac92c8ddb7455a63f37c93bead97896eac0","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"}"},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"# Explicitly set router id in l3 agent configuration"},{"line_number":1110,"context_line":"# Param $1 \u003d ROUTER_ID"},{"line_number":1111,"context_line":"function _neutron_set_router_id {"},{"line_number":1112,"context_line":"    if [[ \"$Q_USE_NAMESPACE\" \u003d\u003d \"False\" ]]; then"},{"line_number":1113,"context_line":"        iniset $Q_L3_CONF_FILE DEFAULT router_id $1"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_84a63d0d","line":1110,"updated":"2014-09-16 05:39:26.000000000","message":"ditto.\n    local ROUTER_ID\u003d$1","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e00dd9d9c5043446683ee1339dd78ed9125d2a82","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"}"},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"# Explicitly set router id in l3 agent configuration"},{"line_number":1110,"context_line":"# Param $1 \u003d ROUTER_ID"},{"line_number":1111,"context_line":"function _neutron_set_router_id {"},{"line_number":1112,"context_line":"    if [[ \"$Q_USE_NAMESPACE\" \u003d\u003d \"False\" ]]; then"},{"line_number":1113,"context_line":"        iniset $Q_L3_CONF_FILE DEFAULT router_id $1"}],"source_content_type":"application/octet-stream","patch_set":25,"id":"fa98f980_9b793733","line":1110,"in_reply_to":"fa98f980_84a63d0d","updated":"2014-09-16 12:15:06.000000000","message":"Done","commit_id":"0304978b5543dc8581d78481ad86c8fdd29e64ce"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":69,"context_line":"# Neutron Network Configuration"},{"line_number":70,"context_line":"# -----------------------------"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"IP_VERSION\u003d${IP_VERSION:-4}"},{"line_number":73,"context_line":"# Gateway and subnet defaults, in case they are not customized in localrc"},{"line_number":74,"context_line":"NETWORK_GATEWAY\u003d${NETWORK_GATEWAY:-10.0.0.1}"},{"line_number":75,"context_line":"PUBLIC_NETWORK_GATEWAY\u003d${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_d82d37aa","line":72,"updated":"2014-09-18 19:39:02.000000000","message":"Can we have code to verify the IP_VERSION to be \"4\", \"6\", or \"4+6\"? I think you can add the code immediately after the global variable definition in below","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"# Neutron Network Configuration"},{"line_number":70,"context_line":"# -----------------------------"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"IP_VERSION\u003d${IP_VERSION:-4}"},{"line_number":73,"context_line":"# Gateway and subnet defaults, in case they are not customized in localrc"},{"line_number":74,"context_line":"NETWORK_GATEWAY\u003d${NETWORK_GATEWAY:-10.0.0.1}"},{"line_number":75,"context_line":"PUBLIC_NETWORK_GATEWAY\u003d${PUBLIC_NETWORK_GATEWAY:-172.24.4.1}"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_0d0cc693","line":72,"in_reply_to":"fa98f980_d82d37aa","updated":"2014-09-19 14:23:24.000000000","message":"Done","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        die_if_not_set $LINENO PROVIDER_NETWORK_TYPE \"You must specifiy the PROVIDER_NETWORK_TYPE\""},{"line_number":515,"context_line":"        NET_ID\u003d$(neutron net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type $PROVIDER_NETWORK_TYPE --provider:physical_network \"$PHYSICAL_NETWORK\" ${SEGMENTATION_ID:+--provider:segmentation_id $SEGMENTATION_ID} --shared | grep \u0027 id \u0027 | get_field 2)"},{"line_number":516,"context_line":"        SUBNET_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --name $PROVIDER_SUBNET_NAME $NET_ID $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":517,"context_line":"        SUBNET_V6_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 6 --ipv6-address-mode slaac --gateway $V6_NETWORK_GATEWAY --name $PROVIDER_SUBNET_NAME_V6 $NET_ID $FIXED_RANGE_V6 | grep \u0027id\u0027 | get_field 2)"},{"line_number":518,"context_line":"        sudo ip link set $OVS_PHYSICAL_BRIDGE up"},{"line_number":519,"context_line":"        sudo ip link set br-int up"},{"line_number":520,"context_line":"        sudo ip link set $PUBLIC_INTERFACE up"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_18c6df16","line":517,"updated":"2014-09-18 19:39:02.000000000","message":"Now that a function is made to create subnet, would it make sense to use it in place of the above calls as well?","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        die_if_not_set $LINENO PROVIDER_NETWORK_TYPE \"You must specifiy the PROVIDER_NETWORK_TYPE\""},{"line_number":515,"context_line":"        NET_ID\u003d$(neutron net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type $PROVIDER_NETWORK_TYPE --provider:physical_network \"$PHYSICAL_NETWORK\" ${SEGMENTATION_ID:+--provider:segmentation_id $SEGMENTATION_ID} --shared | grep \u0027 id \u0027 | get_field 2)"},{"line_number":516,"context_line":"        SUBNET_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --name $PROVIDER_SUBNET_NAME $NET_ID $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":517,"context_line":"        SUBNET_V6_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 6 --ipv6-address-mode slaac --gateway $V6_NETWORK_GATEWAY --name $PROVIDER_SUBNET_NAME_V6 $NET_ID $FIXED_RANGE_V6 | grep \u0027id\u0027 | get_field 2)"},{"line_number":518,"context_line":"        sudo ip link set $OVS_PHYSICAL_BRIDGE up"},{"line_number":519,"context_line":"        sudo ip link set br-int up"},{"line_number":520,"context_line":"        sudo ip link set $PUBLIC_INTERFACE up"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_4d6c0e37","line":517,"in_reply_to":"fa98f980_18c6df16","updated":"2014-09-19 14:23:24.000000000","message":"I am concerned that we are making the _neutron_create_subnet function too generic, to the point where it offers no value over simply using neutron subnet-create. I am going back to the approach in patchset 26 which was much more modular and readable.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        NET_ID\u003d$(neutron net-create --tenant-id $TENANT_ID \"$PRIVATE_NETWORK_NAME\" | grep \u0027 id \u0027 | get_field 2)"},{"line_number":523,"context_line":"        die_if_not_set $LINENO NET_ID \"Failure creating NET_ID for $PHYSICAL_NETWORK $TENANT_ID\""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        local IS_PRIVATE\u003d\"True\""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ 4.* ]]; then"},{"line_number":528,"context_line":"            IPV4_SUBNET_ID\u003d$(_neutron_create_subnet $IS_PRIVATE 4 $NETWORK_GATEWAY $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE $TENANT_ID)"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_786febfc","line":525,"updated":"2014-09-18 19:39:02.000000000","message":"no need to define the variable, just use \"True\" or \"False\" in the call","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        NET_ID\u003d$(neutron net-create --tenant-id $TENANT_ID \"$PRIVATE_NETWORK_NAME\" | grep \u0027 id \u0027 | get_field 2)"},{"line_number":523,"context_line":"        die_if_not_set $LINENO NET_ID \"Failure creating NET_ID for $PHYSICAL_NETWORK $TENANT_ID\""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        local IS_PRIVATE\u003d\"True\""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ 4.* ]]; then"},{"line_number":528,"context_line":"            IPV4_SUBNET_ID\u003d$(_neutron_create_subnet $IS_PRIVATE 4 $NETWORK_GATEWAY $PRIVATE_SUBNET_NAME $NET_ID $FIXED_RANGE $TENANT_ID)"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_ad71fa0d","line":525,"in_reply_to":"fa98f980_786febfc","updated":"2014-09-19 14:23:24.000000000","message":"See above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        fi"},{"line_number":555,"context_line":"        die_if_not_set $LINENO EXT_NET_ID \"Failure creating EXT_NET_ID for $PUBLIC_NETWORK_NAME\""},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"        local IS_PRIVATE\u003d\"False\""},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ 4.* ]]; then"},{"line_number":560,"context_line":"            local ID_AND_EXT_GW_IP\u003d$(_neutron_create_subnet $IS_PRIVATE 4 $PUBLIC_NETWORK_GATEWAY $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE)"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_18625f16","line":557,"updated":"2014-09-18 19:39:02.000000000","message":"you don\u0027t need to define this variable. Just use \"False\" or \"True\" in the call.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        fi"},{"line_number":555,"context_line":"        die_if_not_set $LINENO EXT_NET_ID \"Failure creating EXT_NET_ID for $PUBLIC_NETWORK_NAME\""},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"        local IS_PRIVATE\u003d\"False\""},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ 4.* ]]; then"},{"line_number":560,"context_line":"            local ID_AND_EXT_GW_IP\u003d$(_neutron_create_subnet $IS_PRIVATE 4 $PUBLIC_NETWORK_GATEWAY $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE)"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_daa7d9a5","line":557,"in_reply_to":"fa98f980_18625f16","updated":"2014-09-19 14:23:24.000000000","message":"See above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            local ID_AND_EXT_GW_IP\u003d$(_neutron_create_subnet $IS_PRIVATE 4 $PUBLIC_NETWORK_GATEWAY $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE)"},{"line_number":561,"context_line":"            local IPV4_EXT_GW_IP\u003d$(echo $ID_AND_EXT_GW_IP | get_field 2)"},{"line_number":562,"context_line":"            local IPV4_PUBLIC_SUBNET_ID\u003d$(echo $ID_AND_EXT_GW_IP | get_field 5)"},{"line_number":563,"context_line":"            _neutron_configure_router $IPV4_SUBNET_ID 4 $IPV4_PUBLIC_SUBNET_ID $EXT_NET_ID $ROUTER_ID $IPV4_EXT_GW_IP"},{"line_number":564,"context_line":"        fi"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ .*6 ]]; then"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_1b5df9ec","line":563,"updated":"2014-09-18 19:39:02.000000000","message":"see comments at _neutron_configure_router.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            local ID_AND_EXT_GW_IP\u003d$(_neutron_create_subnet $IS_PRIVATE 4 $PUBLIC_NETWORK_GATEWAY $PUBLIC_SUBNET_NAME $EXT_NET_ID $FLOATING_RANGE)"},{"line_number":561,"context_line":"            local IPV4_EXT_GW_IP\u003d$(echo $ID_AND_EXT_GW_IP | get_field 2)"},{"line_number":562,"context_line":"            local IPV4_PUBLIC_SUBNET_ID\u003d$(echo $ID_AND_EXT_GW_IP | get_field 5)"},{"line_number":563,"context_line":"            _neutron_configure_router $IPV4_SUBNET_ID 4 $IPV4_PUBLIC_SUBNET_ID $EXT_NET_ID $ROUTER_ID $IPV4_EXT_GW_IP"},{"line_number":564,"context_line":"        fi"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ .*6 ]]; then"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_2d5d0a7a","line":563,"in_reply_to":"fa98f980_1b5df9ec","updated":"2014-09-19 14:23:24.000000000","message":"See above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":567,"context_line":"            local ID_AND_EXT_GW_IP\u003d$(_neutron_create_subnet $IS_PRIVATE 6 $IPV6_PUBLIC_NETWORK_GATEWAY $IPV6_PUBLIC_SUBNET_NAME $EXT_NET_ID $IPV6_PUBLIC_RANGE)"},{"line_number":568,"context_line":"            local IPV6_EXT_GW_IP\u003d$(echo $ID_AND_EXT_GW_IP | get_field 2)"},{"line_number":569,"context_line":"            local IPV6_PUBLIC_SUBNET_ID\u003d$(echo $ID_AND_EXT_GW_IP | get_field 5)"},{"line_number":570,"context_line":"            _neutron_configure_router $IPV6_SUBNET_ID 6 $IPV6_PUBLIC_SUBNET_ID $EXT_NET_ID $ROUTER_ID $IPV6_EXT_GW_IP $IPV4_PUBLIC_SUBNET_ID"},{"line_number":571,"context_line":"        fi"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_5b25c15a","line":570,"updated":"2014-09-18 19:39:02.000000000","message":"see comments at _neutron_configure_router in below.\n\nThis call has $IPV4_PUBLIC_SUBNET_ID as input as well, but it has a different location from the last call. This is very confusing. I think that it makes sense to have different functions to configure the router for v4 and v6 access, respectively.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":567,"context_line":"            local ID_AND_EXT_GW_IP\u003d$(_neutron_create_subnet $IS_PRIVATE 6 $IPV6_PUBLIC_NETWORK_GATEWAY $IPV6_PUBLIC_SUBNET_NAME $EXT_NET_ID $IPV6_PUBLIC_RANGE)"},{"line_number":568,"context_line":"            local IPV6_EXT_GW_IP\u003d$(echo $ID_AND_EXT_GW_IP | get_field 2)"},{"line_number":569,"context_line":"            local IPV6_PUBLIC_SUBNET_ID\u003d$(echo $ID_AND_EXT_GW_IP | get_field 5)"},{"line_number":570,"context_line":"            _neutron_configure_router $IPV6_SUBNET_ID 6 $IPV6_PUBLIC_SUBNET_ID $EXT_NET_ID $ROUTER_ID $IPV6_EXT_GW_IP $IPV4_PUBLIC_SUBNET_ID"},{"line_number":571,"context_line":"        fi"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_4d532e6c","line":570,"in_reply_to":"fa98f980_5b25c15a","updated":"2014-09-19 14:23:24.000000000","message":"See above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":990,"context_line":"function _neutron_create_subnet {"},{"line_number":991,"context_line":"    # Read parameters"},{"line_number":992,"context_line":"    local IS_PRIVATE\u003d$1"},{"line_number":993,"context_line":"    local IP_VERSION\u003d$2"},{"line_number":994,"context_line":"    local NETWORK_GATEWAY\u003d$3"},{"line_number":995,"context_line":"    local SUBNET_NAME\u003d$4"},{"line_number":996,"context_line":"    local NET_ID\u003d$5"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_b805d316","line":993,"updated":"2014-09-18 19:39:02.000000000","message":"Can we use a different variable name here since it\u0027s already used for the global IP_VERSION","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":990,"context_line":"function _neutron_create_subnet {"},{"line_number":991,"context_line":"    # Read parameters"},{"line_number":992,"context_line":"    local IS_PRIVATE\u003d$1"},{"line_number":993,"context_line":"    local IP_VERSION\u003d$2"},{"line_number":994,"context_line":"    local NETWORK_GATEWAY\u003d$3"},{"line_number":995,"context_line":"    local SUBNET_NAME\u003d$4"},{"line_number":996,"context_line":"    local NET_ID\u003d$5"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_fa5d7ded","line":993,"in_reply_to":"fa98f980_b805d316","updated":"2014-09-19 14:23:24.000000000","message":"See above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"    SUBNET_PARAMS+\u003d\"--name $SUBNET_NAME \""},{"line_number":1016,"context_line":"    SUBNET_PARAMS+\u003d\"$NET_ID $RANGE \""},{"line_number":1017,"context_line":"    # One final conditional parameter"},{"line_number":1018,"context_line":"    if [[ $IS_PRIVATE !\u003d \"True\" ]]; then"},{"line_number":1019,"context_line":"        SUBNET_PARAMS+\u003d\"-- --enable_dhcp\u003dFalse \""},{"line_number":1020,"context_line":"    fi"},{"line_number":1021,"context_line":"    # Create the subnet"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_d8fa9742","line":1018,"updated":"2014-09-18 19:39:02.000000000","message":"Should this be $IS_PRIVATE \u003d\u003d \"True\" instead? dhcp is not enabled for a public subnet","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":1015,"context_line":"    SUBNET_PARAMS+\u003d\"--name $SUBNET_NAME \""},{"line_number":1016,"context_line":"    SUBNET_PARAMS+\u003d\"$NET_ID $RANGE \""},{"line_number":1017,"context_line":"    # One final conditional parameter"},{"line_number":1018,"context_line":"    if [[ $IS_PRIVATE !\u003d \"True\" ]]; then"},{"line_number":1019,"context_line":"        SUBNET_PARAMS+\u003d\"-- --enable_dhcp\u003dFalse \""},{"line_number":1020,"context_line":"    fi"},{"line_number":1021,"context_line":"    # Create the subnet"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_5aae8999","line":1018,"in_reply_to":"fa98f980_d8fa9742","updated":"2014-09-19 14:23:24.000000000","message":"When $IS_PRIVATE !\u003d \"True\" a public subnet is being created, which as you say is when dhcp should not be enabled. The logic here is correct as it is, but see above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"        echo $SUBNET_ID"},{"line_number":1028,"context_line":"    else"},{"line_number":1029,"context_line":"        echo $ID_AND_EXT_GW_IP"},{"line_number":1030,"context_line":"    fi"},{"line_number":1031,"context_line":"}"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"# Configure neutron router for external connectivity"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_5ec92fab","line":1030,"updated":"2014-09-18 19:39:02.000000000","message":"Can we change the above to:\n\n echo $(echo $ID_AND_EXT_GW_IP | get_field 5) $(echo $ID_AND_EXT_GW_IP | get_field 2)\n\nBasically this function will return \u003csubnet_id\u003e \u003cgw_ip\u003e, and the caller gets what\u0027s needed from the two.\n\nFor example:\n   subinfo\u003d($(_neutron_create_subnet \u003cparameters\u003e))\n   subnet_id\u003d${subinfo[0]}\n   gw_ip\u003d${subinfo[1]}","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"        echo $SUBNET_ID"},{"line_number":1028,"context_line":"    else"},{"line_number":1029,"context_line":"        echo $ID_AND_EXT_GW_IP"},{"line_number":1030,"context_line":"    fi"},{"line_number":1031,"context_line":"}"},{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"# Configure neutron router for external connectivity"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_6dd552b6","line":1030,"in_reply_to":"fa98f980_5ec92fab","updated":"2014-09-19 14:23:24.000000000","message":"See above comment regarding patchset 26.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"# Configure neutron router for external connectivity"},{"line_number":1034,"context_line":"function _neutron_configure_router {"},{"line_number":1035,"context_line":"    # Read variables"},{"line_number":1036,"context_line":"    local GLOBAL_IP_VERSION\u003d$IP_VERSION"},{"line_number":1037,"context_line":"    local PRIVATE_SUBNET_ID\u003d$1"},{"line_number":1038,"context_line":"    local SUBNET_IP_VERSION\u003d$2"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_9b49e934","line":1035,"updated":"2014-09-18 19:39:02.000000000","message":"Basically the router will be configured with public ipv4 and ipv6 access. \n\nIs it possible to divide this function into two?\n  _neutron_configure_router_v4\n  _neutron_configure_router_v6\n\nThis would make it more readable and easy to understand.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":1032,"context_line":""},{"line_number":1033,"context_line":"# Configure neutron router for external connectivity"},{"line_number":1034,"context_line":"function _neutron_configure_router {"},{"line_number":1035,"context_line":"    # Read variables"},{"line_number":1036,"context_line":"    local GLOBAL_IP_VERSION\u003d$IP_VERSION"},{"line_number":1037,"context_line":"    local PRIVATE_SUBNET_ID\u003d$1"},{"line_number":1038,"context_line":"    local SUBNET_IP_VERSION\u003d$2"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_0de8467b","line":1035,"in_reply_to":"fa98f980_9b49e934","updated":"2014-09-19 14:23:24.000000000","message":"Agreed. Going back to the approach in patchset 26 to address this.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"040a4ebfe14ca3a62752d0f33e6d7ec7d70534c2","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"# Configure neutron router for external connectivity"},{"line_number":1034,"context_line":"function _neutron_configure_router {"},{"line_number":1035,"context_line":"    # Read variables"},{"line_number":1036,"context_line":"    local GLOBAL_IP_VERSION\u003d$IP_VERSION"},{"line_number":1037,"context_line":"    local PRIVATE_SUBNET_ID\u003d$1"},{"line_number":1038,"context_line":"    local SUBNET_IP_VERSION\u003d$2"},{"line_number":1039,"context_line":"    local PUBLIC_SUBNET_ID\u003d$3"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_f8ff5b00","line":1036,"updated":"2014-09-18 19:39:02.000000000","message":"IP_VERSION should be considered the global ip version across this file.","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e6da66b8a32e8184391140e60f8bac76e6cfdac8","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"# Configure neutron router for external connectivity"},{"line_number":1034,"context_line":"function _neutron_configure_router {"},{"line_number":1035,"context_line":"    # Read variables"},{"line_number":1036,"context_line":"    local GLOBAL_IP_VERSION\u003d$IP_VERSION"},{"line_number":1037,"context_line":"    local PRIVATE_SUBNET_ID\u003d$1"},{"line_number":1038,"context_line":"    local SUBNET_IP_VERSION\u003d$2"},{"line_number":1039,"context_line":"    local PUBLIC_SUBNET_ID\u003d$3"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"fa98f980_3a58e5f9","line":1036,"in_reply_to":"fa98f980_f8ff5b00","updated":"2014-09-19 14:23:24.000000000","message":"Done","commit_id":"f88efcdcc5c1d531aa862b9c0e4d04c22f868d81"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"5f82a6d86b1386ab67b3cfaf9499b5012f3eb0b2","unresolved":false,"context_lines":[{"line_number":1119,"context_line":"            sudo ip -6 route add $FIXED_RANGE_V6 via $IPV6_ROUTER_GW_IP dev $PUBLIC_BRIDGE"},{"line_number":1120,"context_line":""},{"line_number":1121,"context_line":"            # add a default route to the host"},{"line_number":1122,"context_line":"            sudo ip netns exec qrouter-$ROUTER_ID ip -6 route add ::/0 via $IPV6_EXT_GW_IP dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1123,"context_line":"        fi"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"        _neutron_set_router_id"}],"source_content_type":"application/octet-stream","patch_set":30,"id":"da9df570_de87160e","line":1122,"updated":"2014-09-22 10:23:53.000000000","message":"I\u0027m going to move this into the \u0027else\u0027 block of the above if statement to avoids conflicts with IPv4 in a 4+6 configuration.","commit_id":"43270f00b8203fbbc3e8708e6a89655ccb7f312d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cfa7a34ce12b14256ff9e6b86c84be103d820c58","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ .*6 ]]; then"},{"line_number":536,"context_line":"            # Ensure IPv6 forwarding is enabled on the host"},{"line_number":537,"context_line":"            sudo sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"            # Create IPv6 private subnet"},{"line_number":540,"context_line":"            IPV6_SUBNET_ID\u003d$(_neutron_create_private_subnet_v6)"}],"source_content_type":"application/octet-stream","patch_set":34,"id":"da9df570_8a1a966c","line":537,"updated":"2014-09-22 20:50:04.000000000","message":"Sorry, I\u0027ve missed a lot of updates to this patch, so maybe it\u0027s obvious, but why are you turning-on forwarding here when it\u0027s done in _neutron_configure_router_v6 ?","commit_id":"79924bfa9dfed43c67ab236772dd89b8bfae1449"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ab162a4a727eb9a5e8cd62ca8b7d981eb2e304e5","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ .*6 ]]; then"},{"line_number":536,"context_line":"            # Ensure IPv6 forwarding is enabled on the host"},{"line_number":537,"context_line":"            sudo sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"            # Create IPv6 private subnet"},{"line_number":540,"context_line":"            IPV6_SUBNET_ID\u003d$(_neutron_create_private_subnet_v6)"}],"source_content_type":"application/octet-stream","patch_set":34,"id":"da9df570_ea74f99d","line":537,"in_reply_to":"da9df570_8a1a966c","updated":"2014-09-23 03:30:32.000000000","message":"Here ipv6 forwarding is enabled on the host. In _neutron_configure_router_v6 it gets enabled in the namespace for the router.","commit_id":"79924bfa9dfed43c67ab236772dd89b8bfae1449"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"8943357eac7807306ec3e66b146395925db570e3","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_5cbc136d","line":93,"updated":"2014-09-29 18:31:39.000000000","message":"This is not a sane default. If you are going to allocate from the ULA block, we need to actually generate some randomness to create a prefix.\n\nIn this case, perhaps just using the documentation prefix specified in RFC3849 is in order?","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"af2431c8e149c6544b0550cabaf6f01b22e4ddd7","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_dd7c6875","line":93,"in_reply_to":"baa201ad_02f92fe9","updated":"2014-09-30 14:28:31.000000000","message":"Regarding using the documentation space, yes upon review that is an incorrect suggestion.\n\nI disagree with the conclusion that it should be a feature in neutron to randomize. If we are going to use the ULA space, we should pull some randomness from /dev/random via dd and then run it through hexdump to format.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e4614bd950aa3e40fa16f30f23fd64159415c177","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_a173084c","line":93,"in_reply_to":"baa201ad_375f6810","updated":"2014-09-30 10:07:50.000000000","message":"Only one private IPv6 subnet will be created by this script, just as with IPv4. Neutron will not allow the creation of two subnets with the same prefix so I don\u0027t see the issue here. Could you please elaborate?","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"ecc3f7f28701c3bf58f963dbe2b723e00d7a6960","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_572cec4a","line":93,"in_reply_to":"baa201ad_375f6810","updated":"2014-09-29 18:49:07.000000000","message":"This script creates a single ipv6 subnet as it does for ipv4. The user can set this variables in local.conf or localrc. Is there a problem with this default?","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"003ec921390737b313c71ed0d4f7418e875adf83","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_02f92fe9","line":93,"in_reply_to":"baa201ad_473c2930","updated":"2014-09-30 14:00:10.000000000","message":"If that\u0027s the case then that sounds like a feature we\u0027d want to include in neutron itself, rather than anywhere that calls to neutron are made - here, horizon, python-client, etc.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":9411,"name":"Anthony Veiga","email":"anthony_veiga@cable.comcast.com","username":"aveiga"},"change_message_id":"832f155e7d3a2684f8aede221c3ad8ebe730c9b5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_375f6810","line":93,"in_reply_to":"baa201ad_5cbc136d","updated":"2014-09-29 18:40:58.000000000","message":"Please don\u0027t use the Doc space.  I\u0027d strongly suggest NOT defaulting a ULA prefix, but generating one for each subnet.  If a tenant links two networks by putting a VM on both, they need to be unique.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":9411,"name":"Anthony Veiga","email":"anthony_veiga@cable.comcast.com","username":"aveiga"},"change_message_id":"4b3a7910ec121ea6629c21fb7cd369c6cec6631a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_473c2930","line":93,"in_reply_to":"baa201ad_a173084c","updated":"2014-09-30 13:45:20.000000000","message":"I went back and reread RFC 4193.  While it never says \"MUST\", I interpret the RFC as stating that setting the pseudo-random 40-bit identifier is non-optional since it\u0027s part of the address definition.  I was unaware that neutron would prevent the reuse of address space.  In fact, I just confirmed that I can set the same IPv4 subnet all over and it won\u0027t give any errors, even within the same tenant, so long as the subnets are on different neutron networks. The scenario I was considering is joining multiple neutron networks to the same VM.  While it\u0027s difficult to prevent this in IPv4, I think we should strive to do it in IPv6 to make it as seamless as we can.  As to my comment on not using the documentation space, RFC 3849 states in the Operational Considerations section that filters should be in place locally as well as globally, making deployment of a doc space inherently broken in any kind of production code.\n\nTo conclude: We should randomize the 40-bit identifier section of a ULA address per-network.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"21cb0e184d4e8575dcaca2025c16fcd7db809936","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":91,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-fd00::1}"},{"line_number":92,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_b2ad0a8b","line":93,"in_reply_to":"baa201ad_dd7c6875","updated":"2014-09-30 18:02:35.000000000","message":"As discussed in the IPv6 meeting I\u0027ll update this to use a randomized Global ID as per RFC 4193.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"e85d470aad6f745aaf4898dbc31c5ce6e7c997c9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":97,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Set up default directories"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_0505af10","line":96,"updated":"2014-09-30 20:10:43.000000000","message":"This global variable doesn\u0027t seem to be needed any more and it confuses with a locally defined variable with the same name","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"5983c0b58f6996be905515357f287fcbd528be9b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd00::/64}"},{"line_number":94,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":95,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":96,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":97,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Set up default directories"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_8e6e1700","line":96,"in_reply_to":"baa201ad_0505af10","updated":"2014-10-02 13:34:54.000000000","message":"This global is still needed for 4+6 configurations.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"5983c0b58f6996be905515357f287fcbd528be9b","unresolved":false,"context_lines":[{"line_number":542,"context_line":""},{"line_number":543,"context_line":"        if [[ \"$IP_VERSION\" \u003d~ .*6 ]]; then"},{"line_number":544,"context_line":"            # Ensure IPv6 forwarding is enabled on the host"},{"line_number":545,"context_line":"            sudo sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"            # Create IPv6 private subnet"},{"line_number":548,"context_line":"            IPV6_SUBNET_ID\u003d$(_neutron_create_private_subnet_v6)"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_bc0dd139","line":545,"updated":"2014-10-02 13:34:54.000000000","message":"Will remove this as per comments on line 1127.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7364ebdc6d47e91ca2f7aa5406566b514fce7d55","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"            local IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            # Enable IPv6 forwarding in the router"},{"line_number":1127,"context_line":"            sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"            # Configure interface for public bridge"},{"line_number":1130,"context_line":"            sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_48150ef0","line":1127,"updated":"2014-09-30 21:11:44.000000000","message":"I know I already asked why this was being done here, but after seeing the code in l3_agent.py:_create_namespace():\n\n        if self.use_ipv6:\n            ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027,\n                                      \u0027net.ipv6.conf.all.forwarding\u003d1\u0027])\n\nAm wondering why again.  Shouldn\u0027t Neutron be handling such things?\n\nThe only place I found ip_forward being set is in a Nova-commented section in stack.sh (although that might be hit if q-dhcp is enabled).","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"d9d0f16c9d66263b55805769571660ecae98c508","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"            local IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            # Enable IPv6 forwarding in the router"},{"line_number":1127,"context_line":"            sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"            # Configure interface for public bridge"},{"line_number":1130,"context_line":"            sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_34049f7a","line":1127,"in_reply_to":"baa201ad_147ddb6e","updated":"2014-10-01 02:57:13.000000000","message":"Thanks for catching this Brian.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"49fab7036de6ddc82538e02652da73eed4fc598e","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"            local IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            # Enable IPv6 forwarding in the router"},{"line_number":1127,"context_line":"            sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"            # Configure interface for public bridge"},{"line_number":1130,"context_line":"            sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_7e51a861","line":1127,"in_reply_to":"baa201ad_48150ef0","updated":"2014-09-30 23:39:56.000000000","message":"Brian, the initial patches were written back in Apr. The code you pointed out  in l3_agent.py was added end of Aug. With that change in l3_agent.py, the above statement is no longer needed. \n\nThe change in l3_agent.py will enable ipv6 forwarding if the host has it enabled. Probably it should have been done when an ipv6 subnet is added into the router.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"5983c0b58f6996be905515357f287fcbd528be9b","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"            local IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            # Enable IPv6 forwarding in the router"},{"line_number":1127,"context_line":"            sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"            # Configure interface for public bridge"},{"line_number":1130,"context_line":"            sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_8e453772","line":1127,"in_reply_to":"baa201ad_48150ef0","updated":"2014-10-02 13:34:54.000000000","message":"Thanks for spotting this. I will remove this and also line 545.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"15125877a9df18a15d32f4b3129410664ac1f464","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"            local IPV6_PREFIX\u003d${IPV6_PUBLIC_RANGE%/*}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"            # Enable IPv6 forwarding in the router"},{"line_number":1127,"context_line":"            sudo ip netns exec qrouter-$ROUTER_ID sysctl -w net.ipv6.conf.all.forwarding\u003d1"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"            # Configure interface for public bridge"},{"line_number":1130,"context_line":"            sudo ip -6 addr add $IPV6_EXT_GW_IP/$IPV6_CIDR_LEN dev $PUBLIC_BRIDGE"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_147ddb6e","line":1127,"in_reply_to":"baa201ad_7e51a861","updated":"2014-10-01 02:22:06.000000000","message":"Thanks, and I realize it\u0027s hard to keep this change in sync with Neutron code, especially over the past month.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6fa855bab19cd1186b35d5d13a7f8035b6d5e017","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1136,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1137,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1138,"context_line":"                fi"},{"line_number":1139,"context_line":"                # Configure the gateway port with the public IPv6 adress"},{"line_number":1140,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1141,"context_line":"                # Add a default IPv6 route to the neutron router as the"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_4427c064","line":1138,"updated":"2014-09-30 16:47:38.000000000","message":"This code doesn\u0027t play well with DVR, since if Q_DVR_MODE \u003d dvr_snat the qg- interface won\u0027t be in the qrouter namespace, but in the snat namespace.  I might have a quick workaround you can put here to at least make things work, am testing out now and will let you know.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"15125877a9df18a15d32f4b3129410664ac1f464","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1136,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1137,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1138,"context_line":"                fi"},{"line_number":1139,"context_line":"                # Configure the gateway port with the public IPv6 adress"},{"line_number":1140,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1141,"context_line":"                # Add a default IPv6 route to the neutron router as the"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_54968395","line":1138,"in_reply_to":"baa201ad_28b52aee","updated":"2014-10-01 02:22:06.000000000","message":"My testing showed this patch didn\u0027t interfere with DVR with just IPv4 (as expected).  Just wanted to let you know.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7364ebdc6d47e91ca2f7aa5406566b514fce7d55","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1136,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1137,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1138,"context_line":"                fi"},{"line_number":1139,"context_line":"                # Configure the gateway port with the public IPv6 adress"},{"line_number":1140,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1141,"context_line":"                # Add a default IPv6 route to the neutron router as the"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_28b52aee","line":1138,"in_reply_to":"baa201ad_4427c064","updated":"2014-09-30 21:11:44.000000000","message":"So my quick fix of using the snat- namespace got past the setup error, but the l3-agent complained later adding a routing rule.  I\u0027ll keep looking at getting this minimally working when both DVR and 4+6 are enabled, but as I discussed on irc with HenryG, we should just make sure this patch doesn\u0027t break DVR when IP_VERSION\u003d4.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"5983c0b58f6996be905515357f287fcbd528be9b","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1136,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1137,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1138,"context_line":"                fi"},{"line_number":1139,"context_line":"                # Configure the gateway port with the public IPv6 adress"},{"line_number":1140,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1141,"context_line":"                # Add a default IPv6 route to the neutron router as the"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_2e544b20","line":1138,"in_reply_to":"baa201ad_54968395","updated":"2014-10-02 13:34:54.000000000","message":"Thanks Brian, I will leave this as-is.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"d9d0f16c9d66263b55805769571660ecae98c508","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1136,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${IPV6_ROUTER_GW_PORT:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1137,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1138,"context_line":"                fi"},{"line_number":1139,"context_line":"                # Configure the gateway port with the public IPv6 adress"},{"line_number":1140,"context_line":"                sudo ip netns exec qrouter-$ROUTER_ID ip -6 addr add $IPV6_ROUTER_GW_IP/$IPV6_CIDR_LEN dev qg-${IPV6_ROUTER_GW_PORT:0:11}"},{"line_number":1141,"context_line":"                # Add a default IPv6 route to the neutron router as the"}],"source_content_type":"application/octet-stream","patch_set":36,"id":"baa201ad_f4093796","line":1138,"in_reply_to":"baa201ad_54968395","updated":"2014-10-01 02:57:13.000000000","message":"Thanks for verifying Brian. A follow-up patch will address devstack support for DVR + IPv6.","commit_id":"ed048966ae3c9636f5b94d0ead925112efe9fa4f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"d417b5aef572f77c8817245d8c9c11fc0f47f928","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    Q_PROTOCOL\u003d\"https\""},{"line_number":86,"context_line":"fi"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Generate random 40-bit Global ID for FIXED_RANGE_V6 default"},{"line_number":89,"context_line":"IPV6_GLOBAL_ID\u003d`uuidgen | sed s/-//g | cut -c 23- | sed -e \"s/\\(....\\)\\(....\\)\\(..\\)/\\1:\\2:\\3/\"`"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Gateway and subnet defaults for IPv6"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_652d8946","line":88,"updated":"2014-10-01 14:32:44.000000000","message":"Might be a good idea to add \" to comply with RFC 4193\"","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"61ad0669981b2869aef3b05deec54cdbd1f6a56c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    Q_PROTOCOL\u003d\"https\""},{"line_number":86,"context_line":"fi"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Generate random 40-bit Global ID for FIXED_RANGE_V6 default"},{"line_number":89,"context_line":"IPV6_GLOBAL_ID\u003d`uuidgen | sed s/-//g | cut -c 23- | sed -e \"s/\\(....\\)\\(....\\)\\(..\\)/\\1:\\2:\\3/\"`"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Gateway and subnet defaults for IPv6"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_e5d179fc","line":88,"in_reply_to":"baa201ad_652d8946","updated":"2014-10-01 17:17:28.000000000","message":"Good idea, done.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"2c3df270dc32d03e941bb0f267c39953562f09f3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"fi"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Generate random 40-bit Global ID for FIXED_RANGE_V6 default"},{"line_number":89,"context_line":"IPV6_GLOBAL_ID\u003d`uuidgen | sed s/-//g | cut -c 23- | sed -e \"s/\\(....\\)\\(....\\)\\(..\\)/\\1:\\2:\\3/\"`"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":92,"context_line":"IPV6_RA_MODE\u003d${IPV6_RA_MODE:-slaac}"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_ddce0f83","line":89,"updated":"2014-10-01 12:58:52.000000000","message":"The last command in the pipeline should be\nsed -e \"s/\\(..\\)\\(....\\)\\(....\\)/\\1:\\2:\\3/","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"61ad0669981b2869aef3b05deec54cdbd1f6a56c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"fi"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Generate random 40-bit Global ID for FIXED_RANGE_V6 default"},{"line_number":89,"context_line":"IPV6_GLOBAL_ID\u003d`uuidgen | sed s/-//g | cut -c 23- | sed -e \"s/\\(....\\)\\(....\\)\\(..\\)/\\1:\\2:\\3/\"`"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":92,"context_line":"IPV6_RA_MODE\u003d${IPV6_RA_MODE:-slaac}"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_6f2d6a46","line":89,"in_reply_to":"baa201ad_ddce0f83","updated":"2014-10-01 17:17:28.000000000","message":"My mistake, done.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"2c3df270dc32d03e941bb0f267c39953562f09f3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":92,"context_line":"IPV6_RA_MODE\u003d${IPV6_RA_MODE:-slaac}"},{"line_number":93,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":94,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-$IPV6_GLOBAL_ID:fd00::1}"},{"line_number":95,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_7dd7e323","line":94,"updated":"2014-10-01 12:58:52.000000000","message":"it should be fd$IPV6_GLOBAL_ID::1","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"61ad0669981b2869aef3b05deec54cdbd1f6a56c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# Gateway and subnet defaults for IPv6"},{"line_number":92,"context_line":"IPV6_RA_MODE\u003d${IPV6_RA_MODE:-slaac}"},{"line_number":93,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":94,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-$IPV6_GLOBAL_ID:fd00::1}"},{"line_number":95,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_af275263","line":94,"in_reply_to":"baa201ad_7dd7e323","updated":"2014-10-01 17:17:28.000000000","message":"Done","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"2c3df270dc32d03e941bb0f267c39953562f09f3","unresolved":false,"context_lines":[{"line_number":93,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":94,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-$IPV6_GLOBAL_ID:fd00::1}"},{"line_number":95,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":98,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":99,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_1df257d2","line":96,"updated":"2014-10-01 12:58:52.000000000","message":"fd$IPV6_GLOBAL_ID::/64","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"61ad0669981b2869aef3b05deec54cdbd1f6a56c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"IPV6_ADDRESS_MODE\u003d${IPV6_ADDRESS_MODE:-slaac}"},{"line_number":94,"context_line":"IPV6_NETWORK_GATEWAY\u003d${IPV6_NETWORK_GATEWAY:-$IPV6_GLOBAL_ID:fd00::1}"},{"line_number":95,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":98,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":99,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_cf2ad62b","line":96,"in_reply_to":"baa201ad_1df257d2","updated":"2014-10-01 17:17:28.000000000","message":"Done","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"2c3df270dc32d03e941bb0f267c39953562f09f3","unresolved":false,"context_lines":[{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":98,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":99,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":100,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# Set up default directories"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_9d42c70e","line":99,"updated":"2014-10-01 12:58:52.000000000","message":"Remove this global definition","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"4322ede7ed3c49a5b3edf9c64d5dcef7119bb7f0","unresolved":false,"context_lines":[{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":98,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":99,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":100,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# Set up default directories"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_3a78f78e","line":99,"in_reply_to":"baa201ad_1447891e","updated":"2014-10-01 17:35:11.000000000","message":"the scope of \u0027local v\u0027 is the function. Try the following script:\n\na\u003d100\n\nfunction foo {\n    if [[ a \u003e 10 ]]; then\n        local a\u003d200\n        echo \"a \u003d $a\"\n    fi\n    echo \"o a \u003d $a\"\n}\n\necho \"before a \u003d $a\"\n\nfoo\n\necho \"after a \u003d $a\"\n\nThat\u0027s why it should be removed.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e9233cd59f03bfaea8e00c4ddb5f91c8ad6d56f8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":98,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":99,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":100,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# Set up default directories"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_78e8b5e2","line":99,"in_reply_to":"baa201ad_3a78f78e","updated":"2014-10-02 13:34:23.000000000","message":"As discussed separately, I\u0027m going to add a comment here explaining why this global can\u0027t be removed.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"61ad0669981b2869aef3b05deec54cdbd1f6a56c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-$IPV6_GLOBAL_ID:fd00::/64}"},{"line_number":97,"context_line":"IPV6_PUBLIC_SUBNET_NAME\u003d${IPV6_PUBLIC_SUBNET_NAME:-ipv6-public-subnet}"},{"line_number":98,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":99,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":100,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"# Set up default directories"}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_1447891e","line":99,"in_reply_to":"baa201ad_9d42c70e","updated":"2014-10-01 17:17:28.000000000","message":"We need this global definition to provide an address to be used on line 1137 in case of a 4+6 configuration. For 6 only we override the default on line 1108 which validates that it matches with the subnet prefix, but we can\u0027t do that with 4+6 because the router gateway is set with IPv4 on line 1073.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"4322ede7ed3c49a5b3edf9c64d5dcef7119bb7f0","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"    if is_service_enabled q-l3; then"},{"line_number":1106,"context_line":"        # Configure and enable public bridge"},{"line_number":1107,"context_line":"        if [[ \"$IP_VERSION\" \u003d \"6\" ]]; then"},{"line_number":1108,"context_line":"            local IPV6_ROUTER_GW_IP\u003d`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F \u0027\"\u0027 -v subnet_id\u003d$IPV6_PUB_SUBNET_ID \u0027$4 \u003d\u003d subnet_id { print $8; }\u0027`"},{"line_number":1109,"context_line":"            die_if_not_set $LINENO IPV6_ROUTER_GW_IP \"Failure retrieving IPV6_ROUTER_GW_IP\""},{"line_number":1110,"context_line":"            local IPV6_ROUTER_GW_PORT\u003d`neutron port-list -c id -c fixed_ips -c device_owner | grep router_gateway | awk -F \u0027\"\u0027 -v subnet_id\u003d$IPV6_PUB_SUBNET_ID \u0027$4 \u003d\u003d subnet_id { print $1; }\u0027 | awk -F \u0027 | \u0027 \u0027{ print $2; }\u0027`"},{"line_number":1111,"context_line":"            die_if_not_set $LINENO IPV6_ROUTER_GW_PORT \"Failure retrieving IPV6_ROUTER_GW_PORT\""}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_ba91479c","line":1108,"updated":"2014-10-01 17:35:11.000000000","message":"Given this variable IPV6_ROUTER_GW_IP is used later, it\u0027s best practice to move its declaration to the beginning.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"e9233cd59f03bfaea8e00c4ddb5f91c8ad6d56f8","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"    if is_service_enabled q-l3; then"},{"line_number":1106,"context_line":"        # Configure and enable public bridge"},{"line_number":1107,"context_line":"        if [[ \"$IP_VERSION\" \u003d \"6\" ]]; then"},{"line_number":1108,"context_line":"            local IPV6_ROUTER_GW_IP\u003d`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F \u0027\"\u0027 -v subnet_id\u003d$IPV6_PUB_SUBNET_ID \u0027$4 \u003d\u003d subnet_id { print $8; }\u0027`"},{"line_number":1109,"context_line":"            die_if_not_set $LINENO IPV6_ROUTER_GW_IP \"Failure retrieving IPV6_ROUTER_GW_IP\""},{"line_number":1110,"context_line":"            local IPV6_ROUTER_GW_PORT\u003d`neutron port-list -c id -c fixed_ips -c device_owner | grep router_gateway | awk -F \u0027\"\u0027 -v subnet_id\u003d$IPV6_PUB_SUBNET_ID \u0027$4 \u003d\u003d subnet_id { print $1; }\u0027 | awk -F \u0027 | \u0027 \u0027{ print $2; }\u0027`"},{"line_number":1111,"context_line":"            die_if_not_set $LINENO IPV6_ROUTER_GW_PORT \"Failure retrieving IPV6_ROUTER_GW_PORT\""}],"source_content_type":"application/octet-stream","patch_set":37,"id":"baa201ad_9891d954","line":1108,"in_reply_to":"baa201ad_ba91479c","updated":"2014-10-02 13:34:23.000000000","message":"Since we\u0027re sticking with the global variable for now this is no longer the case, but I will apply this comment to IPV6_ROUTER_GW_PORT.","commit_id":"375725ce5abe77c9fb88fd8eaacf169533c91f76"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"b07d9c3d56630fefbc9f8e0ffb7d401ac54a4a42","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                    # Disable in-band as we are going to use local port"},{"line_number":567,"context_line":"                    # to communicate with VMs"},{"line_number":568,"context_line":"                    sudo ovs-vsctl set Bridge $PUBLIC_BRIDGE \\"},{"line_number":569,"context_line":"                        other_config:disable-in-band\u003dtrue"},{"line_number":570,"context_line":"                    ext_gw_interface\u003d$PUBLIC_BRIDGE"},{"line_number":571,"context_line":"                fi"},{"line_number":572,"context_line":"                CIDR_LEN\u003d${FLOATING_RANGE#*/}"}],"source_content_type":"application/octet-stream","patch_set":43,"id":"9aa7fdbe_adbf8acf","side":"PARENT","line":569,"updated":"2014-10-20 12:52:16.000000000","message":"This was removed from this patch, but originally added with the VETH change. Is it correct?","commit_id":"56d4919a1a19dcab892263e351ffbf3d74ead72c"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"0ca05048ae1c7eab5d56664d3396b84eaeb00db1","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                    # Disable in-band as we are going to use local port"},{"line_number":567,"context_line":"                    # to communicate with VMs"},{"line_number":568,"context_line":"                    sudo ovs-vsctl set Bridge $PUBLIC_BRIDGE \\"},{"line_number":569,"context_line":"                        other_config:disable-in-band\u003dtrue"},{"line_number":570,"context_line":"                    ext_gw_interface\u003d$PUBLIC_BRIDGE"},{"line_number":571,"context_line":"                fi"},{"line_number":572,"context_line":"                CIDR_LEN\u003d${FLOATING_RANGE#*/}"}],"source_content_type":"application/octet-stream","patch_set":43,"id":"9aa7fdbe_dc2b7ee9","side":"PARENT","line":569,"in_reply_to":"9aa7fdbe_adbf8acf","updated":"2014-10-21 09:58:41.000000000","message":"I believe this code has moved down to 1127 in John\u0027s patch, which is inside the _neutron_configure_router_v6 function called by John at line 598.","commit_id":"56d4919a1a19dcab892263e351ffbf3d74ead72c"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"92d2eba40583f80f7402181a38f8fa889c899994","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"        # Disable in-band as we are going to use local port"},{"line_number":1186,"context_line":"        # to communicate with VMs"},{"line_number":1187,"context_line":"        sudo ovs-vsctl set Bridge $PUBLIC_BRIDGE \\"},{"line_number":1188,"context_line":"            other_config:disable-in-band\u003dtrue"},{"line_number":1189,"context_line":"        echo $PUBLIC_BRIDGE"},{"line_number":1190,"context_line":"    fi"},{"line_number":1191,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":44,"id":"9aa7fdbe_e1e7b210","line":1188,"updated":"2014-10-21 16:39:34.000000000","message":"this will be executed twice in the case of both v4 and v6 are enabled. But It doesn\u0027t seem to be a problem.","commit_id":"b1a8ff336728abb4f5ef258cd7e5a3cdb4825c01"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"e36cc1f945f87d2e82f3a4001c86b727a23c4120","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        die_if_not_set $LINENO PROVIDER_NETWORK_TYPE \"You must specifiy the PROVIDER_NETWORK_TYPE\""},{"line_number":550,"context_line":"        NET_ID\u003d$(neutron net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type $PROVIDER_NETWORK_TYPE --provider:physical_network \"$PHYSICAL_NETWORK\" ${SEGMENTATION_ID:+--provider:segmentation_id $SEGMENTATION_ID} --shared | grep \u0027 id \u0027 | get_field 2)"},{"line_number":551,"context_line":"        SUBNET_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --name $PROVIDER_SUBNET_NAME $NET_ID $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":552,"context_line":"        SUBNET_V6_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 6 --ipv6-address-mode slaac --gateway $V6_NETWORK_GATEWAY --name $PROVIDER_SUBNET_NAME_V6 $NET_ID $IPV6_PRIVATE_FIXED_RANGE | grep \u0027id\u0027 | get_field 2)"},{"line_number":553,"context_line":"        sudo ip link set $OVS_PHYSICAL_BRIDGE up"},{"line_number":554,"context_line":"        sudo ip link set br-int up"},{"line_number":555,"context_line":"        sudo ip link set $PUBLIC_INTERFACE up"}],"source_content_type":"application/octet-stream","patch_set":48,"id":"7a8c0949_1cc1ac80","line":552,"updated":"2014-10-30 18:44:11.000000000","message":"Two thoughts:\n\n1) I don\u0027t think you should change this in this patchset, it is not germane.\n\n2) In another patchset, this should be changed to use \tIPV6_PUBLIC_RANGE since it is a provider network, which means the guests being attached to it normally are reachable from outside the openstack network","commit_id":"810aee66e3820e36460326fb9dc57463486262d7"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"c15540d2e8e44ce9cacd820fa2ec75d086144bec","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        die_if_not_set $LINENO PROVIDER_NETWORK_TYPE \"You must specifiy the PROVIDER_NETWORK_TYPE\""},{"line_number":550,"context_line":"        NET_ID\u003d$(neutron net-create $PHYSICAL_NETWORK --tenant_id $TENANT_ID --provider:network_type $PROVIDER_NETWORK_TYPE --provider:physical_network \"$PHYSICAL_NETWORK\" ${SEGMENTATION_ID:+--provider:segmentation_id $SEGMENTATION_ID} --shared | grep \u0027 id \u0027 | get_field 2)"},{"line_number":551,"context_line":"        SUBNET_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 4 ${ALLOCATION_POOL:+--allocation-pool $ALLOCATION_POOL} --name $PROVIDER_SUBNET_NAME $NET_ID $FIXED_RANGE | grep \u0027 id \u0027 | get_field 2)"},{"line_number":552,"context_line":"        SUBNET_V6_ID\u003d$(neutron subnet-create --tenant_id $TENANT_ID --ip_version 6 --ipv6-address-mode slaac --gateway $V6_NETWORK_GATEWAY --name $PROVIDER_SUBNET_NAME_V6 $NET_ID $IPV6_PRIVATE_FIXED_RANGE | grep \u0027id\u0027 | get_field 2)"},{"line_number":553,"context_line":"        sudo ip link set $OVS_PHYSICAL_BRIDGE up"},{"line_number":554,"context_line":"        sudo ip link set br-int up"},{"line_number":555,"context_line":"        sudo ip link set $PUBLIC_INTERFACE up"}],"source_content_type":"application/octet-stream","patch_set":48,"id":"7a8c0949_40813349","line":552,"in_reply_to":"7a8c0949_1cc1ac80","updated":"2014-11-06 14:34:08.000000000","message":"That\u0027s a fair point, I\u0027ll take it out for this patch.","commit_id":"810aee66e3820e36460326fb9dc57463486262d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd9c75dcb5ba7089041f8da0b84abd7e9948e9c9","unresolved":false,"context_lines":[{"line_number":87,"context_line":"IPV6_PRIVATE_SUBNET_NAME\u003d${IPV6_PRIVATE_SUBNET_NAME:-ipv6-private-subnet}"},{"line_number":88,"context_line":"FIXED_RANGE_V6\u003d${FIXED_RANGE_V6:-fd$IPV6_GLOBAL_ID::/64}"},{"line_number":89,"context_line":"IPV6_PRIVATE_NETWORK_GATEWAY\u003d${IPV6_PRIVATE_NETWORK_GATEWAY:-fd$IPV6_GLOBAL_ID::1}"},{"line_number":90,"context_line":"IPV6_PUBLIC_RANGE\u003d${IPV6_PUBLIC_RANGE:-fe80:bad:dad::/64}"},{"line_number":91,"context_line":"IPV6_PUBLIC_NETWORK_GATEWAY\u003d${IPV6_PUBLIC_NETWORK_GATEWAY:-fe80:bad:dad::2}"},{"line_number":92,"context_line":"# IPV6_ROUTER_GW_IP must be defined when IP_VERSION\u003d4+6 as it cannot be"},{"line_number":93,"context_line":"# obtained conventionally until the l3-agent has support for dual-stack"}],"source_content_type":"application/octet-stream","patch_set":51,"id":"5a890539_814ffc91","line":90,"updated":"2014-11-10 12:16:31.000000000","message":"please see comment below","commit_id":"81eda3cb34138b99335b8a6e3c02ba96909df5d6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd9c75dcb5ba7089041f8da0b84abd7e9948e9c9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"# IPV6_ROUTER_GW_IP must be defined when IP_VERSION\u003d4+6 as it cannot be"},{"line_number":93,"context_line":"# obtained conventionally until the l3-agent has support for dual-stack"},{"line_number":94,"context_line":"# TODO (john-davidge) Remove once l3-agent supports dual-stack"},{"line_number":95,"context_line":"IPV6_ROUTER_GW_IP\u003d${IPV6_ROUTER_GW_IP:-fe80:bad:dad::1}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"# Set up default directories"},{"line_number":98,"context_line":"NEUTRON_DIR\u003d$DEST/neutron"}],"source_content_type":"application/octet-stream","patch_set":51,"id":"5a890539_2181e88f","line":95,"updated":"2014-11-10 12:16:31.000000000","message":"i would prefer: dead:beef or cafe:cafe instead. we are all trying to be good dads!","commit_id":"81eda3cb34138b99335b8a6e3c02ba96909df5d6"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"70ce13877301ae987078e1172505187e1235d645","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"            # the public bridge, then add gateway address to the interface"},{"line_number":1186,"context_line":"            # TODO (john-davidge) Remove once l3-agent supports dual-stack"},{"line_number":1187,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1188,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${ipv6_router_gw_port:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1189,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1190,"context_line":"                fi"},{"line_number":1191,"context_line":"                # Configure the gateway port with the public IPv6 adress"}],"source_content_type":"application/octet-stream","patch_set":52,"id":"5a890539_5efb8178","line":1188,"updated":"2014-11-17 05:15:08.000000000","message":"Sorry to comment this so late but when DVR is enabled, the qg-xxx device is not in qrouter namespace anymore but in snat namespace. This check will break due to time out which leads to a failure of installation.  I just found this in my latest test.\n\nMaybe we can add a check and stop the installation when both DVR and IPv6 are enabled?","commit_id":"4d58e667595c224678d4b84a81ab8b4bcbb07e78"},{"author":{"_account_id":6635,"name":"John Davidge","email":"john.davidge@rackspace.com","username":"john-davidge"},"change_message_id":"644e3967e49896d3397afb664eca34e3ed5496e5","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"            # the public bridge, then add gateway address to the interface"},{"line_number":1186,"context_line":"            # TODO (john-davidge) Remove once l3-agent supports dual-stack"},{"line_number":1187,"context_line":"            if [[ \"$IP_VERSION\" \u003d\u003d \"4+6\" ]]; then"},{"line_number":1188,"context_line":"                if ! timeout $GATEWAY_TIMEOUT sh -c \"until sudo ip netns exec qrouter-$ROUTER_ID ip addr show qg-${ipv6_router_gw_port:0:11} | grep $ROUTER_GW_IP; do sleep 1; done\"; then"},{"line_number":1189,"context_line":"                    die $LINENO \"Timeout retrieving ROUTER_GW_IP\""},{"line_number":1190,"context_line":"                fi"},{"line_number":1191,"context_line":"                # Configure the gateway port with the public IPv6 adress"}],"source_content_type":"application/octet-stream","patch_set":52,"id":"5a890539_e8eb86d9","line":1188,"in_reply_to":"5a890539_5efb8178","updated":"2014-11-17 13:35:14.000000000","message":"Thanks for catching this! I propose to set the router namespace used here based on whether or not DVR has been enabled. See the following patch set.","commit_id":"4d58e667595c224678d4b84a81ab8b4bcbb07e78"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"deb12ba91158e8566a13a37784b43f49f5fbaa1c","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"            local router_ns\u003dqrouter"},{"line_number":1189,"context_line":"            if [[ \"$Q_DVR_MODE\" \u003d\u003d \"dvr_snat\" ]]; then"},{"line_number":1190,"context_line":"                router_ns\u003dsnat"},{"line_number":1191,"context_line":"            fi"},{"line_number":1192,"context_line":""},{"line_number":1193,"context_line":"            # Configure interface for public bridge"},{"line_number":1194,"context_line":"            sudo ip -6 addr add $ipv6_ext_gw_ip/$ipv6_cidr_len dev $ext_gw_interface"}],"source_content_type":"application/octet-stream","patch_set":53,"id":"5a890539_05a50f03","line":1191,"updated":"2014-11-17 18:56:34.000000000","message":"I was going to do this as part of fixing https://bugs.launchpad.net/neutron/+bug/1376325 but my fix was basically the same.\n\nJust note that you still won\u0027t have a usable devstack with just this change, it will fail somewhere down the line in the l3-agent trying to add routing rules.  Rajeev and I are working on changes for that, I think his review is already out.","commit_id":"21529a50e3b49ce378da88ce10ce903933fa3a02"}],"lib/nova":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"bb5a872c837b801ffc218eecc3fab02223b8141e","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        local compute_cell_conf\u003d$NOVA_CONF"},{"line_number":739,"context_line":"    fi"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    set -o xtrace"},{"line_number":742,"context_line":"    # ``screen_it`` checks ``is_service_enabled``, it is not needed here"},{"line_number":743,"context_line":"    screen_it n-cond \"cd $NOVA_DIR \u0026\u0026 $NOVA_BIN_DIR/nova-conductor --config-file $compute_cell_conf\""},{"line_number":744,"context_line":"    screen_it n-cell-region \"cd $NOVA_DIR \u0026\u0026 $NOVA_BIN_DIR/nova-cells --config-file $api_cell_conf\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAXH%2F%2FbZs%3D","line":741,"updated":"2014-04-21 21:22:04.000000000","message":"Remove","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"97b62d68eb627fa3fae405196a8fcdc310214001","unresolved":false,"context_lines":[{"line_number":738,"context_line":"        local compute_cell_conf\u003d$NOVA_CONF"},{"line_number":739,"context_line":"    fi"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    set -o xtrace"},{"line_number":742,"context_line":"    # ``screen_it`` checks ``is_service_enabled``, it is not needed here"},{"line_number":743,"context_line":"    screen_it n-cond \"cd $NOVA_DIR \u0026\u0026 $NOVA_BIN_DIR/nova-conductor --config-file $compute_cell_conf\""},{"line_number":744,"context_line":"    screen_it n-cell-region \"cd $NOVA_DIR \u0026\u0026 $NOVA_BIN_DIR/nova-cells --config-file $api_cell_conf\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAXH%2F%2FaZc%3D","line":741,"in_reply_to":"AAAAXH%2F%2FbZs%3D","updated":"2014-04-22 00:48:58.000000000","message":"Done","commit_id":"68bfce3ae642065cc58cbdc8ed08b3b5be50eef6"}]}
