)]}'
{"devstack/override-defaults":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"84abe85b6323e375bd3aa0f40f42a5839902bfe6","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"if is_service_enabled df-l3-agent ; then"},{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_00720b11","line":2,"updated":"2016-05-16 07:43:48.000000000","message":"please add df-l3-agent to devstackgaterc so it will run on tests enabled","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"if is_service_enabled df-l3-agent ; then"},{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_f4550950","line":2,"in_reply_to":"dab17558_00720b11","updated":"2016-05-16 09:00:13.000000000","message":"Done","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"84abe85b6323e375bd3aa0f40f42a5839902bfe6","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"if is_service_enabled df-l3-agent ; then"},{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"},{"line_number":6,"context_line":"    AGENT_L3_BINARY\u003d${AGENT_L3_BINARY:-\"/usr/bin/df-l3-agent\"}"},{"line_number":7,"context_line":"    enable_service q-l3"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_c31e4d0b","line":4,"updated":"2016-05-16 07:43:48.000000000","message":"I dont see how dvr_snat is related to our problem, we are not really working with Neutron DVR mode","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"61c11aa67a14ba6aebd69c63a162b27883be0bcf","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"if is_service_enabled df-l3-agent ; then"},{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"},{"line_number":6,"context_line":"    AGENT_L3_BINARY\u003d${AGENT_L3_BINARY:-\"/usr/bin/df-l3-agent\"}"},{"line_number":7,"context_line":"    enable_service q-l3"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_e911a753","line":4,"in_reply_to":"dab17558_940e3d8a","updated":"2016-05-16 11:07:47.000000000","message":"yes, but we are running this agent on the network node, maybe we are missing of what sets this to be a network node","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"if is_service_enabled df-l3-agent ; then"},{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"},{"line_number":6,"context_line":"    AGENT_L3_BINARY\u003d${AGENT_L3_BINARY:-\"/usr/bin/df-l3-agent\"}"},{"line_number":7,"context_line":"    enable_service q-l3"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_940e3d8a","line":4,"in_reply_to":"dab17558_c31e4d0b","updated":"2016-05-16 09:00:13.000000000","message":"If the agent is set to legacy, then the neutron code expects the routers to be on the network node, not the compute node. It does not pass the router information to the agent, which does not handle it. Unhandled routers have their namespaces deleted automatically.","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"84abe85b6323e375bd3aa0f40f42a5839902bfe6","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"},{"line_number":6,"context_line":"    AGENT_L3_BINARY\u003d${AGENT_L3_BINARY:-\"/usr/bin/df-l3-agent\"}"},{"line_number":7,"context_line":"    enable_service q-l3"},{"line_number":8,"context_line":"fi"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_a06a1feb","line":6,"updated":"2016-05-16 07:43:48.000000000","message":"This \"trick\" is a bit confusing, in the screens we are not going to see df-l3-agent but q-l3.\n\nBut i guess this is better then just to enable q-l3 as we need to change the binary anyway, so no better suggestion here","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"61c11aa67a14ba6aebd69c63a162b27883be0bcf","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"},{"line_number":6,"context_line":"    AGENT_L3_BINARY\u003d${AGENT_L3_BINARY:-\"/usr/bin/df-l3-agent\"}"},{"line_number":7,"context_line":"    enable_service q-l3"},{"line_number":8,"context_line":"fi"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_09434b43","line":6,"in_reply_to":"dab17558_14724d11","updated":"2016-05-16 11:07:47.000000000","message":"Agreed","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    # DVR"},{"line_number":4,"context_line":"    Q_DVR_MODE\u003d${Q_DVR_MODE:-dvr_snat}"},{"line_number":5,"context_line":"    Q_L3_ENABLED\u003d${Q_L3_ENABLED:-True}"},{"line_number":6,"context_line":"    AGENT_L3_BINARY\u003d${AGENT_L3_BINARY:-\"/usr/bin/df-l3-agent\"}"},{"line_number":7,"context_line":"    enable_service q-l3"},{"line_number":8,"context_line":"fi"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"dab17558_14724d11","line":6,"in_reply_to":"dab17558_a06a1feb","updated":"2016-05-16 09:00:13.000000000","message":"There are a few things done in devstack/neutron code requiring q-l3 to be enabled, e.g. creating the default router.\n\nI would rather use this \u0027trick\u0027 than duplicate that code.","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"}],"dragonflow/common/extensions.py":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"84abe85b6323e375bd3aa0f40f42a5839902bfe6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \u0027router\u0027,"},{"line_number":25,"context_line":"    \u0027l3_agent_scheduler\u0027,"},{"line_number":26,"context_line":"    \u0027subnet_allocation\u0027,"},{"line_number":27,"context_line":"    \u0027dvr\u0027"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_c3700d75","line":27,"updated":"2016-05-16 07:43:48.000000000","message":"maybe we also need to remove \"dvr\" here after we remove the rest","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"61c11aa67a14ba6aebd69c63a162b27883be0bcf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \u0027router\u0027,"},{"line_number":25,"context_line":"    \u0027l3_agent_scheduler\u0027,"},{"line_number":26,"context_line":"    \u0027subnet_allocation\u0027,"},{"line_number":27,"context_line":"    \u0027dvr\u0027"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_29e28f2f","line":27,"in_reply_to":"dab17558_94eabd72","updated":"2016-05-16 11:07:47.000000000","message":"\"dvr\" in the context of Neutron is not what we support, we perform the DVR functionality inside dragonflow.\n\nNeutron doesnt need to be aware that this is done or care.\nThis just introduce more code that is not really needed but i havent checked what this extension does","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \u0027router\u0027,"},{"line_number":25,"context_line":"    \u0027l3_agent_scheduler\u0027,"},{"line_number":26,"context_line":"    \u0027subnet_allocation\u0027,"},{"line_number":27,"context_line":"    \u0027dvr\u0027"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_94eabd72","line":27,"in_reply_to":"dab17558_c3700d75","updated":"2016-05-16 09:00:13.000000000","message":"I\u0027m not sure I understand. We do support dvr - routers are implemented on the compute node and not in a network node.","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"}],"dragonflow/neutron/agent/l3/df_router.py":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"84abe85b6323e375bd3aa0f40f42a5839902bfe6","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.agent.l3 import dvr_router_base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class DfDvrRouter(dvr_router_base.DvrRouterBase):"},{"line_number":21,"context_line":"    def add_floating_ip(self, fip, interface_name, device):"},{"line_number":22,"context_line":"        if is_distributed_router(self.router):"},{"line_number":23,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_83cc45bc","line":20,"updated":"2016-05-16 07:43:48.000000000","message":"I havent gone over the entire code, but changing this seems a bit fragile.\n\nFor example why didnt you use DvrEdgeRouter class and just\nchanged the floating ips methods?","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.agent.l3 import dvr_router_base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class DfDvrRouter(dvr_router_base.DvrRouterBase):"},{"line_number":21,"context_line":"    def add_floating_ip(self, fip, interface_name, device):"},{"line_number":22,"context_line":"        if is_distributed_router(self.router):"},{"line_number":23,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_f48a29be","line":20,"in_reply_to":"dab17558_83cc45bc","updated":"2016-05-16 09:00:13.000000000","message":"I could have, but I wasn\u0027t sure which one to use, and this seemed to be the best fit.\n\nShould I change it? If so, what parent class would you recommend?","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"61c11aa67a14ba6aebd69c63a162b27883be0bcf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.agent.l3 import dvr_router_base"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class DfDvrRouter(dvr_router_base.DvrRouterBase):"},{"line_number":21,"context_line":"    def add_floating_ip(self, fip, interface_name, device):"},{"line_number":22,"context_line":"        if is_distributed_router(self.router):"},{"line_number":23,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_a9b67ff6","line":20,"in_reply_to":"dab17558_f48a29be","updated":"2016-05-16 11:07:47.000000000","message":"I think that we should strongly look at not using Neutron DVR at all, Neutron can work without DVR enabled and SNAT/DNAT happens on the network node (as they should in Dragonflow)","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"84abe85b6323e375bd3aa0f40f42a5839902bfe6","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class DfDvrRouter(dvr_router_base.DvrRouterBase):"},{"line_number":21,"context_line":"    def add_floating_ip(self, fip, interface_name, device):"},{"line_number":22,"context_line":"        if is_distributed_router(self.router):"},{"line_number":23,"context_line":"            return"},{"line_number":24,"context_line":"        return super(DfDvrRouter, self).add_floating_ip("},{"line_number":25,"context_line":"            fip, interface_name, device)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_8343a512","line":23,"updated":"2016-05-16 07:43:48.000000000","message":"Why do we need to change for DVR in order to schedule the namespaces? this functionallity worked before DVR exited so to me it seems that there should be a simpler solution for this.\n\nI am afraid that changing inheritance to a class that wasnt suppose to be inherited like that expose us to changes in Neutron (if it hasnt already)","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"61c11aa67a14ba6aebd69c63a162b27883be0bcf","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class DfDvrRouter(dvr_router_base.DvrRouterBase):"},{"line_number":21,"context_line":"    def add_floating_ip(self, fip, interface_name, device):"},{"line_number":22,"context_line":"        if is_distributed_router(self.router):"},{"line_number":23,"context_line":"            return"},{"line_number":24,"context_line":"        return super(DfDvrRouter, self).add_floating_ip("},{"line_number":25,"context_line":"            fip, interface_name, device)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_e9524766","line":23,"in_reply_to":"dab17558_2fbc5805","updated":"2016-05-16 11:07:47.000000000","message":"Your point seems valid, starting the df-l3-agent is probably not at the correct stage (but this can also be solved by moving the call to start the agent in our plugin)\n\nSNAT/DNAT implemented on the network node (as done in Dragonflow) works before DVR, we dont really need Neutron DVR.","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class DfDvrRouter(dvr_router_base.DvrRouterBase):"},{"line_number":21,"context_line":"    def add_floating_ip(self, fip, interface_name, device):"},{"line_number":22,"context_line":"        if is_distributed_router(self.router):"},{"line_number":23,"context_line":"            return"},{"line_number":24,"context_line":"        return super(DfDvrRouter, self).add_floating_ip("},{"line_number":25,"context_line":"            fip, interface_name, device)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_2fbc5805","line":23,"in_reply_to":"dab17558_8343a512","updated":"2016-05-16 09:00:13.000000000","message":"I think the functionality was stable in the past. When setting up an environment with q-l3 (and not df-l3-agent), restarting q-l3 would remove the namespaces again. Making me suspect that there is an issue that was found due to timing changes (df-l3-agent would be started at a different time than q-l3. From the behaviour, it was started later and the namespaces were deleted during first sync (See other comments)).\n\nAbout the correct inheritance classes - I am not sure what you mean. This is a base class Neutron themselves inherit. Additionally, LegacyRouter is also Neutron\u0027s, and we are exposed to changes there as well.","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"db4acd6638239fbf452e896323c8261b5d37579e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        }"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if is_distributed_router(router):"},{"line_number":51,"context_line":"            kwargs[\u0027agent\u0027] \u003d self"},{"line_number":52,"context_line":"            kwargs[\u0027host\u0027] \u003d self.host"},{"line_number":53,"context_line":"            return DfDvrRouter(*args, **kwargs)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_142a4d90","line":51,"updated":"2016-05-16 08:53:55.000000000","message":"Are the FIP namespaces added now? we need to make sure the FIP namespaces are not created with this patch","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b49c8dee0719b804656a2bd9be417e8092a686aa","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        }"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if is_distributed_router(router):"},{"line_number":51,"context_line":"            kwargs[\u0027agent\u0027] \u003d self"},{"line_number":52,"context_line":"            kwargs[\u0027host\u0027] \u003d self.host"},{"line_number":53,"context_line":"            return DfDvrRouter(*args, **kwargs)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_0f67d4b7","line":51,"in_reply_to":"dab17558_142a4d90","updated":"2016-05-16 09:00:13.000000000","message":"In my test environment I have added a fip, but see only a single namespace (qrouter-XXX, and I have only one router).","commit_id":"db936017f43f2be14620833c5d4bd23cacfa023b"}]}
