)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"55aeed5a46f230cc8735fb6fc71ba23724deb5bf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the metadata service can be requested on 169.254.169.254:80"},{"line_number":10,"context_line":"from all interfaces including external interfaces. This change updates"},{"line_number":11,"context_line":"PREROUTING rules to allow requeste on 169.254.169.254:80 only from"},{"line_number":12,"context_line":"internal interfaces."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I44a9e03992f9e2a7bd4d798ae69d8aa7d75d3078"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3a961159_bc98d41c","line":11,"updated":"2014-12-13 16:35:31.000000000","message":"s/requeste/request","commit_id":"edb5993bcae48bdebb95f28a2470ff1a53f93a2d"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"419614e7d5f041114319c7cf60e71e282f905819","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the metadata service can be requested on 169.254.169.254:80"},{"line_number":10,"context_line":"from all interfaces including external interfaces. This change updates"},{"line_number":11,"context_line":"PREROUTING rules to allow requeste on 169.254.169.254:80 only from"},{"line_number":12,"context_line":"internal interfaces."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I44a9e03992f9e2a7bd4d798ae69d8aa7d75d3078"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3a961159_92993f7b","line":11,"in_reply_to":"3a961159_bc98d41c","updated":"2014-12-13 21:47:37.000000000","message":"Done","commit_id":"edb5993bcae48bdebb95f28a2470ff1a53f93a2d"}],"neutron/agent/l3_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ecde222bc682a3e336c23cf50ddaa2802ee02442","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"        rules \u003d []"},{"line_number":1436,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":1437,"context_line":"            rules.append((\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1438,"context_line":"                          \u0027-p tcp -m tcp --dport 80 -i %(interface_name)s \u0027"},{"line_number":1439,"context_line":"                          \u0027-j REDIRECT --to-port %(port)s\u0027 %"},{"line_number":1440,"context_line":"                          {\u0027interface_name\u0027: INTERNAL_DEV_PREFIX + \u0027+\u0027,"},{"line_number":1441,"context_line":"                           \u0027port\u0027: self.conf.metadata_port}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_2c02c672","line":1438,"updated":"2014-11-26 20:40:37.000000000","message":"Can you put the \u0027-i $interface\u0027 in front of the \u0027-p tcp...\u0027 since that\u0027s the order iptables-save will dump them?  It can sometimes cause the iptables_manager code to not match on removal.","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"d1e24497dee10b101ba108cc4212941e7d9aed0d","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"        rules \u003d []"},{"line_number":1436,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":1437,"context_line":"            rules.append((\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1438,"context_line":"                          \u0027-p tcp -m tcp --dport 80 -i %(interface_name)s \u0027"},{"line_number":1439,"context_line":"                          \u0027-j REDIRECT --to-port %(port)s\u0027 %"},{"line_number":1440,"context_line":"                          {\u0027interface_name\u0027: INTERNAL_DEV_PREFIX + \u0027+\u0027,"},{"line_number":1441,"context_line":"                           \u0027port\u0027: self.conf.metadata_port}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_6fe5a0db","line":1438,"in_reply_to":"5a890539_2c02c672","updated":"2014-11-26 21:19:39.000000000","message":"will do","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"098e18eb73a2ae93a9b439f7619c7dcefb44fdbf","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"        rules \u003d []"},{"line_number":1436,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":1437,"context_line":"            rules.append((\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1438,"context_line":"                          \u0027-p tcp -m tcp --dport 80 -i %(interface_name)s \u0027"},{"line_number":1439,"context_line":"                          \u0027-j REDIRECT --to-port %(port)s\u0027 %"},{"line_number":1440,"context_line":"                          {\u0027interface_name\u0027: INTERNAL_DEV_PREFIX + \u0027+\u0027,"},{"line_number":1441,"context_line":"                           \u0027port\u0027: self.conf.metadata_port}))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_a09a206c","line":1438,"in_reply_to":"5a890539_6fe5a0db","updated":"2014-11-27 16:35:55.000000000","message":"Done","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"87371e2ca34d52abb5e135d272b66bc938ff155d","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"            rules.append((\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1438,"context_line":"                          \u0027-i %(interface_name)s -p tcp -m tcp --dport 80 \u0027"},{"line_number":1439,"context_line":"                          \u0027-j REDIRECT --to-port %(port)s\u0027 %"},{"line_number":1440,"context_line":"                          {\u0027interface_name\u0027: INTERNAL_DEV_PREFIX + \u0027+\u0027,"},{"line_number":1441,"context_line":"                           \u0027port\u0027: self.conf.metadata_port}))"},{"line_number":1442,"context_line":"        return rules"},{"line_number":1443,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_3dabb61f","line":1440,"updated":"2014-11-27 21:33:37.000000000","message":"This is cool. An iptables way to wildcard on interface names I assume?","commit_id":"5b4bb1f0c24ddf19ca88c6c1f0e9b001e7dd2367"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"b036512a17aae88ac3bcff1e3b235c9fa8974888","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"            rules.append((\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1438,"context_line":"                          \u0027-i %(interface_name)s -p tcp -m tcp --dport 80 \u0027"},{"line_number":1439,"context_line":"                          \u0027-j REDIRECT --to-port %(port)s\u0027 %"},{"line_number":1440,"context_line":"                          {\u0027interface_name\u0027: INTERNAL_DEV_PREFIX + \u0027+\u0027,"},{"line_number":1441,"context_line":"                           \u0027port\u0027: self.conf.metadata_port}))"},{"line_number":1442,"context_line":"        return rules"},{"line_number":1443,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_70180576","line":1440,"in_reply_to":"5a890539_3dabb61f","updated":"2014-11-27 21:43:56.000000000","message":"exactly","commit_id":"5b4bb1f0c24ddf19ca88c6c1f0e9b001e7dd2367"}],"neutron/tests/unit/test_l3_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ecde222bc682a3e336c23cf50ddaa2802ee02442","unresolved":false,"context_lines":[{"line_number":1829,"context_line":"        self.conf.set_override(\u0027enable_metadata_proxy\u0027, True)"},{"line_number":1830,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1831,"context_line":"        rules \u003d (\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1832,"context_line":"                 \u0027-p tcp -m tcp --dport 80 -i qr-+ -j REDIRECT --to-port 8775\u0027)"},{"line_number":1833,"context_line":"        self.assertEqual([rules], agent.metadata_nat_rules())"},{"line_number":1834,"context_line":""},{"line_number":1835,"context_line":"    def test_router_id_specified_in_conf(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_acd876f1","line":1832,"updated":"2014-11-26 20:40:37.000000000","message":"This doesn\u0027t look right, this should be a specific qr- device.  Although it doesn\u0027t look like one exists in this context.","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9e9d7a94c79a90aa646d61c5235d849a9f21f260","unresolved":false,"context_lines":[{"line_number":1829,"context_line":"        self.conf.set_override(\u0027enable_metadata_proxy\u0027, True)"},{"line_number":1830,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1831,"context_line":"        rules \u003d (\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1832,"context_line":"                 \u0027-p tcp -m tcp --dport 80 -i qr-+ -j REDIRECT --to-port 8775\u0027)"},{"line_number":1833,"context_line":"        self.assertEqual([rules], agent.metadata_nat_rules())"},{"line_number":1834,"context_line":""},{"line_number":1835,"context_line":"    def test_router_id_specified_in_conf(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_ef7ef0ae","line":1832,"in_reply_to":"5a890539_2fdb9822","updated":"2014-11-26 21:34:36.000000000","message":"Maybe my brain is fried since it\u0027s virtual Friday, but I was figuring the l3_agent in this test would get initialized with some sort of device list, one of which would be a real-looking qr- device.  If you\u0027re able to add any string here and it doesn\u0027t fail the assert below then what is it testing?  Shouldn\u0027t agent.metadata_nat_rules() be returning something other than \u0027qr-+\u0027 ?","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"d1e24497dee10b101ba108cc4212941e7d9aed0d","unresolved":false,"context_lines":[{"line_number":1829,"context_line":"        self.conf.set_override(\u0027enable_metadata_proxy\u0027, True)"},{"line_number":1830,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1831,"context_line":"        rules \u003d (\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1832,"context_line":"                 \u0027-p tcp -m tcp --dport 80 -i qr-+ -j REDIRECT --to-port 8775\u0027)"},{"line_number":1833,"context_line":"        self.assertEqual([rules], agent.metadata_nat_rules())"},{"line_number":1834,"context_line":""},{"line_number":1835,"context_line":"    def test_router_id_specified_in_conf(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_2fdb9822","line":1832,"in_reply_to":"5a890539_acd876f1","updated":"2014-11-26 21:19:39.000000000","message":"Why? \n\nThe code and the test are coherent.\n\n\"qr-+\" matchs all interfaces beginning with \"qr-\" which allows to define a generic rule for all tenant networks.","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fc37ca9980e5d99e834da676cf39a1703470655d","unresolved":false,"context_lines":[{"line_number":1829,"context_line":"        self.conf.set_override(\u0027enable_metadata_proxy\u0027, True)"},{"line_number":1830,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1831,"context_line":"        rules \u003d (\u0027PREROUTING\u0027, \u0027-s 0.0.0.0/0 -d 169.254.169.254/32 \u0027"},{"line_number":1832,"context_line":"                 \u0027-p tcp -m tcp --dport 80 -i qr-+ -j REDIRECT --to-port 8775\u0027)"},{"line_number":1833,"context_line":"        self.assertEqual([rules], agent.metadata_nat_rules())"},{"line_number":1834,"context_line":""},{"line_number":1835,"context_line":"    def test_router_id_specified_in_conf(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_6aa4aeb9","line":1832,"in_reply_to":"5a890539_ef7ef0ae","updated":"2014-11-26 22:09:07.000000000","message":"Ok, my brain was fried from looking at too many changes in the metadata redirect code path, the l3-agent is adding a \u0027qr-+\u0027 rule here so I think you\u0027ll just need to change the ordering here if you changed it in the l3-agent.  Thanks Cedric.","commit_id":"aa6e05b2b8d75da1ffbd50ad98d2212c94306ade"}]}
