)]}'
{"neutron/db/l3_dvrscheduler_db.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0d1df5e79be6d841aa26d90587bc4d4907819109","unresolved":false,"context_lines":[{"line_number":56,"context_line":"     - East/West (E/W) traffic between VMs: this is handled in a"},{"line_number":57,"context_line":"       distributed manner across Compute Nodes without a centralized element."},{"line_number":58,"context_line":"       This includes E/W traffic between VMs on the same Compute Node."},{"line_number":59,"context_line":"     - North/South traffic for Floating IPs (FIP N/S): this be supported on the"},{"line_number":60,"context_line":"       distributed routers on Compute Nodes without any centralized element."},{"line_number":61,"context_line":"     - North/South traffic for SNAT (SNAT N/S): this is supported via a"},{"line_number":62,"context_line":"       centralized element that handles all SNAT traffic."}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_0cab9075","line":59,"updated":"2014-08-21 21:17:55.000000000","message":"error!","commit_id":"40c1219237d7c6164f98e09b58bbc15498a57dc6"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0d1df5e79be6d841aa26d90587bc4d4907819109","unresolved":false,"context_lines":[{"line_number":59,"context_line":"     - North/South traffic for Floating IPs (FIP N/S): this be supported on the"},{"line_number":60,"context_line":"       distributed routers on Compute Nodes without any centralized element."},{"line_number":61,"context_line":"     - North/South traffic for SNAT (SNAT N/S): this is supported via a"},{"line_number":62,"context_line":"       centralized element that handles all SNAT traffic."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    To support these use cases,  DVR routers rely on an L3 agent that run on a"},{"line_number":65,"context_line":"    central node (also known as Network Node or Service Node),  as well as, L3"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_8caec07f","line":62,"updated":"2014-08-21 21:17:55.000000000","message":"s/all/the","commit_id":"40c1219237d7c6164f98e09b58bbc15498a57dc6"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0d1df5e79be6d841aa26d90587bc4d4907819109","unresolved":false,"context_lines":[{"line_number":61,"context_line":"     - North/South traffic for SNAT (SNAT N/S): this is supported via a"},{"line_number":62,"context_line":"       centralized element that handles all SNAT traffic."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    To support these use cases,  DVR routers rely on an L3 agent that run on a"},{"line_number":65,"context_line":"    central node (also known as Network Node or Service Node),  as well as, L3"},{"line_number":66,"context_line":"    agents that run individually on each Compute Node of an OpenStack cloud."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_0cc2b033","line":64,"updated":"2014-08-21 21:17:55.000000000","message":"s/run/runs","commit_id":"40c1219237d7c6164f98e09b58bbc15498a57dc6"},{"author":{"_account_id":9361,"name":"Vivekanandan Narasimhan","email":"n.vivekanandan@ericsson.com","username":"viveknarasimhan"},"change_message_id":"a0db4d6bd110777cb89c212bfb837ab3ec000f50","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    scheduling will determine whether the router needs to be associated to an"},{"line_number":87,"context_line":"    L3 agent, just like a regular centralized router, with the difference that,"},{"line_number":88,"context_line":"    in the distributed case,  the bindings required are established based on"},{"line_number":89,"context_line":"    the state of the router and the Compute Nodes."},{"line_number":90,"context_line":"    \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def dvr_update_router_addvm(self, context, port):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_2a9f4204","line":89,"updated":"2014-08-22 06:18:43.000000000","message":"state of the router, the Compute Nodes and the Service Nodes.","commit_id":"fb223cc1ebd3dc4d6f968346a2baa671acb6ffa2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"43fe3f49efd9951c41915f401d868194ade0b5eb","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    scheduling will determine whether the router needs to be associated to an"},{"line_number":87,"context_line":"    L3 agent, just like a regular centralized router, with the difference that,"},{"line_number":88,"context_line":"    in the distributed case,  the bindings required are established based on"},{"line_number":89,"context_line":"    the state of the router and the Compute Nodes."},{"line_number":90,"context_line":"    \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def dvr_update_router_addvm(self, context, port):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_754829cc","line":89,"in_reply_to":"1abeadc6_2a9f4204","updated":"2014-08-22 15:55:35.000000000","message":"fair point, thanks!","commit_id":"fb223cc1ebd3dc4d6f968346a2baa671acb6ffa2"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"bda6a6aaf84200918ce5392eb2ead59b6c3aab52","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    scheduling will determine whether the router needs to be associated to an"},{"line_number":87,"context_line":"    L3 agent, just like a regular centralized router, with the difference that,"},{"line_number":88,"context_line":"    in the distributed case,  the bindings required are established based on"},{"line_number":89,"context_line":"    the state of the router and the Compute Nodes."},{"line_number":90,"context_line":"    \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def dvr_update_router_addvm(self, context, port):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7d87f012","line":89,"in_reply_to":"1abeadc6_754829cc","updated":"2014-08-25 16:44:01.000000000","message":"-1 to changing the text here.  What you have written here is sufficient and correct.  Don\u0027t mention \"Service Nodes\" here because 1) the term is more ambiguous though I assume it is meant to refer to the Network Nodes (NNs) and 2) the state of the NNs is considered in both cases so it is not a differentiator.","commit_id":"fb223cc1ebd3dc4d6f968346a2baa671acb6ffa2"}],"neutron/scheduler/l3_agent_scheduler.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"236b08731c3a31554da9430ca7a0ecce9ec16ab1","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            if sync_router.get(\u0027distributed\u0027, False):"},{"line_number":165,"context_line":"                new_l3agentset \u003d set(new_l3agents)"},{"line_number":166,"context_line":"                candidates \u003d list(new_l3agentset - old_l3agentset)"},{"line_number":167,"context_line":"                if not candidates:"},{"line_number":168,"context_line":"                    LOG.warn(_(\u0027No L3 agents can host the router %s\u0027),"},{"line_number":169,"context_line":"                             sync_router[\u0027id\u0027])"},{"line_number":170,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_ec6bb41b","line":167,"updated":"2014-08-21 21:19:42.000000000","message":"doh! brainfart!","commit_id":"40c1219237d7c6164f98e09b58bbc15498a57dc6"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"bda6a6aaf84200918ce5392eb2ead59b6c3aab52","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            if not candidates:"},{"line_number":170,"context_line":"                LOG.warn(_(\u0027No L3 agents can host the router %s\u0027),"},{"line_number":171,"context_line":"                         sync_router[\u0027id\u0027])"},{"line_number":172,"context_line":"                return"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            return candidates"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7d3610b6","side":"PARENT","line":172,"updated":"2014-08-25 16:44:01.000000000","message":"Removing this return adds a tiny chance for a regression if a caller checks for \"None\" explicitly.\n\nUpdate:  In this context, there is only one place where this is called (L202) so this is under control.  Downgrading this comment to \"micronit.\"","commit_id":"921969d374b102b2fad9bae0ae9a522af35108d2"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"bda6a6aaf84200918ce5392eb2ead59b6c3aab52","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                candidates \u003d new_l3agents"},{"line_number":169,"context_line":"                if not candidates:"},{"line_number":170,"context_line":"                    LOG.warn(_(\u0027No L3 agents can host the router %s\u0027),"},{"line_number":171,"context_line":"                             sync_router[\u0027id\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            return candidates"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_1d3b5c39","line":171,"updated":"2014-08-25 16:44:01.000000000","message":"Do you think this should be unit tested?  It is a log message and does not really change the operation of the code significantly.  Given that, I think I\u0027ll downgrade this comment to a \"nit\" because I don\u0027t feel like holding this patch up for this.","commit_id":"fb223cc1ebd3dc4d6f968346a2baa671acb6ffa2"}]}
