)]}'
{"neutron/agent/l3/ha.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6595eaaa395ec31cc009ccafe9a47e393b406807","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self._configure_ipv6_ra_on_ext_gw_port_if_necessary(ri, state)"},{"line_number":126,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":127,"context_line":"            self._update_metadata_proxy(ri, router_id)"},{"line_number":128,"context_line":"        self._update_radvd_daemon(ri, state)"},{"line_number":129,"context_line":"        self.state_change_notifier.queue_event((router_id, state))"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_9d5fc640","line":127,"updated":"2016-08-09 14:13:14.000000000","message":"Just a thought - it almost doesn\u0027t seem like this code needs to live here any more, but that after_router_added() over in the metadata driver code should just remove it\u0027s HA check and always spawn the proxy.  Thoughts?","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"abacb23c725afce1184f66ab848c64217c6b22d6","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self._configure_ipv6_ra_on_ext_gw_port_if_necessary(ri, state)"},{"line_number":126,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":127,"context_line":"            self._update_metadata_proxy(ri, router_id)"},{"line_number":128,"context_line":"        self._update_radvd_daemon(ri, state)"},{"line_number":129,"context_line":"        self.state_change_notifier.queue_event((router_id, state))"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_24ebbd79","line":127,"in_reply_to":"9ad45d7e_3feaa9ac","updated":"2016-08-11 08:59:56.000000000","message":"Not sure I understand exactly what you meant. The IP monitor checks the ha device\u0027s IP and if there are changes it will notify it, sure - but what this patch does is, it makes the function triggered by this change (self._update_metadata_proxy) ignore whether the IP exists (if the router is master or backup) and always turn it on. Since the agent turns it on anyway when it starts, this flow doesn\u0027t make much sense (why do we need to turn on something that\u0027s already supposed to be on?)","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":17821,"name":"Zhixin Li","email":"lizhixin@awcloud.com","username":"lizhixin"},"change_message_id":"ab724e7fc775d8ec822c4dc46fd6a8c519f9e701","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self._configure_ipv6_ra_on_ext_gw_port_if_necessary(ri, state)"},{"line_number":126,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":127,"context_line":"            self._update_metadata_proxy(ri, router_id)"},{"line_number":128,"context_line":"        self._update_radvd_daemon(ri, state)"},{"line_number":129,"context_line":"        self.state_change_notifier.queue_event((router_id, state))"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_3810fa58","line":127,"in_reply_to":"9ad45d7e_992775c9","updated":"2016-08-11 09:54:49.000000000","message":"I will remove these code later. Thx.","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"19e6e0fea32b7eae156eced379994efbcda065fa","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self._configure_ipv6_ra_on_ext_gw_port_if_necessary(ri, state)"},{"line_number":126,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":127,"context_line":"            self._update_metadata_proxy(ri, router_id)"},{"line_number":128,"context_line":"        self._update_radvd_daemon(ri, state)"},{"line_number":129,"context_line":"        self.state_change_notifier.queue_event((router_id, state))"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_3feaa9ac","line":127,"in_reply_to":"9ad45d7e_992775c9","updated":"2016-08-11 07:47:22.000000000","message":"This metadata proxy is monitored by IP monitor, so when ip changes in ha device will notify the metadata proxy update.\nI\u0027m not sure it properly that remove HA check and spawn metadata proxy in all L3 nodes if we enable_metadata_proxy.\n\nCode is import in this patch.[1]\n\n[1]https://github.com/openstack/neutron/commit/9bae3b1832798a274bef4a77e5acda1abaa51f2a","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":17821,"name":"Zhixin Li","email":"lizhixin@awcloud.com","username":"lizhixin"},"change_message_id":"ab724e7fc775d8ec822c4dc46fd6a8c519f9e701","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self._configure_ipv6_ra_on_ext_gw_port_if_necessary(ri, state)"},{"line_number":126,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":127,"context_line":"            self._update_metadata_proxy(ri, router_id)"},{"line_number":128,"context_line":"        self._update_radvd_daemon(ri, state)"},{"line_number":129,"context_line":"        self.state_change_notifier.queue_event((router_id, state))"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_917909cb","line":127,"in_reply_to":"9ad45d7e_9d5fc640","updated":"2016-08-11 09:54:49.000000000","message":"Excuse me for my late reply and I am so honor to get your review. Thanks for your thought and advice. I will add a test in next patch.","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"94e4bfecea2456f3ded7ed0be8ba4d0dedd97825","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        self._configure_ipv6_ra_on_ext_gw_port_if_necessary(ri, state)"},{"line_number":126,"context_line":"        if self.conf.enable_metadata_proxy:"},{"line_number":127,"context_line":"            self._update_metadata_proxy(ri, router_id)"},{"line_number":128,"context_line":"        self._update_radvd_daemon(ri, state)"},{"line_number":129,"context_line":"        self.state_change_notifier.queue_event((router_id, state))"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_992775c9","line":127,"in_reply_to":"9ad45d7e_9d5fc640","updated":"2016-08-11 06:45:45.000000000","message":"I\u0027m actually not sure there should be any special treatment on HA routers - the constructor for L3NATAgent always creates the namespace  regardless of the state. If an HA router exists in an agent, the L3NATAgent is what spawns it in the first place (and this function might un-spawn it), so I think this can be removed altogether.\n\nThoughts?","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6595eaaa395ec31cc009ccafe9a47e393b406807","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    namespace \u003d ri.ns_name"},{"line_number":145,"context_line":"                ri.driver.configure_ipv6_ra(namespace, interface_name)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _update_metadata_proxy(self, ri, router_id):"},{"line_number":148,"context_line":"        LOG.debug(\u0027Spawning metadata proxy for router %s\u0027, router_id)"},{"line_number":149,"context_line":"        self.metadata_driver.spawn_monitored_metadata_proxy("},{"line_number":150,"context_line":"            self.process_monitor, ri.ns_name, self.conf.metadata_port,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_7dfe5239","line":147,"updated":"2016-08-09 14:13:14.000000000","message":"s/update/spawn","commit_id":"bc3b327748bf4480766c45d213104e56c40f88f5"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"adeff2484cc313ae3b7c8c50290986c25c35a242","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            ri._enable_ra_on_gw(ri.ex_gw_port, namespace, interface_name)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _update_metadata_proxy(self, ri, router_id, state):"},{"line_number":147,"context_line":"        if isinstance(ri, DvrEdgeHaRouter) or state \u003d\u003d \u0027master\u0027:"},{"line_number":148,"context_line":"            LOG.debug(\u0027Spawning metadata proxy for router %s\u0027, router_id)"},{"line_number":149,"context_line":"            self.metadata_driver.spawn_monitored_metadata_proxy("},{"line_number":150,"context_line":"                self.process_monitor, ri.ns_name, self.conf.metadata_port,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_d89f8301","line":147,"updated":"2016-09-23 12:17:31.000000000","message":"Please add a comment stating why this is correct. Something like:\n\nSince the metadata proxy is spawned in the qrouter namespace and not in the snat namespace, even standby DVR-HA routers may need to serve metadata requests to local ports.","commit_id":"6b7a7f2a1e76f025151d5c837b73522067c464dd"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"02359deecc951c511fd24dd9ed6374b68edc4ac0","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # not in the snat namespace, even standby DVR-HA routers may need"},{"line_number":149,"context_line":"        # to serve metadata requests to local ports."},{"line_number":150,"context_line":"        if isinstance(ri, DvrEdgeHaRouter) or state \u003d\u003d \u0027master\u0027:"},{"line_number":151,"context_line":"            LOG.debug(\u0027Spawning metadata proxy for router %s\u0027, router_id)"},{"line_number":152,"context_line":"            self.metadata_driver.spawn_monitored_metadata_proxy("},{"line_number":153,"context_line":"                self.process_monitor, ri.ns_name, self.conf.metadata_port,"},{"line_number":154,"context_line":"                self.conf, router_id\u003dri.router_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a8bc5a2_55a07543","line":151,"range":{"start_line":151,"start_character":12,"end_line":151,"end_character":73},"updated":"2016-09-24 14:57:27.000000000","message":"Check ri \u0027distributed\u0027 attribute here, if we enable distributed in server side, then namespace is snat-*, otherwise qrouter-*. Maybe this can implement Assaf\u0027s comments in PS6.\nPlease refer L140.","commit_id":"f1a1ab01c9df2eea3cc927e62869bfbf6de1329f"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"1cdc8c104e488a1ecf6813d4d3c86e6d4d759946","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # not in the snat namespace, even standby DVR-HA routers may need"},{"line_number":149,"context_line":"        # to serve metadata requests to local ports."},{"line_number":150,"context_line":"        if isinstance(ri, DvrEdgeHaRouter) or state \u003d\u003d \u0027master\u0027:"},{"line_number":151,"context_line":"            LOG.debug(\u0027Spawning metadata proxy for router %s\u0027, router_id)"},{"line_number":152,"context_line":"            self.metadata_driver.spawn_monitored_metadata_proxy("},{"line_number":153,"context_line":"                self.process_monitor, ri.ns_name, self.conf.metadata_port,"},{"line_number":154,"context_line":"                self.conf, router_id\u003dri.router_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a8bc5a2_2e4993b7","line":151,"range":{"start_line":151,"start_character":12,"end_line":151,"end_character":73},"in_reply_to":"5a8bc5a2_55a07543","updated":"2016-09-26 20:41:52.000000000","message":"I like checking the distributed attribute better than using isinstance. So, +1 to that part.","commit_id":"f1a1ab01c9df2eea3cc927e62869bfbf6de1329f"}]}
